데이터 전처리와 탐색적 데이터 분석
결측치·이상치·중복·인코딩·스케일링을 처리하고 요약통계와 시각화로 데이터 구조를 탐색한다.
1. 전처리의 목적
전처리는 원시 데이터를 분석·모델링에 적합한 형태로 정리하는 과정이다.
원시 데이터
↓
스키마·타입 확인
↓
결측·이상·중복 처리
↓
범주 인코딩·수치 변환
↓
스케일링·파생변수
↓
분석용 데이터셋
전처리는 단순 청소가 아니라 분석 결과에 직접 영향을 주는 설계이다.
2. 결측치
결측은 값이 관찰되지 않은 상태이다.
대표 처리:
- 행 삭제
- 컬럼 삭제
- 평균·중앙값·최빈값 대체
- 그룹별 대체
- 시계열 보간
- 모델 기반 대체
- 결측 여부 자체를 새 변수로 사용
age: [21, 23, NULL, 79, NULL]
│
중앙값 23으로 대체
▼
age: [21, 23, 23, 79, 23]
평균은 이상치에 민감하고 중앙값은 상대적으로 강건하다. 결측이 무작위가 아니라 특정 고객군에서 집중된다면 단순 대체가 편향을 키울 수 있다.
3. 이상치
이상치는 다른 관측값과 크게 다른 값이다. 오류일 수도 있고 중요한 사건일 수도 있다.
IQR 방법
IQR = Q3 - Q1
하한 = Q1 - 1.5×IQR
상한 = Q3 + 1.5×IQR
예:
Q1=10, Q3=20
IQR=10
허용범위=-5 ~ 35
50은 이상치 후보
Z-score
z = (x - 평균) / 표준편차
정규분포에 가까운 데이터에서 절댓값이 큰 z는 이상치 후보가 될 수 있다.
이상치는 자동 삭제하지 않는다. 금융 사기, 장애 급증, 센서 고장처럼 분석 목적에 중요한 신호일 수 있다.
4. 중복과 일관성
중복은 전체 행이 같을 수도 있고 같은 실체가 다른 표기로 저장될 수도 있다.
C001 | 김민수 | 010-1234-5678
C884 | 김민수 | 01012345678
중복 제거에는 정규화된 전화번호, 주소, 이름, 생년월일 등의 조합과 업무 규칙이 필요하다.
중복 제거 전에 “동일 사건의 반복 기록”인지 “잘못된 복제”인지 구분해야 한다.
5. 범주형 인코딩
| 방법 | 적합한 상황 | 주의 |
|---|---|---|
| Label Encoding | 순서가 있는 범주 | 순서 없는 범주에 가짜 크기 관계 생성 |
| One-Hot Encoding | 순서 없는 소수 범주 | 범주 수가 많으면 차원 증가 |
| Frequency Encoding | 빈도 정보 사용 | 목표값과의 관계를 직접 표현하지 않음 |
| Target Encoding | 범주별 목표 평균 | 데이터 누수와 과적합 주의 |
지역 = [서울, 부산, 대전]
One-Hot:
서울 → [1,0,0]
부산 → [0,1,0]
대전 → [0,0,1]
6. 스케일링
표준화
z = (x - 평균) / 표준편차
평균 0, 표준편차 1에 가까운 값으로 변환한다.
최소-최대 정규화
x' = (x - 최소) / (최대 - 최소)
일반적으로 0~1 범위로 변환한다.
거리 기반 알고리즘과 경사하강 기반 모델에서는 스케일 차이가 큰 변수의 영향이 커질 수 있다. 트리 모델은 일반적으로 스케일 영향이 상대적으로 작다.
7. 학습 데이터 누수
데이터 누수는 실제 예측 시점에는 알 수 없는 정보가 학습에 들어가 성능이 부풀려지는 문제이다.
잘못된 순서:
전체 데이터 평균으로 결측 대체
↓
학습·테스트 분리
올바른 순서:
학습·테스트 분리
↓
학습 데이터로 대체 규칙 학습
↓
같은 규칙을 테스트에 적용
목표값을 직접 또는 간접으로 포함한 변수, 미래 정보, 평가 데이터 기반 전처리가 대표 누수이다.
8. EDA
탐색적 데이터 분석은 모델을 만들기 전에 데이터의 구조·분포·관계·이상 징후를 이해하는 활동이다.
단변량 분석
├─ 분포
├─ 중심·산포
└─ 이상치
이변량 분석
├─ 범주-범주: 교차표
├─ 수치-수치: 산점도·상관
└─ 범주-수치: 그룹 비교
다변량 분석
└─ 여러 변수의 패턴·상호작용
9. 기술통계
| 통계량 | 의미 |
|---|---|
| 평균 | 전체 합 / 개수 |
| 중앙값 | 정렬했을 때 가운데 값 |
| 최빈값 | 가장 자주 나온 값 |
| 범위 | 최댓값 - 최솟값 |
| 분산 | 평균에서 떨어진 정도의 제곱 평균 |
| 표준편차 | 분산의 제곱근 |
| 사분위수 | 데이터를 네 구간으로 나누는 값 |
데이터: 2, 3, 3, 4, 20
평균 = 6.4
중앙값 = 3
이상치 20 때문에 평균이 중앙값보다 크게 올라간다.
10. 분포 모양
왼쪽 꼬리 대칭 오른쪽 꼬리
▂▃▅█▇▅▃ ▂▄▇█▇▄▂ ▇█▅▃▂▁
음의 왜도 양의 왜도
- 왜도: 분포의 비대칭 정도
- 첨도: 꼬리와 극단값 특성에 관련된 지표
- 다봉분포: 여러 집단이 섞였을 가능성
- 바닥·천장 효과: 측정 범위에 값이 몰림
11. 시각화 선택
| 목적 | 적합한 그래프 |
|---|---|
| 수치 분포 | 히스토그램, 상자그림 |
| 범주 빈도 | 막대그래프 |
| 시간 변화 | 선그래프 |
| 두 수치 관계 | 산점도 |
| 범주별 수치 비교 | 상자그림·막대 |
| 구성 비율 | 막대·누적막대, 제한적으로 원그래프 |
축을 잘라 차이를 과장하거나 면적·3D 효과로 값을 왜곡하지 않도록 한다.
12. Python 예시
import pandas as pd
df = pd.read_csv("transactions.csv")
print(df.info())
print(df.describe(include="all"))
print(df.isna().mean().sort_values(ascending=False))
print(df.duplicated().sum())
# 중앙값 대체
median_amount = df["amount"].median()
df["amount"] = df["amount"].fillna(median_amount)
# 범주별 건수
print(df["channel"].value_counts(dropna=False))
코드는 도구 사용 예시이며, 실제 처리 전에는 컬럼 의미와 업무 규칙을 확인해야 한다.
13. 결측 메커니즘과 처리 전략
결측은 단순히 비어 있는 값이 아니라 왜 비었는지에 따라 처리 위험이 달라진다.
- MCAR: 결측 여부가 관측·비관측 값과 무관
- MAR: 관측된 다른 변수로 결측 가능성을 설명 가능
- MNAR: 빠진 값 자체나 관측되지 않은 요인이 결측과 관련
단일 평균 대체는 분산과 변수 간 관계를 약화시킬 수 있다. 결측 플래그를 함께 두거나 그룹 중앙값·다중대체·모델 기반 대체를 검토하고, 주어진 데이터와 가정에 적합한 방법을 선택한다.
14. 변환식과 경계 계산
IQR = Q3 - Q1
하한 = Q1 - 1.5×IQR
상한 = Q3 + 1.5×IQR
z = (x - 평균) / 표준편차
min-max = (x - 최솟값) / (최댓값 - 최솟값)
Q1=10, Q3=30이면 IQR은 20, 상한은 60이다. 60은 경계값이므로 일반적인 규칙에서 이상치가 아니고, 61부터 상한 초과다. 이상치라고 해서 자동 삭제하지 않으며 센서 고장인지, 실제 희귀 사건인지, 입력 오류인지 확인한다.
15. 누수를 막는 파이프라인
# 개념적 순서
X_train, X_test = split_by_time_or_random(X)
scaler.fit(X_train) # 학습 데이터로만 규칙 추정
X_train_t = scaler.transform(X_train)
X_test_t = scaler.transform(X_test)
model.fit(X_train_t, y_train)
교차검증에서도 각 fold의 학습 부분에서만 대체값·스케일·특성선택을 학습해야 한다. 전체 데이터로 평균을 계산한 뒤 fold를 나누면 검증 fold 정보가 학습에 유입된다. Target encoding도 검증 행의 정답을 사용하지 않도록 out-of-fold 방식이 필요하다.
16. 변환 선택과 모델 영향
- 표준화: 평균 0, 표준편차 1. 거리·경사 기반 모델에 자주 필요
- Robust scaling: 중앙값과 IQR 사용. 극단값 영향이 상대적으로 작음
- 로그 변환: 오른쪽 꼬리가 긴 양수 변수의 왜도를 완화할 수 있음
- One-hot: 명목형 범주에 가짜 순서를 만들지 않음
- 순환형 시간: 시간대 23시와 0시가 가깝도록
sin/cos특성을 고려
트리 계열은 단조 변환과 스케일에 상대적으로 덜 민감하지만, kNN·k-means·SVM·정규화 선형모델은 변수 크기의 영향을 크게 받을 수 있다.
17. EDA에서의 도표 선택
단일 수치형 분포 → 히스토그램·상자그림
범주별 수치형 비교 → 그룹 상자그림
두 수치형 관계 → 산점도
범주 빈도 → 막대그래프
시간 변화 → 시계열 선그래프
상관관계는 인과관계를 증명하지 않는다. 집단을 합쳤을 때와 나눴을 때 관계 방향이 달라지는 Simpson 역설도 있으므로 중요한 층화 변수를 확인한다.
확인 문제
- Q1=10, Q3=30일 때 IQR 상한은?
- 스케일러의 평균·표준편차는 어느 데이터에서 학습해야 하는가?
- 명목형 범주에 가짜 순서를 만들지 않는 대표 인코딩은?
- 극단값에 상대적으로 강한 스케일링은?
- 결과 발생 후에만 알 수 있는 변수를 예측 특성에 넣은 문제는?