Что делать, если pandas не распознает строку данных NA / ND как отсутствующее значение

2018 год 12 месяц 5 день

Отсутствующие значения в пандах

В экспериментальных наборах данных пробелы могут быть дополнены NA, NA (не проанализировано) или ND, ND (не обнаружено). В пандах NA и ND распознаются как просто символьная строка (объект), поэтому невозможно обработать отсутствующие значения в пакетном режиме с помощью функций dropna (), fillna () и isnull () как есть ...

Следующие значения распознаются в пандах как отсутствующие значения:

  • NaN
  • Ничто
  • нп. нан
  • math.nan

Строки NA и ND необходимо преобразовать в одну из указанных выше.

Обработка для NA и ND

Создайте образцы данных, включая NA, ND и NaN.

В [1]: импортировать numpy как np import pandas as pd df = pd.DataFrame ({'A': [1, 'ND', 2, 3], 'B': [4, 'NA', 5, 6 ], 'C': [7, 'ND', None, np.nan]}) Out [1] ABC 0 1 4 7 1 ND NA ND 2 2 5 NaN 3 3 5 NaN

Нетne и np.nan распознаются и считаются пропущенными значениями, но ND и NA являются ложными.
isnull (): возвращает True, если значение отсутствует
isnull.sum (): агрегировать отсутствующие значения

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 d тип: int64

Заменить строку ND функцией замены

В [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 () и fillna () теперь могут применяться.

In [5]: df.isnull () Out [5]: ABC 0 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 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