C.W.K.
Stream
Lesson 04 of 12 · published

Data 검증

~11 min · data, validation, quality

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Data 도 build artifact

서비스가 dataset (학습 데이터, RAG corpus, knowledge base) 에 의존하면 data 는 ship 되는 것의 일부야. 코드처럼 CI 에서 검증.

뭘 검사

  • Schema — 모든 row 가 기대 컬럼 / 필드 + 기대 타입.
  • Cardinality — row 수가 기대 범위 (조용한 데이터 손실 없음).
  • Null / 완전성 — 필수 필드 채워짐.
  • 분포 — baseline 대비 기본 통계 (평균, 레이블 균형) 큰 이동 없음.
  • PII / 민감 데이터 — 누출된 이메일, 전화번호, API 키 없음.
  • 인코딩 / 형식 — UTF-8, CSV 에 BOM 없음, 줄 끝 혼합 없음.

도구

  • Great Expectations — 선언형 expectation, 전체 리포트.
  • Pandera — Python decorator 로 schema 검증.
  • dbt test — SQL 기반 pipeline 용.
  • 커스텀 pytest — 작은 dataset 용.

Code

CI 의 Pandera schema 검사·python
# tests/test_data_validity.py
import pandera.pandas as pa
import pandas as pd

schema = pa.DataFrameSchema({
    'id': pa.Column(int, unique=True),
    'text': pa.Column(str, checks=pa.Check.str_length(min_value=1)),
    'label': pa.Column(str, checks=pa.Check.isin(['pos', 'neg', 'neu'])),
    'lang': pa.Column(str, checks=pa.Check.str_matches(r'^(en|ko|ja|zh)$')),
})

def test_dataset_conforms():
    df = pd.read_parquet('data/training.parquet')
    schema.validate(df, lazy=True)  # raises with all errors collected
    assert 1000 < len(df) < 1_000_000   # cardinality bounds

External links

Exercise

Ship 하는 dataset 하나에 CI 데이터 검증 step 추가. Schema, 기대 row-count 범위, PII 검사 정의. Push 하고 검증이 통과하거나 몰랐던 문제 드러내는 거 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.