fillna 소개
fillna 는 Pandas 에서 결측값 (NaN, None) 을 지정된 값으로 대체할 수 있도록 하는 메서드입니다.
사용법1 - 기본
import pandas as pd
import numpy as np
# 예제 데이터프레임 생성
data = {'A': [1, 2, np.nan, 4],
'B': [np.nan, 2, 3, 4],
'C': [np.nan, np.nan, 3, np.nan]}
df = pd.DataFrame(data)
# 결측값을 0으로 채우기
df_filled = df.fillna(0)
print(df_filled)
출력 결과
A B C
0 1.0 0.0 0.0
1 2.0 2.0 0.0
2 0.0 3.0 3.0
3 4.0 4.0 0.0
사용법2 - 특정 열에만 적용
# 특정 열에만 결측값을 채우기
df['A'] = df['A'].fillna(0)
사용법3 - 열마다 다른 값으로 결측값 채우기
# 각 열에 대해 다른 값으로 결측값을 채우기
df_filled = df.fillna({'A': 0, 'B': 99, 'C': -1})
print(df_filled)
출력 결과
A B C
0 1.0 99.0 -1.0
1 2.0 2.0 -1.0
2 0.0 3.0 3.0
3 4.0 4.0 -1.0
사용법4 - 결측값을 이전 값으로 채우기(Forward Fill)
이전 값이라고 하는 것은 해당 데이터의 위쪽 즉 이전 행의 값을 의미한다.
# 앞의 값으로 결측값을 채우기 (forward fill)
df_filled = df.fillna(method='ffill')
print(df_filled)
출력 결과
A B C
0 1.0 NaN NaN
1 2.0 2.0 NaN
2 2.0 3.0 3.0
3 4.0 4.0 3.0
사용법5 - 결측값을 다음 값으로 채우기(Backward Fill)
# 뒤의 값으로 결측값을 채우기 (backward fill)
df_filled = df.fillna(method='bfill')
print(df_filled)
출력 결과
A B C
0 1.0 2.0 3.0
1 2.0 2.0 3.0
2 4.0 3.0 3.0
3 4.0 4.0 NaN
사용법6 - 평균값으로 결측값 채우기
# 각 열의 평균값으로 결측값을 채우기
df_filled = df.fillna(df.mean())
print(df_filled)
출력 결과
A B C
0 1.0 3.0 3.0
1 2.0 2.0 3.0
2 2.333333 3.0 3.0
3 4.0 4.0 3.0
사용법7 - 문자열 데이터에서 결측값 채우기
data = {'Name': ['Alice', None, 'Charlie', None],
'City': [None, 'New York', 'Paris', None]}
df = pd.DataFrame(data)
# 문자열 데이터에서 결측값을 'Unknown'으로 채우기
df_filled = df.fillna('Unknown')
print(df_filled)
사용법8 - 조건에 따른 결측값 채우기
# C 열에서 결측값을 A의 값이 3보다 크면 'High'로, 작으면 'Low'로 채우기
df['C'] = df.apply(lambda row: 'High' if pd.isna(row['C']) and row['A'] > 3
else ('Low' if pd.isna(row['C']) else row['C']), axis=1)
print(df)
출력 결과
A B C
0 2.333333 3.0 Low
1 2.000000 2.0 Low
2 2.333333 3.0 3.0
3 4.000000 4.0 High