파이썬 판다스 NaN 값 대체 방법 정리 : fillna 사용법
안녕하세요. 이번 글에서는 파이썬 판다스 라이브러리에서 데이터프레임의
전체 column 혹은 일부 column의 결측값을 0, 평균 값 혹은 보간 값 등으로 대체하는
방법에 대하여 총정리해보도록 하겠습니다.
이해를 돕기 위하여 아래와 같은 간단한 데이터프레임이 있다고 가정해보겠습니다.
import pandas as pd
import numpy as np
a = {'A' : [1, np.nan, 3, np.nan, 5, np.nan], 'B' : [np.nan, 20, np.nan, 40, np.nan, 60]}
df = pd.DataFrame(a)
df
전체 column 결측치 0 대치 : df.fillna(0)
0 혹은 다른 특정 값으로 결측치를을 대체하고 싶다면 df = df.fillna(원하는 값)
형태로 작성해주시면 됩니다.
df = df.fillna(0)
df
모든 column의 NaN이 저장되어있던 위치의 값들이 전부 0으로 대체되었습니다.
특정 column 결측치 0 대치 : df.loc[df['A'] != df['A'], 'A'] = 0
만일, 일부 열의 결측값만 대체하고 싶다면 np.nan != np.nan 이라는 성질을 이용하여
아래와 같은 loc 함수를 활용한 조건부 대입 구문을 사용하여 진행할 수 있습니다.
df.loc[df['A'] != df['A'], 'A'] = 0
df
A열의 NaN 값들만 0으로 대체되었습니다.
결측치 평균 값 대치 : df.fillna(df.mean())
결측 값을 각 열의 평균 값으로 대체하는 방법은 df.fillna(df.mean())으로 채워주시면 됩니다.
먼저, 데이터프레임 모든 column의 NaN 값을 평균 값으로 대치하는 예시입니다.
df = df.fillna(df.mean())
df
A열과 B열 모두 각 열의 평균인 3과 40으로 대체가 완료되었습니다.
이번엔 특정 column의 결측치만 평균으로 대치하는 예시입니다.
df.loc[df['A'] != df['A'], 'A'] = df['A'].mean()
df
A열의 결측 값들만 평균 값인 3으로 변경되었습니다.
결측치 보간 방법 : ffill, bfill, interpolate
결측치를 보간하는 방법은 여러가지가 있는데, 가장 최근의 앞에 등장한 값으로 보간하려면
method = 'ffill' 혹은 'pad'로 fillna 함수 내 argument를 지정해주시면 됩니다.
df = df.fillna(method = 'ffill') # df = df.fillna(method = 'pad')
df
NaN 값들이 바로 위의 행에 등장했던 값으로 변경이 되었는데, B열의 첫 번째 행은
더 앞에 등장한 유효한 값이 없으므로 결측치로 남아있는 것을 확인할 수 있었습니다.
만일, 가장 최근으로 뒤에 등장한 값으로 보간하려면 method = 'bfill' 혹은 'backfill'로
지정해주시면 됩니다.
df = df.fillna(method = 'bfill') # df = df.fillna(method = 'backfill')
df
이번에는 A열의 마지막 행의 값이 결측치로 남은 것을 볼 수 있었습니다.
마지막으로, 가장 최근의 앞과 뒤 행의 값의 평균으로 보간하고 싶은 경우에는
df.interpolate()로 fillna 함수 내의 input을 지정해주시면 됩니다.
df = df.fillna(df.interpolate())
df
다만, 이 경우에도 최근 앞의 유효한 값이 없는 경우에는 NaN 값으로 남아있게됩니다.
만일, 결측치를 다른 값으로 바꾸려는 것이 아니라 제거하는 방법이 궁금하시다면
아래 링크의 포스팅을 참고하시면 됩니다.
이상으로 파이썬 판다스에서 결측치 대치 방법에 대해 정리한 포스팅을 마치겠습니다.
감사합니다.
'Python > Pandas' 카테고리의 다른 글
[Pandas] json 파일 <-> 데이터프레임 변환 : to_json, read_json (0) | 2022.04.01 |
---|---|
[Pandas] 파이썬 결측치 포함 행, 열 제거 dropna 함수 사용법 (2) | 2022.03.07 |
[Pandas] 파이썬 결측치 확인 방법 : isnull, notnull (0) | 2022.03.06 |