Skip to main content
전처리 파이프라인은 변환 자체보다 검증이 약하면 운영 장애로 이어집니다. 이 문서는 Pandas 단계에서 바로 적용할 수 있는 데이터 품질 체크를 정리합니다.

최소 검증 항목

  • row 수 급감/급증 여부
  • 핵심 키 유일성/결측률
  • 주요 수치 컬럼 범위 이탈
  • 범주형 컬럼 허용값 위반

검증 템플릿

def validate_orders(df: pd.DataFrame) -> None:
    assert len(df) > 0, "empty dataframe"

    # 키 유일성
    dup = df["order_id"].duplicated().mean()
    assert dup == 0, f"duplicated order_id: {dup:.4f}"

    # 결측률
    miss = df[["order_id", "amount", "region"]].isna().mean()
    assert miss["amount"] < 0.01, f"amount missing too high: {miss['amount']:.4f}"

    # 범위
    assert (df["amount"] >= 0).all(), "negative amount detected"

    # 허용값
    allowed = {"seoul", "busan", "incheon"}
    invalid = set(df["region"].dropna().unique()) - allowed
    assert not invalid, f"invalid region values: {invalid}"

리포트형 검증

quality = {
    "rows": len(df),
    "dup_order_id_rate": df["order_id"].duplicated().mean(),
    "missing_amount_rate": df["amount"].isna().mean(),
    "negative_amount_rate": (df["amount"] < 0).mean(),
}
print(quality)
assert 기반은 배치 실패를 즉시 알리고, 리포트형 지표는 추세 모니터링에 유리합니다.

운영 적용 포인트

  1. 데이터 소스별로 임계값을 별도 설정합니다.
  2. 검증 실패 시 샘플 row를 함께 저장합니다.
  3. 배치 로그에 품질 지표를 남겨 이상 추세를 추적합니다.

이어서 볼 문서