배우기
인터랙티브·

데이터 정제·전처리

원자료를 검증 가능한 규칙으로 분석 가능한 데이터로 바꾸기

1

들어가며

매출 합계가 조인 한 번 뒤 두 배가 됐다면 분석 문제가 아니라 데이터 구조 문제입니다.

전처리는 지저분한 값을 보기 좋게 만드는 작업이 아닙니다. 한 행의 의미, 키, 단위, 시간과 범주를 일관되게 만들어 같은 질문에 같은 답이 나오게 하는 과정입니다.

원자료를 덮어쓰면 어떤 값이 왜 바뀌었는지 확인할 수 없습니다. 원본, 정제 규칙, 제외·수정 건수, 최종 분석자료를 분리해야 오류를 되돌리고 결과를 재현할 수 있습니다.

핵심 원칙

원본은 불변으로 보존하고 모든 수정은 규칙·근거·영향 행 수·실행 시점과 함께 기록합니다.

원자료

불일치

중복·공백·단위·날짜 형식이 섞인 원자료를 확인합니다.

정제 규칙

재현 가능

변경 이유와 규칙을 코드·로그로 남겨 같은 결과를 재현합니다.

분석용 자료

검증 완료

행 수와 분포가 의도치 않게 변하지 않았는지 비교합니다.

2

정제와 전처리 구분

정제는 날짜 형식, 중복, 단위 혼합, 잘못된 범주처럼 데이터 의미의 오류를 바로잡습니다. 전처리는 인코딩·스케일링·변수변환처럼 특정 분석이나 모델이 사용할 입력을 만듭니다.

“나이는 0~120” 같은 도메인 규칙은 전체 데이터에 동일하게 적용할 수 있습니다. 반면 평균대체값, 스케일러 평균·SD, PCA 축처럼 데이터에서 학습되는 값은 훈련 세트에서만 적합해야 합니다.

정제본 하나에서 여러 분석용 데이터셋이 만들어질 수 있습니다. 원자료→정제자료→분석자료의 계보를 분리하면 어떤 결과가 어느 규칙에 의존하는지 추적할 수 있습니다.

3

스키마 검증

필수 열, 자료형, 허용범위, 고유키, 단위, 날짜 형식과 범주 집합을 데이터가 들어올 때마다 자동 검사합니다. 예상과 다르면 조용히 형변환하지 말고 실패·격리·검토 중 하나로 처리합니다.

예를 들어 나이 “삼십”을 자동으로 30으로 고치는 것은 편리해 보여도 오해석일 수 있습니다. 허용한 변환과 실패한 행을 별도로 기록합니다.

검사질문실패 예시
형식파싱 가능한가?2026/13/40
범위업무상 가능한가?나이 −3
집합허용 범주인가?상태=완룍
고유성키가 한 행인가?거래ID 중복
참조부모 키가 있는가?없는 고객ID
4

중복 처리

모든 열이 같은 완전 중복, 같은 키지만 값이 다른 충돌행, 실제 반복측정을 구분합니다. “중복 제거” 버튼은 이 세 상황을 구별하지 못합니다.

같은 주문ID가 두 행이면 재전송인지 한 주문의 두 상품인지 먼저 확인합니다. 최신 수정시각, 신뢰할 수 있는 원천, 상태 우선순위 등 대표행 규칙을 사전에 정합니다.

중복 제거 전후 행 수뿐 아니라 고유 고객 수, 거래 합계와 집단별 분포를 비교합니다. 중복이 특정 채널에 집중되면 단순 제거 후에도 수집 편향이 남을 수 있습니다.

5

문자열·범주 정규화

앞뒤 공백, 대소문자, 전각·반각, 유니코드, 약어와 오타를 표준화합니다. “서울”, “서울시”, “SEOUL”을 합칠 수 있지만 원값과 표준값의 매핑표를 보존해야 합니다.

자유기입 범주를 자동으로 합칠 때는 동음이의어와 실제 하위범주를 주의합니다. “기타”를 모두 하나로 합치면 중요한 신규 범주를 숨길 수 있습니다.

범주 라벨 변경과 범주 의미 변경은 다릅니다. 코드 A가 연도별로 다른 상품을 뜻했다면 문자열 통일만으로 해결되지 않으며 기준시점이 포함된 코드북이 필요합니다.

6

날짜·시간

날짜 문자열을 파싱할 때 월/일 순서, 시간대, 서머타임, 로케일을 명시합니다. 03/04/2026은 국가에 따라 3월 4일 또는 4월 3일입니다.

사건 발생시간, 서버 수신시간, 데이터 적재시간을 구분합니다. 배송 소요시간은 주문 사건시각부터 배송완료 사건시각까지 계산해야지 입력시각을 섞으면 안 됩니다.

기간 계산은 종료−시작의 부호, 시작·종료일 포함 여부, 영업일 기준을 검증합니다. 음수 기간은 오류일 수도 취소·사전예약 같은 정상 업무흐름일 수도 있습니다.

7

단위와 범위

원·천원, kg·g, cm·inch처럼 단위를 통일하고 변환 후 원단위를 메타데이터에 남깁니다. 값 170이 키(cm)인지 몸무게(lb)인지 숫자만으로는 알 수 없습니다.

물리적으로 불가능한 값, 업무규칙 위반, 통계적으로 드문 값을 구분합니다. 체온 80℃는 오류 가능성이 높지만 구매액 상위 0.1%는 실제 VIP일 수 있습니다.

범위 밖 값을 경계값으로 자르거나 삭제하기 전에 원문서·센서·수집시스템을 확인합니다. 자동 보정은 규칙이 확실할 때만 적용하고 수정 전 값을 보존합니다.

8

조인 검증

조인 전 각 키가 유일한지, 두 표의 관계가 1:1·1:N·N:M 중 무엇인지 확인합니다. 고객별 거래표와 고객별 문의표를 고객ID만으로 직접 붙이면 거래수×문의수만큼 행이 늘어납니다.

조인 뒤 전체 행 수, 고유키 수, 미매칭률, 핵심 합계를 전후 비교합니다. left join에서 오른쪽 미매칭이 20%라면 0건인지 키 형식 오류인지 구분해야 합니다.

고객별 결과행왼쪽 반복수×오른쪽 반복수\text{고객별 결과행} \approx \text{왼쪽 반복수} \times \text{오른쪽 반복수}
거래 5건과 문의 4건을 직접 조인하면 고객 한 명이 20행이 될 수 있습니다.
9

재현 가능한 파이프라인

수동 셀 편집 대신 순서가 고정된 코드·버전된 규칙으로 같은 입력이 같은 출력을 만들게 합니다. 각 단계는 입력 행 수, 출력 행 수, 수정·제외 건수와 실패 이유를 로그로 남깁니다.

규칙은 가능한 한 idempotent해야 합니다. 같은 정제 함수를 두 번 실행해도 값이 계속 바뀌지 않아야 합니다. 중간 산출물과 코드 버전을 연결하면 과거 보고서를 재생성할 수 있습니다.

검증 실패를 모두 삭제하지 말고 중단, 격리, 경고, 자동수정 중 위험에 맞는 동작을 정합니다. 핵심 키 중복은 중단하고 사소한 공백은 자동수정하는 식입니다.

10

분할과 누수 방지

결측대체·스케일링·PCA·목표기반 변수선택은 데이터의 분포나 결과를 학습하므로 훈련 폴드 안에서만 적합합니다. 검증·테스트에는 훈련에서 배운 변환을 그대로 적용합니다.

중복 고객이 훈련과 테스트에 나뉘면 사실상 같은 정보를 다시 보게 됩니다. 고객·병원·시점처럼 의존 단위별로 분할하고, 미래 예측은 시간순으로 나눕니다.

전체 데이터에 적용 가능한 도메인 정제와 훈련에서만 학습할 전처리를 코드상 별도 단계로 표시하면 누수 검토가 쉬워집니다.

11

직접 해보기

고객별 거래표와 문의표를 집계하지 않고 고객ID로 직접 조인할 때 행이 얼마나 늘어나는지 확인하세요.

데이터 정제·전처리 인터랙티브 랩

데이터 문제의 양과 처리 강도를 바꾸며 남는 정보와 왜곡이 어떻게 달라지는지 비교하세요.

처리 전처리 후진한 셀은 아직 남은 문제

조작할 때 그래프의 위치·모양·오류 구조를 먼저 보세요.

계산 결과

고객 1명당 20행 생성

원래 거래 5행과 문의 4행이 다대다로 결합됩니다. 고객 수준으로 각각 집계하거나 명시적인 연결키를 사용하세요.

확인할 것

한 조절값만 먼저 움직인 뒤 그래프의 어떤 부분이 변하고 무엇은 그대로인지 설명해보세요.

12

핵심 정리

  • 정제는 오류 수정, 전처리는 분석 입력 변환입니다.
  • 스키마·키·범위·범주·단위·시간을 규칙으로 검증합니다.
  • 중복과 반복측정, 오류와 희귀값을 구분합니다.
  • 조인 전후 행 수·고유키·합계를 검산합니다.
  • 원본과 변경로그를 보존하고 학습 전처리는 분할 뒤 적합합니다.
13

더 깊이 알아보기

주제핵심 내용
Data Contracts데이터 생산자와 소비자가 스키마, 허용 지연, 품질 임계값, 변경 통보와 실패 처리 규칙을 사전에 합의합니다.
Data Lineage보고서의 한 수치가 어떤 원천 테이블·코드 버전·변환·필터를 거쳤는지 역추적할 수 있게 합니다.
품질 모니터링결측률·범위위반뿐 아니라 범주 비율과 분포 변화를 기준선과 비교해 수집 시스템의 드리프트를 감시합니다.
다음 학습결측치 처리는 단순히 빈칸을 채우는 일이 아니라 왜 측정되지 않았는지에 따라 편향과 불확실성을 다루는 과정입니다.
다음: 결측치 처리