파이썬

[파이썬] NaN, None, Null 차이 및 제거 방법

ThLee 2022. 4. 22. 21:28
728x90

3 가지를 정확하게 구분하는 것이 헷갈린다. 하지만, 중요한 건 셋 다 결측치라는 것이며,

데이터 분석을 하는 과정에서 제거를 해야한다는 공통점이다.


NaN(Numpy)

- NaN이 포함된 연산의 결과는 NaN이 된다

 

None(Numpy)

- Numpy에서 None을 사용하지 말 것

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

- Pandas에서 사용이 가능하다. 하지만, 연산 속도가 느려지고 Numpy 메소드 사용이 불가능하다

- 사용을 권장하지 않는다

- 다른 프로그래밍 언어에서는 Null이다

 

NaN, None(Pandas)

- Pandas에서 None은 nan으로 자동 변경된다


결측치 탐지

- isnull() : null값이 있으면 True, 아니면 False

- notnull() : null값이 있으면 False, 아니면 True

 

결측치 제거

- dropna()

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()

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)

 

728x90