현실 데이터에는 「누락된 값(missing value)」이 흔합니다.
Pandas에서는 NaN(Not a Number)으로 표현되며, 처리 방법에 따라 분석 결과가 크게 달라집니다.
결측치 검사.
df.isna() — 각 셀이 NaN인지 True/False.
df.isna().sum() — 열별 NaN 개수.
df.notna() — 그 반대.
df.dropna()로 직진하기 전에 「얼마나·어디에 있는지」 확인하는 게 표준.
삭제 — dropna.
df.dropna() — NaN이 하나라도 있는 행 삭제.
df.dropna(axis=1) — NaN이 있는 열 삭제.
df.dropna(subset=["age"]) — age 열에 NaN이 있는 행만 삭제.
df.dropna(thresh=3) — non-NaN 값이 3개 미만인 행 삭제.
채우기 — fillna.
df.fillna(0) — 모든 NaN을 0으로.
df["age"].fillna(df["age"].mean()) — 그 열의 평균으로.
df.fillna(method="ffill") — 앞 값으로 채우기(시계열에 유용).
df.fillna(method="bfill") — 뒷 값으로.
더 영리한 방법들.
df.fillna({"age": 0, "city": "unknown"}) — 열별로 다른 값.
df.interpolate() — 선형 보간(시계열에 자주).
머신러닝 전 결측치 처리에서는 sklearn의 SimpleImputer·KNNImputer 같은 도구도 자주 쓰입니다.
결측치 처리 전략은 데이터의 의미와 분석 목적에 따라 다르므로 「무조건 dropna 또는 fillna(0)」 같은 기계적 처리는 위험합니다.
한 줄 요약
결측치는 isna로 진단, dropna로 삭제, fillna로 채웁니다.
평균·앞 값·뒷 값·보간 등 다양한 채우기 방법이 있고, 데이터 의미에 맞는 전략 선택이 중요합니다.
더 알아볼 것
- MCAR·MAR·MNAR — 결측 메커니즘
- sklearn의 SimpleImputer·KNNImputer
- 결측치 패턴 시각화