pandas에서 데이터 문자열 NA / ND가 누락 값으로 인식되지 않는 경우의 해결 방법

2018/12/5

판다스의 결측값

실험계의 데이터 세트등에서는, 공란이 NA, NA(Not analyzed)나 ND, ND(Not detected)로 보완되고 있는 일이 있습니다. pandas에서는 NA나 ND는 단지 문자열(object)로 인식되고 있기 때문에 그대로의 상태에서는 dropna(), fillna(), isnull() 함수를 이용한 결측값에 대한 일괄처리를 할 수 없습니다. .

pandas는 다음을 결측 값으로 인식합니다.

  • NaN
  • 없음
  • np.nan
  • math.nan

NA 또는 ND라는 문자열은 위의 하나로 변환해야 합니다.

NA 및 ND에 대한 처리

NA, ND, NaN을 포함한 샘플 데이터를 작성.

In [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', None, np.nan]}) Out[1] A B C 0 1 4 7 1 ND NA ND 2 2 5 NaN 3 3 5 NaN

아니ne나 np.nan은 결측값으로서 인식, 카운트 되고 있습니다만, ND나 NA는 False가 되고 있습니다.
isnull() : 결측값이면 True를 반환합니다.
isnull.sum() : 결측값 집계

In [2]: df.isnull() Out[2]: A B C 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 dtype: int64

replace 함수로 문자열 ND 대체

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()과 fillna()를 적용할 수 있습니다.

In [5]: df.isnull() Out[5]: A B C 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 dtype: int64 In [7]: df.fillna(10) Out[7]: A B C 0 1 4 7 1 10 NA 10 2 2 5 10 3 3 5 10