kakao tech bootcamp/딥다이브

데이터 분석 전에 수행해야 하는 전처리 과정과 데이터 품질을 향상시키는 방법

SUIN2 2025. 2. 14. 19:22

 

데이터 전처리: 원시 데이터를 분석과 모델링에 적합하도록 정리하고 변환하는 작업

 

“데이터 과학의 80%는 데이터 클리닝에 소비되고, 나머지 20%는 데이터 클리닝하는 시간을 불평하는 데 쓰인다.”
- Kaggle 창립자 Anthony Goldbloom


분석의 80% 시간을 데이터 수집 및 전처리에 사용한다고 한다. 실무에 사용되는 데이터셋은 바로 분석이 불가능할 정도로 지저분(messy)하다.

아래와 같은 이유로, 분석이 가능한 상태로 만들기 위해 전처리 단계가 중요하다.

  1. 여러 데이터 소스 활용: 테이블 스키마나 Label, Type 등이 상이하여, 분석을 위해 일관적인 방식으로 통합/변환 필요
  2. 데이터 기록/수집의 누락 및 오류 (Missing Value, Errors, typo 발생)
  3. 자연스러운 혹은 기계적으로 발생하는 이상치 or 극단치
  4. 분석 목적에 맞지 않은 변수 혹은 분포

데이터 전처리를 통해 데이터를 제거하고, 결측치나 이상치를 처리하여 데이터의 질을 향상시킬 수 있다.

 

 

몇 가지 전처리 예시로, 중복값 제거, 결측값 보정, 데이터 연계/통합, 노이즈 제거, 데이터 구조 변경(차원 변경), 데이터 벡터화, outlier detection, feature engineering 등이 있다.

 

데이터 정리

01 데이터 구조 확인

올바른 분석 뱡향을 설정하기 위해 데이터가 어떻게 구성되어 있는지 확인한다.

  1. 데이터의 행(row)과 열(column) 개수 확인
  2. 각 변수(칼럼)의 데이터 타입(숫자형, 문자형, 날짜형 등) 확인
  3. 결측치 및 이상값 존재 여부 파악

 

02 데이터 정리 및 변환

데이터 분석 시 혼란을 막고 오류 발생 가능성을 낮추기 위해 일관된 데이터 형태로 정리한다.

  1. 데이터 타입 변환 (ex. 날짜 데이터를 datetime 형식으로 변환)
  2. 중복 데이터 제거
  3. 문자열 정리 (ex. 서울, SEOUL, seoul → 통일)
  4. 불필요한 컬럼 제거

 

03 결측치 처리

결측값이 많으면 분석이 왜곡될 수 있기 때문에 누락되거나 유효하지 않은 데이터를 식별하고 보간된 값으로 대체한다.

  1. 샘플이 많거나 결측치가 소수일 경우: 단순 제거
  2. 수치형의 경우 평균이나 중앙값으로 대체하거나, 범주형인 경우 mode 값 또는 특정 값(”Unknown”)으로 대체
  3. 간단한 예측 모델로 대체하는 방식
✏️ 결측치를 처리할 때 고려할 점

1. 도메인 지식은 유용하게 사용된다. 결측치의 원인을 파악하여 사전에 발생하지 않도록 조치한다거나, 의미상으로 어떤 값으로 메꾸는 것이 맞는지에 대한 배경지식이 보다 적절한 의사결정을 할 수 있도록 한다.
2. 특히 숫자 0과 null과 같은 결측치는 완전히 다른 개념이니 유의해야 한다.
3. 만약 target에 결측치가 있다면 imputation이 아닌 drop으로 처리하도록 한다.

 

04 이상치 처리

마찬가지로 분석이 왜곡될 수 있기 때문에 이상값을 식별한 후 제거하거나 통계적으로 추정된 값으로 대체한다.

  1. 일반적으로 표준점수로 변환 후 -3 및 +3 제거 (Z-score)
    : 표준 점수 이용할 경우 평균이 0, 표준편차가 1인 분포로 변환한 후 +3 이상이거나 -3 이하인 경우 극단치로 처리
  2. IQR 방식
  3. 도메인 지식 이용하거나 Binning(구간화) 처리하는 방식

 

데이터 변환

01 데이터 분포 변환

대부분의 모델은 변수가 특정 분포를 따른다는 가정을 기반으로 한다. 예를 들어 선형 모델의 경우, 설명 및 종속변수 모두가 정규분포와 유사할 경우 성능이 높아지는 것으로 알려져 있다. 

  1. log: 비대칭적인(오른쪽으로 긴 꼬리를 가진) 데이터를 정규 분포에 가깝게 만듦
  2. exp: 왼쪽으로 긴 꼬리를 가진 데이터를 정규 분포에 가깝게 만듦 (로그 변환의 역변환)
  3. sqrt: 오른쪽으로 치우친 데이터를 변환 (로그와 비슷하지만 로그만큼 급격한 변화는 없음)

 

02 데이터 단위 변환

데이터의 스케일이 다를 경우, 특히 거리를 기반으로 분류하는 모델(KNN 같은)에 부정적인(과도한) 영향을 미치므로, 스케일링을 통해 모든 변수의 단위를 일정하게 맞추는 작업을 진행해야 한다. 대부분의 통계 분석 방법이 정규성 가정을 기반으로 하므로 완벽하지 않더라도 최대한 정규분포를 변환하는 노력이 필요하다.

  1. Scaling: 평균이 0, 분산이 1인 분포로 변환 (표준화)
  2. MinMax Scaling: 특정 범위(ex. 0~1)로 모든 데이터를 변환
  3. Box-Cox: 여러 k 값 중 가장 작은 SSE 선택
  4. Robust_Scaling: median, IQR 사용 (outlier 영향 최소화)

 

그 외 구조 관련 작업

데이터셋을 결합, 재구성, 범주화하는 용도로 자주 사용되며, 세부적으로 집중된 정보를 획득할 수 있다.

  1. 데이터 필터링: 조건에 따른 추출
  2. 데이터 정렬: sort_values
  3. 데이터 그룹화: groupby
  4. 데이터 피벗: pivot_table
  5. 데이터 병합: merge
  6. 데이터 분할: split
  7. 데이터 샘플링: sample
  8. 데이터 집계: agg
  9. 차원 축소: 고차원 데이터일 경우, 다중공선성이 있을 경우 등

 

결론

데이터 분석 전에 수행하는 데이터 전처리 기법은 데이터 정리(결측치/이상치), 데이터 변환(분포/단위), 구조 관련 작업(그룹화, 집계 등)이라는 세 가지 주요 범주로 분류할 수 있다.

적절한 데이터 전처리 기법을 선택하는 것은 신뢰성 있고, 데이터의 품질을 향상시켜 정확한 결과를 달성하는 데 매우 중요하다.

  1. 데이터 일관성 확보
  2. 데이터 정확성 및 신뢰성 향상

여기까지 “데이터 분석” 전에 수행하는 전처리 과정이다. 머신러닝과 같은 그 이상의 기계 학습 시에는 encoding, feature engineering 등의 추가적인 전처리 과정이 필요하다.

 

Reference

데이터 전처리 기법 및 단계

Python 데이터 분석 실무

데이터 전처리란? - 데이터 전처리 정의, 작업 단계, 순서 | 모두의연구소

데이터 분석을 위한 5단계 절차

데이터 전처리의 개념과 중요성