Qué hacer cuando los pandas no reconocen la cadena de datos NA / ND como un valor faltante

2018/12/5

Valores perdidos en pandas

En conjuntos de datos experimentales, los espacios en blanco se pueden complementar con NA, NA (No analizado) o ND, ND (No detectado). En pandas, NA y ND se reconocen como solo una cadena de caracteres (objeto), por lo que no es posible procesar por lotes los valores faltantes utilizando las funciones dropna (), fillna () e isnull () tal como están ...

Los siguientes se reconocen como valores perdidos en pandas:

  • Yaya
  • Ninguna
  • np.nan
  • matemáticas.nan

Las cadenas NA y ND deben convertirse a una de las anteriores.

Procesamiento para NA y ND

Cree datos de muestra, incluidos NA, ND y NaN.

En [1]: import numpy as np import pandas as pd df = pd.DataFrame ({'A': [1, 'ND', 2, 3], 'B': [4, 'NA', 5, 6 ], 'C': [7, 'ND', Ninguno, np.nan]}) Fuera [1] ABC 0 1 4 7 1 ND NA ND 2 2 5 NaN 3 3 5 NaN

None y np.nan se reconocen y cuentan como valores perdidos, pero ND y NA son falsos.
isnull (): Devuelve True si falta el valor
isnull.sum (): valores perdidos agregados

Entrada [2]: df.isnull () Out [2]: ABC 0 Falso Falso Falso 1 Falso Falso Falso 2 Falso Falso Verdadero 3 Falso Falso Verdadero In [3]: df.isnull (). Sum () Out [3] : A 0 B 0 C 2 dtipo: int64

Reemplazar cadena ND con función de reemplazo

En [4]: ​​df = df.replace ('ND', np.nan) Fuera [4]: ​​A B C 0 1 4 7 1 NaN NA NaN 2 2 5 NaN 3 3 5 NaN

isnull () y fillna () ahora se pueden aplicar.

In [5]: df.isnull () Out [5]: ABC 0 Falso Falso Falso 1 Verdadero Falso Verdadero 2 Falso Falso Verdadero 3 Falso Falso Verdadero In [6]: df.isnull (). Sum () Out [6] : A 2 B 0 C 2 dtype: int64 In [7]: df.fillna (10) Out [7]: ABC 0 1 4 7 1 10 NA 10 2 2 5 10 3 3 5 10