Python/Pandas

13. Pandas - 결측값(Nan, None)

frcn 2020. 3. 4. 19:00
반응형

결측값 (None, NaN)

 

1) None (Numpy)

 

Numpy에서는 None 값을 사용하지 말자.

 

None은 파이썬 객체이고, Numpy연산이 불가능하다.

 

Pandas에서 사용이 가능하기는 하지만, 연산속도가 느려지고 Numpy메소드 사용이 불가능하므로 사용하지 않는 것을 권장한다.

 

연산시 타입에러가 발생한다.

 

2) NaN (Numpy)

 

NaN이 포함된 산술 연산의 결과는 무조건 모두 NaN이 된다.

 

 

3) None, NaN (Pandas)

 

Pandas에서 None은 자동으로 nan으로 변경한다.

 

 

Null 값 탐지 : isnull( ) / notnull( ) 

 

isnull에서는 null값이 있으면 True, 없으면 False.

nan과 None 모두 null값으로 처리함

 

Null 값 제거하기 : dropna( ) , fillna( )

 

dropna (self, axis=0, how='any', thresh=None, subset=None, inplace=False)

 

axis = 0 (default)

         0 or 'index' = 행 삭제

         1 or 'column' = 열 삭제

how = 'any' (default)

         'any' = 값이 하나라도 NA면, 해당 행 또는 열을 삭제

         'all' = 값이 모두 NA면, 해당 행 또는 열을 삭제

thresh = int None (default)

         0개 이상의 NA값이 있으면, 삭제.  thresh = 2 이면, NA가 1개면 삭제 X 

subset = None

         NA값을 검색할 열을 설정. ex) subset = ['name', 'age'] 이면 name과 age열에서만 NA검색

inplace = False

         True면 기존 데이터에 dropna한 데이터프레임을 덮어 씌움. 원본은 삭제됨

 

 

fillna (self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)

 

value = scalar, dict, Series, or DataFrame 형의 데이터. (list는 불가)

method = None (defulat)

              backfill, bfill = 다음에 오는 값으로 채우기

              ffill = 이전 값으로 채우기

axis = None (default)

         0 or ‘index’ = 행 방향으로 채우기

         1 or ‘columns’ = 열 방향으로 채우기

inplace = False (default)

            원본을 삭제하고 fillna한 값으로 변경.

limit = None (default int)

          limit으로 지정한 값의 개수만큼만 fillna를 진행함.

          limit = 1 이면 각 행 또는 열의 첫번째 NA만을 채움.

downcast = None (default dict)

         형변환이 필요하다면 진행함.

         ex) float64 to int64 (if possible)

value설정
method, axis 설정

 

반응형