○ 개요
pandas의 fillna()는 결측값(NA, NaN, None 등)을 사용자가 지정한 값이나 방법으로 채우는 메서드예요. Series.fillna(), DataFrame.fillna() 형태로 쓰며, 데이터 전처리에서 가장 자주 쓰이는 기본기입니다.
○ 핵심 정의
- 결측값을 “값(value)” 또는 “방식(method: ffill/bfill)”으로 대체합니다.
- 원본을 바꿀지(inplace) 새 객체를 반환할지 선택할 수 있습니다.
- 스칼라, 딕셔너리/매핑, 시리즈/데이터프레임(정렬되는 경우)을 활용해 컬럼별로 다르게 채울 수 있습니다.
○ 언제 쓰나
- 모델 입력 전 결측 제거 없이 안전하게 치환하고 싶을 때
- 시계열에서 바로 이전/다음 관측치로 결측을 보간할 때
- 범주형·수치형 컬럼마다 다른 기본값을 채울 때
○ 관련 개념 한눈에
- 결측값 표현: np.nan, None, pd.NA
- 대체 전략: 상수 대체, 중앙값/평균 등 통계량 대체(사전 계산 필요), 전방 채우기(ffill), 후방 채우기(bfill)
- 연관 함수: isna()/isnull(), notna(), dropna(), replace(), interpolate(), where()/mask()
- 그룹별 처리: groupby().apply() / transform()와 결합해 집단별 대표값으로 채우기
○ 함수 서명(개념적)
Series.fillna(value=None, *, method=None, axis=None, inplace=False, limit=None, downcast=None)
DataFrame.fillna(value=None, *, method=None, axis=0, inplace=False, limit=None, downcast=None)
○ 주요 파라미터 설명
- value:
- 스칼라(예: 0, "미상") → 전 컬럼/시리즈 동일 대체
- 딕셔너리/매핑(예: {"age": age_med, "city": "Unknown"}) → 컬럼별 다른 값
- 시리즈/데이터프레임 → 라벨 정렬 후 위치별 대체
- method: "ffill"(전방 채우기), "bfill"(후방 채우기). value 대신 사용.
- axis: DataFrame에서 채우기 방향 지정(일반적으로 axis=0/index 방향).
- limit: 연속된 결측 구간에서 최대 몇 개까지만 채울지 제한. 긴 결측 단절을 방지하고 싶을 때 유용.
- inplace: True면 원본 변형, 기본은 새 객체 반환. (일반적으로 재현 가능성과 체이닝을 위해 반환형 사용 권장)
- downcast: 채운 뒤 더 작은 정수/부동소수형으로 다운캐스트를 시도. 메모리·성능 최적화에 도움.
○ 반환값/동작
- inplace=False(기본): 같은 타입(Series/DataFrame)의 새 객체 반환
- 타입 보존: 가능한 한 원 컬럼 dtype 유지. 단, 문자열 채우기 등으로 dtype이 object/string으로 승격될 수 있음.
'Python 코드' 카테고리의 다른 글
| [Python] DataFrame.value_counts() (0) | 2025.12.16 |
|---|---|
| [Python] train_test_split() (0) | 2025.10.22 |
| [Python] Keras(TensorFlow) (3) | 2025.07.17 |
| [Python] DataFrame.astype() (1) | 2025.07.14 |
| [Python] DataFrame.replace() (1) | 2025.07.13 |