O que fazer quando o pandas não reconhece a string de dados NA / ND como um valor ausente

2018 ano 12 mês 5 dia

Valores ausentes em pandas

Em conjuntos de dados experimentais, os espaços em branco podem ser complementados com NA, NA (não analisado) ou ND, ND (não detectado). No pandas, NA e ND são reconhecidos apenas como uma sequência de caracteres (objeto), portanto, não é possível processar em lote os valores ausentes usando as funções dropna (), fillna () e isnull () como estão. ..

Os seguintes são reconhecidos como valores ausentes em pandas:

  • NaN
  • nenhum
  • np.nan
  • matemática.nan

As strings NA e ND precisam ser convertidas em uma das anteriores.

Processamento para NA e ND

Crie dados de amostra incluindo NA, ND e NaN.

Em [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', Nenhum, np.nan]}) Out [1] ABC 0 1 4 7 1 ND NA ND 2 2 5 NaN 3 3 5 NaN

Nãone e np.nan são reconhecidos e contados como valores ausentes, mas ND e NA são falsos.
isnull (): Retorna True se o valor estiver ausente
isnull.sum (): Agregar valores ausentes

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

Substitua a string ND com a função de substituição

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

isnull () e fillna () agora podem ser aplicados.

In [5]: df.isnull () Out [5]: ABC 0 False False False 1 True False True 2 False False True 3 False False True In [6]: df.isnull (). Sum () Out [6] : A 2 B 0 C 2 dtipo: 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