Manejo de valores faltantes

¿Datos faltantes?

1 ¿Estadísticas y eliminación de valores faltantes?

1.1 Estadísticas de información faltante

Para datos faltantes, puede usar isna o isnull (hay no hay diferencia entre las dos funciones)) para ver si falta cada celda. La proporción de valores faltantes en cada columna se puede calcular combinando con la suma.

Si desea ver las filas faltantes o no faltantes de una determinada columna, puede usar isna o notna en la Serie para indexación booleana. Por ejemplo, verifique la altura de las filas que faltan:

Si desea buscar varias columnas al mismo tiempo y recuperar filas a las que les faltan todas o a las que les falta al menos una fila o ninguna, puede usar isna, notna y cualquiera, todas combinaciones. Por ejemplo, busque las tres columnas de altura, peso y estado de transferencia respectivamente

1.2 Eliminación de información faltante

En el procesamiento de datos, a menudo es necesario determinar el tamaño de los valores faltantes. , proporción u otras características para eliminar muestras de filas o características de columnas. La función dropna se proporciona en pandas para operar.

Los parámetros principales de dropna son la dirección del eje (el valor predeterminado es 0, es decir, eliminar filas), el método de eliminación cómo y el umbral para el número de valores eliminados no perdidos ( umbral) (las dimensiones correspondientes que no tienen valores no faltantes que alcancen este número se eliminarán), subconjunto de eliminación alternativa del subconjunto, donde principalmente hay dos parámetros para elegir, cualquiera y todos.

2 ¿Relleno e interpolación de valores faltantes?

2.1 ¿Usar fillna para completar?

Hay tres parámetros de uso común en fillna: valor, método, límite. Entre ellos, el valor es el valor de llenado, que puede ser un escalar o un mapeo de diccionario de índice a elemento; el método es el método de llenado, que se puede llenar con el elemento anterior y bfill con el siguiente elemento. el valor faltante continuo. Número máximo de rellenos.

2.2 ¿Función de interpolación?

En la descripción de la documentación de la función de interpolación, se enumeran muchos métodos de interpolación, incluida una gran cantidad de métodos en Scipy. Dado que muchos métodos de interpolación implican conocimientos matemáticos relativamente complejos, aquí solo se analizan tres casos simples y comunes: la interpolación lineal, la interpolación del vecino más cercano y la interpolación de índice.

Para la interpolación, además del método de interpolación (el valor predeterminado es la interpolación lineal), hay dos parámetros comunes similares a fillna, uno es limit_direction para controlar la dirección y el otro es controlar el máximo. valor perdido continuo El límite del número de interpolaciones. Entre ellos, la dirección de interpolación limitante es hacia adelante de forma predeterminada, que es similar a fill en el método de fillna. Si desea interpolación limitante hacia atrás o interpolación limitante bidireccional, puede especificar hacia atrás o ambas

En cuanto a polinomio y spline. Notas sobre la interpolación

Si elige el método de interpolación polinomial en interpolación, llama internamente a scipy.interpolate.interp1d(*,*,kind=order), y esta función llama internamente al método make_interp_spline. en realidad es una interpolación spline en lugar de una interpolación de ajuste polinomial similar a polyfit en numpy; cuando se usa el método spline, pandas llama a scipy.interpolate.UnivariateSpline en lugar de la interpolación spline ordinaria. La descripción del documento en esta parte es relativamente confusa y el diseño de este parámetro tampoco es razonable. Cuando se utilizan estos dos tipos de métodos de interpolación, los usuarios deben seleccionar cuidadosamente el método de interpolación apropiado según sus necesidades reales.

3 Tipo anulable

3.1 Tokens faltantes y sus defectos

Los valores faltantes en Python están representados por Ninguno. Además de ser igual a sí mismo, este. El elemento es igual a sí mismo. Cualquier otro elemento no es igual:

En numpy, np.nan se usa para representar los valores faltantes. Además de no ser igual a ningún otro elemento, el resultado de la comparación de este elemento. consigo mismo también devuelve False

Vale la pena señalar que aunque la posición correspondiente de np.nan devolverá False al comparar elementos de una secuencia o tabla faltante, cuando se usa la función igual para probar la identidad de dos tablas o dos secuencias, omitirá automáticamente las posiciones donde ambas tablas tienen valores faltantes y devolverá Verdadero directamente:

En objetos de series de tiempo, pandas usa pd.NaT para referirse a valores faltantes, y su función es la misma ya que np.nan es consistente

Entonces, ¿por qué se introduce pd.NaT para representar ausencias en objetos de tiempo? ¿Cuál es el problema de seguir almacenándolo como np.nan? Puede ver objetos de tipo objeto en pandas, y el objeto es un tipo de objeto mixto. Si aparecen varios tipos de elementos y se almacenan en la Serie al mismo tiempo, su tipo se convertirá en objeto

NaT La raíz de. el problema es que np.nan en sí es un tipo de punto flotante. Si los tipos de punto flotante y de tiempo se mezclan y almacenan, si un nuevo tipo incorporado faltante no está diseñado para manejarlo, se convertirá en un tipo de objeto ambiguo. no quieres verlo.

Al mismo tiempo, debido a la naturaleza de punto flotante de np.nan, si falta un número entero, su tipo se convertirá a float64 y si falta un booleano; secuencia de tipos, entonces su tipo se convertirá a float64. El tipo se convertirá a objeto en lugar de bool

Por lo tanto, después de ingresar a la versión 1.0.0, pandas intentó diseñar un nuevo tipo faltante pd.NA y Tres tipos de secuencias que aceptan valores NULL para abordar estos defectos son Int, boolean y string respectivamente.

3.2 Propiedades del tipo Nullable

Literalmente, Nullable es anulable, lo que significa que los tipos de secuencia no se ven afectados por los valores faltantes. Por ejemplo, los valores faltantes almacenados en los tres tipos anulables anteriores se convertirán al pd.NA integrado de pandas

En la secuencia de Int, el resultado devuelto será del tipo anulable tanto como sea posible.

Para la secuencia de tipo booleano, existen dos diferencias principales entre su comportamiento y la secuencia booleana:

El primer punto es que la lista booleana a la que le faltan elementos no se puede seleccionar en el indexador. , y los valores booleanos faltantes se considerarán Falsos

El segundo punto es que al realizar operaciones lógicas, el tipo booleano siempre devolverá Falso en la ubicación faltante, mientras que booleano devolverá el valor correspondiente según sobre si la operación lógica puede determinar el valor único del resultado. Entonces, ¿qué significa poder determinar el único resultado? Para dar un ejemplo simple: No importa cuál sea el valor faltante en True | pd.NA, se devolverá True el resultado en False | pd.NA cambiará según el valor del valor faltante, en cuyo caso pd.NA; se devolverá False& pd. Independientemente del valor faltante en NA, se debe devolver False.

3.3 Cálculo y agrupación de datos faltantes

Al llamar a las funciones suma y prob usando suma y multiplicación, los datos faltantes equivalen a ser tratados como 0 y 1 respectivamente, es decir, no cambian Resultado del cálculo original

Cuando se utiliza la función acumulativa, la posición del valor faltante se omitirá automáticamente:

Cuando se realiza una única operación escalar, excepto np.nan * * 0 Excepto por los valores definidos en los dos casos de 1 ** np.nan, faltan todos los resultados de la operación (el comportamiento de pd.NA es consistente con esto), y np.nan debe devolver False durante las operaciones de comparación. mientras que pd.NA devuelve pd.NA

Además, cabe señalar que aunque las dos funciones diff y pct_change tienen funciones similares, manejan las faltas de manera diferente. En la primera, todas las partes involucradas en los cálculos faltantes lo son. establezca los valores faltantes y luego O la posición del valor faltante se establecerá en una tasa de cambio del 0%

Para algunas funciones, la falta se puede tratar como una categoría. Por ejemplo, en groupby, get_dummies, los parámetros correspondientes. se puede configurar para agregar categorías faltantes:

¿4 ejercicios?

4.1 Ej1: Prueba de correlación entre valores faltantes y categorías

.4.2 Ej2: Usar regresión modelo para resolver problemas de clasificación

v>