데이터 처리, 왜 필요할까?
데이터 분석을 공부하다 보면 자연스럽게 이런 생각을 하게 된다.
"데이터가 있으면 바로 분석하면 되는 거 아닌가?"
현실은 그렇지 않다. 실제 데이터는 대부분 분석 바로 쓰기에 적합하지 않은 상태로 존재한다. 값이 빠져 있거나, 단위가 제각각이거나, 필요한 정보가 여러 테이블에 흩어져 있는 경우가 대부분이다.
데이터 처리(Data Processing) 란, 분석 방법론을 적용하기 이전에 데이터를 분석에 맞는 형태로 가공하는 작업 전체를 뜻한다. 분석이 끝난 뒤 결과물을 시스템에 적용하기 위해 변환하는 작업도 여기에 포함된다.
상황에 따라 부르는 이름이 조금씩 달라진다.
- 전처리 (Pre-processing): 분석 전 사전 작업이라는 맥락에서 자주 쓰임
- 데이터 조작 (Manipulation): 데이터를 목적에 맞게 다루는 행위 전반
- 데이터 정제 (Cleaning): 오류·이상값·결측값을 제거하고 다듬는 작업에 집중할 때
어떤 이름으로 부르든 핵심은 같다. 분석이 잘 되도록 데이터를 준비하는 것.
데이터 처리의 8가지 작업
데이터 처리에는 여러 종류의 작업이 포함된다. 하나씩 어떤 상황에서 쓰이는지와 함께 살펴보자.
① 필터링 (Filtering)
분석에 필요한 데이터만 골라내는 작업
전체 데이터 중 분석 목적에 맞는 데이터만 선택하는 과정이다. 예를 들어, 전국 고객 데이터에서 "서울 거주 + 30대 + 최근 6개월 내 구매"인 고객만 추리는 것이 필터링이다.
분석의 범위를 명확히 정의하고, 불필요한 데이터를 미리 제거하면 이후 처리 속도와 분석 품질이 모두 올라간다.
② 정렬 (Sorting)
기준에 따라 데이터를 순서대로 나열하는 작업
날짜, 금액, 점수 등 특정 기준에 따라 오름차순/내림차순으로 정렬한다. 단순해 보이지만, 시계열 분석이나 순위 기반 분석에서는 정렬이 전제되어야 분석이 의미 있다.
③ 집계 (Aggregation)
데이터를 요약해서 분석 단위에 맞게 줄이는 작업
원시 데이터(raw data)를 분석 목적에 맞는 단위로 묶어 요약하는 과정이다. 예를 들어, 거래 건별 데이터를 월별 합계로 만들거나, 고객별 평균 구매금액을 계산하는 것이 집계다.
합계(SUM), 평균(AVG), 최댓값(MAX), 최솟값(MIN), 개수(COUNT) 등이 대표적인 집계 방법이다.
④ 데이터 변환 (Transformation)
데이터의 형식이나 구조를 바꾸는 작업
데이터의 타입(type)이나 형식(format)을 변환하거나, 구조 자체를 바꾸는 작업이다.
형식 변환 예시:
- 문자열로 저장된 날짜 "2024-01-15" → 날짜형(Date) 타입으로 변환
- 숫자 코드 1, 2, 3 → 카테고리 레이블 "남성", "여성", "기타" 로 변환
구조 변환 예시 (피벗 / 언피벗):
피벗(Pivot)은 행을 열로 회전시키는 작업이다.
| 1월 | A | 100 |
| 1월 | B | 200 |
| 2월 | A | 150 |
위처럼 세로로 길게 있는 데이터를 아래처럼 가로로 펼치는 것이 피벗이다.
| 1월 | 100 | 200 |
| 2월 | 150 | — |
반대로 가로로 넓은 데이터를 세로로 길게 만드는 것이 언피벗(Unpivot) 이다.
⑤ 표준화 및 정규화 (Standardization & Normalization)
서로 다른 변수의 단위와 크기를 통일하는 작업
나이(0~100)와 연봉(0~100,000,000)을 같은 분석에 쓰면 어떻게 될까? 크기 차이가 압도적으로 큰 연봉 변수가 분석 결과를 지배하게 된다. 이런 척도 차이를 제거하기 위해 표준화 또는 정규화를 적용한다.
표준화 (Z-score Standardization)
데이터를 평균 0, 표준편차 1의 분포로 변환한다.
z = (x − μ) / σ
- μ: 평균, σ: 표준편차
- 데이터가 정규분포에 가까울 때 적합
- 이상값이 있으면 평균·표준편차 자체가 왜곡되므로 주의
정규화 (Min-Max Normalization)
데이터를 0 ~ 1 사이의 값으로 변환한다.
x' = (x − min) / (max − min)
- 분포를 몰라도 쓸 수 있어 더 범용적
- 이상값이 있으면 min·max가 왜곡되어 대부분 값이 한쪽에 몰릴 수 있음
- 새로운 데이터가 기존 min/max 범위를 벗어나면 0~1을 유지할 수 없음
※ 어떤 걸 써야 할까?
알고리즘에 따라 다르다. KNN, SVM처럼 거리 기반 알고리즘은 정규화, 회귀 분석처럼 통계 가정이 있는 모델은 표준화를 더 많이 쓴다. 이상값이 있다면 둘 다 왜곡이 생기므로 먼저 이상값 처리를 하는 것이 원칙이다.
⑥ 파생변수 생성 (Derived Variable)
기존 변수를 조합하거나 변형해 새로운 변수를 만드는 작업
데이터에 있는 변수를 그대로 쓰는 것보다 변형했을 때 분석력이 높아질 수 있다.
예시:
| 생년월일 | 나이, 연령대(20대/30대...) | 연령 그룹 분석 |
| 구매일자, 가입일자 | 가입 후 첫 구매까지의 일수 | 행동 패턴 분석 |
| 키, 몸무게 | BMI = 몸무게 / 키² | 건강 지표 생성 |
| 매출, 비용 | 순이익 = 매출 − 비용 | 수익성 분석 |
파생변수는 도메인 지식이 있을수록 잘 만들 수 있다. 분석가의 창의성과 도메인 이해가 결합되는 작업이기도 하다.
⑦ 데이터 결합 (Merge / Join / Concatenation)
여러 테이블이나 데이터셋을 하나로 합치는 작업
실무에서 분석에 필요한 데이터는 한 곳에 다 모여 있는 경우가 거의 없다. 고객 정보, 구매 내역, 상품 정보가 각각 다른 테이블에 있다면 분석 전에 결합이 필요하다.
결합 방법:
| Merge / Join | 공통 키(key)를 기준으로 두 테이블을 가로로 연결. SQL의 JOIN과 같은 개념 |
| Concatenation | 동일한 구조의 데이터를 세로로 이어 붙임. 예: 월별 데이터를 연간 데이터로 합치기 |
※ Join 방식도 종류가 다양하다
- Inner Join: 두 테이블 모두에 있는 키만 포함
- Left Join: 왼쪽 테이블 기준, 오른쪽에 없으면 NULL
- Outer Join: 양쪽 모두 포함, 없는 쪽은 NULL
⑧ 데이터 정제 (Cleaning)
오류·불필요한 값·노이즈를 제거하는 작업
데이터를 수집하다 보면 다양한 이유로 오류가 섞여 들어온다.
정제 대상 예시:
- 오타나 잘못 입력된 값 (예: 나이가 999, 음수 가격)
- 중복 데이터
- 일관성 없는 표기 (예: "서울", "서울시", "Seoul" 을 하나로 통일)
- 분석 목적과 무관한 컬럼이나 행
정제는 이후 소개할 결측값 처리, 이상값 처리와 맞닿아 있는 작업이기도 하다.
흐름으로 이해하는 데이터 처리
8가지 작업이 있지만, 실제로는 정해진 순서가 있는 게 아니라 분석 목적에 따라 필요한 작업을 선택적으로 조합해서 쓴다. 대략적인 흐름을 정리하면 아래와 같다.
[원시 데이터 수집]
↓
필터링 → 필요한 범위의 데이터만 선택
↓
정제 → 오류·중복 제거, 결측값·이상값 처리
↓
변환 → 타입 변환, 피벗/언피벗, 파생변수 생성
↓
표준화/정규화 → 변수 간 척도 통일
↓
결합 → 여러 데이터 소스를 하나로
↓
집계 → 분석 단위에 맞게 요약
↓
[분석 준비 완료]
데이터 처리는 분석 결과의 품질을 결정하는 가장 기본적인 단계다. 아무리 좋은 알고리즘을 써도 데이터가 잘못 준비되어 있으면 결과는 믿을 수 없다.
'수학&통계학' 카테고리의 다른 글
| 통계 개념 (3) : 측정과 척도 및 기타 용어 (0) | 2026.05.10 |
|---|---|
| 통계 개념(2) : 모집단과 표본, 표본추출 (0) | 2026.05.10 |
| 통계 개념 (1) : 자료와 확률변수 (0) | 2026.05.10 |
| 데이터 분석 (3) : 분석 방법 (0) | 2026.05.10 |
| 데이터 분석 (2) : 결측값, 이상값 처리 (0) | 2026.05.10 |