본문 바로가기

BackEnd/파이썬

👉 Pandas에서 결측값 채우기 완전 정복: fillna, ffill, bfill 사용법 정리

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