728x90
데이터를 다루다 보면 결측값(Missing Values)을 만나는 경우가 많습니다.
Pandas에서는 fillna() 메서드를 사용하여 이러한 결측값을 다양한 방법으로 처리할 수 있습니다.
이번 포스팅에서는 fillna()와 함께 사용하는 method 파라미터인 backfill, bfill, pad, ffill에 대해 알아보겠습니다.
🧩 fillna() 메서드 개요
fillna() 메서드는 결측값을 지정한 값이나 방법으로 대체하는 데 사용됩니다.
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
- value: 결측값을 대체할 값입니다. 딕셔너리 형태로 열별로 다른 값을 지정할 수도 있습니다.
- method: 결측값을 채우는 방법을 지정합니다. 주요 옵션은 아래와 같습니다.
- 'backfill' 또는 'bfill': 결측값을 다음 유효한 값으로 채웁니다.
- 'pad' 또는 'ffill': 결측값을 이전 유효한 값으로 채웁니다.
- axis: 적용할 축을 지정합니다. 0은 행 방향, 1은 열 방향입니다.
- inplace: True로 설정하면 원본 데이터를 수정합니다. 기본값은 False입니다.
- limit: 채울 결측값의 최대 개수를 지정합니다.
🔄 method 파라미터 상세 설명
1. method='ffill' 또는 method='pad' (Forward Fill)
결측값을 이전의 유효한 값으로 채웁니다. 시계열 데이터에서 이전 값으로 결측값을 채울 때 유용합니다.
df.fillna(method='ffill')
# 또는
df.fillna(method='pad')
2. method='bfill' 또는 method='backfill' (Backward Fill)
결측값을 다음의 유효한 값으로 채웁니다. 시계열 데이터에서 다음 값으로 결측값을 채울 때 사용됩니다.
df.fillna(method='bfill')
# 또는
df.fillna(method='backfill')
🧪 예제 코드
다음은 결측값이 포함된 데이터프레임을 생성하고, 다양한 방법으로 결측값을 처리하는 예제입니다.
import pandas as pd
import numpy as np
# 예제 데이터프레임 생성
df = pd.DataFrame({
'A': [1, np.nan, 3, np.nan, 5],
'B': [np.nan, 2, np.nan, 4, np.nan]
})
print("원본 데이터프레임:")
print(df)
# ffill 적용
df_ffill = df.fillna(method='ffill')
print("\nffill 적용:")
print(df_ffill)
# bfill 적용
df_bfill = df.fillna(method='bfill')
print("\nbfill 적용:")
print(df_bfill)
# ffill 후 bfill 적용
df_ffill_bfill = df.fillna(method='ffill').fillna(method='bfill')
print("\nffill 후 bfill 적용:")
print(df_ffill_bfill)
출력 결과:
원본 데이터프레임:
A B
0 1.0 NaN
1 NaN 2.0
2 3.0 NaN
3 NaN 4.0
4 5.0 NaN
ffill 적용:
A B
0 1.0 NaN
1 1.0 2.0
2 3.0 2.0
3 3.0 4.0
4 5.0 4.0
bfill 적용:
A B
0 1.0 2.0
1 3.0 2.0
2 3.0 4.0
3 5.0 NaN
4 5.0 NaN
ffill 후 bfill 적용:
A B
0 1.0 2.0
1 1.0 2.0
2 3.0 2.0
3 3.0 4.0
4 5.0 4.0
⚠️ 주의사항
- ffill이나 bfill을 사용할 때, 데이터의 시작이나 끝에 결측값이 있는 경우 해당 방법으로는 채워지지 않을 수 있습니다. 이 경우 fillna()를 두 번 연속 사용하여 앞뒤로 채우는 방식이 효과적입니다.
df.fillna(method='ffill').fillna(method='bfill')
- limit 파라미터를 사용하면 연속된 결측값 중 지정한 개수만큼만 채울 수 있습니다.
df.fillna(method='ffill', limit=1)
📝 마무리
데이터 분석에서 결측값은 흔히 마주치는 문제이며, 적절한 처리 없이 분석을 진행하면 왜곡된 결과를 초래할 수 있습니다.
Pandas의 fillna() 메서드와 다양한 method 옵션(ffill, bfill 등)은 손쉽게 결측값을 보완할 수 있는 강력한 도구입니다.
데이터의 특성과 목적에 맞게 적절한 방식으로 결측값을 채워 넣는 습관은 분석의 정확도를 높이는 데 큰 도움이 됩니다.
앞으로 분석하는 데이터셋에서 결측값을 만나더라도 당황하지 말고, 오늘 배운 내용을 바탕으로 현명하게 대응해보세요!
728x90
'BackEnd > 파이썬' 카테고리의 다른 글
| 🐼 Pandas에서 행 합계 계산하기: sum(axis=1) 완벽 가이드 (0) | 2025.06.11 |
|---|---|
| 🐼 Pandas에서 열 추가 및 삭제하기: 실전 예제로 마스터하기 (1) | 2025.06.10 |
| 🐼 Pandas에서 데이터프레임 열 타입 확인하기: df.info()와 df.dtypes 활용법 (0) | 2025.06.09 |
| 🐼 Pandas에서 조건에 맞는 행 추출하기: 실무 예제로 마스터하기 (0) | 2025.06.08 |
| 🐼 Pandas의 iloc vs loc 완벽 정리: 실무 예제로 이해하기 (0) | 2025.06.07 |