◎ 데이터 전처리(Preprocessing)란?
요즘 AI 시대에는 데이터가 곧 경쟁력이죠. AI 모델을 학습시키거나, 데이터 기반 의사 결정을 내리기 위해서는 정제된 데이터가 필수입니다. 하지만 원본 데이터는 언제나 깔끔하지 않아요.
※ 예를 들어, 머신러닝을 위한 고객 데이터를 수집했더니?
- 누락된 값이 많고 (NULL 값 존재)
- 숫자 범위가 비정상적 (-10000 같은 이상값)
- 날짜 형식이 제각각 (2024-03-01, 03-02-2024, 2024/03/04 등)
이런 데이터를 그대로 AI 모델에 넣으면 정확도가 떨어지고, 잘못된 결과를 초래할 수도 있습니다.
그래서 데이터를 분석 가능한 형태로 정리하고, 모델이 올바르게 학습할 수 있도록 만드는 과정을
데이터 전처리(Preprocessing)
라고 해요. 최근 회사 일이 바빠서 블로그를 잠시 쉬었는데, 다시 글을 써보니 감회가 새롭네요. 오랜만에 돌아온 만큼 실무에서도 중요하게 다뤄지는 데이터 전처리에 대해 정리해보겠습니다!
◎ 데이터 전처리가 중요한 이유
데이터는 원래부터 깔끔한 상태가 아닙니다.
※ 예를 들어, 온라인 쇼핑몰의 주문 데이터를 분석하려고 한다면?
주문번호 | 고객명 | 주문일자 | 총금액 |
1001 | 홍길동 | 2024.03.01 | 35,000 |
1002 | 김철수 | 03-02-2024 | 50,000 |
1003 | NULL | 2024-03-03 | 20,000 |
1004 | 이영희 | 2024/03/04 | -15,000 |
☞ 여기서 문제가 될 수 있는 부분 ☜
- 고객명이 NULL(비어 있음) → 고객 정보가 없는 주문이 존재함
- 주문일자의 형식이 제각각 → 2024.03.01, 03-02-2024, 2024/03/04 등 일관성이 없음
- 총금액이 음수(-15,000) → 정상적인 주문인지 확인이 필요함
이 데이터를 그대로 분석하면 엉뚱한 결과가 나올 수도 있어요. 그래서 데이터를 정리하는 과정이 필요합니다!
◎ 데이터 전처리 실전 예제 ( SQL vs Python )
1️⃣ 비어 있는 값(NULL) 처리하기
▣ SQL에서
☞ COALESCE()를 사용해 NULL 값을 처리할 수 있어요.
SELECT 주문번호, COALESCE(고객명, '알 수 없음') AS 고객명 FROM 주문테이블;
※ 고객명이 NULL이면 "알 수 없음"으로 변경
▣ Python (pandas)에서
☞ fillna()를 사용해 NULL 값을 변경할 수 있어요.
import pandas as pd
df['고객명'] = df['고객명'].fillna('알 수 없음')
※ 고객명이 없는 경우 "알 수 없음"으로 채움
2️⃣ 날짜 형식 통일하기
▣ SQL에서
☞ CAST() 또는 TO_DATE() 함수를 사용하면 날짜를 변환할 수 있어요.
SELECT 주문번호, CAST(주문일자 AS DATE) AS 주문일자 FROM 주문테이블;
※ 날짜 데이터를 통일된 형식으로 변환
▣ Python (pandas)에서
☞ pd.to_datetime()을 사용하면 날짜를 자동으로 변환할 수 있어요.
df['주문일자'] = pd.to_datetime(df['주문일자'])
※ 여러 날짜 형식을 자동으로 통일 (YYYY-MM-DD 형식으로 변환)
3️⃣ 이상한 값(음수, 너무 큰 값) 처리하기
▣ SQL에서
☞ 음수 값이 있는 경우 0으로 변경하거나, 특정 조건에 맞는 값만 선택할 수 있어요.
SELECT * FROM 주문테이블 WHERE 총금액 >= 0;
※ 총금액이 0 이상인 데이터만 조회
▣ Python (pandas)에서
☞ apply()를 사용하면 특정 조건을 적용할 수 있어요.
df['총금액'] = df['총금액'].apply(lambda x: x if x >= 0 else 0)
※ 음수 금액을 0으로 변경
◎ 정리하자면, 데이터 전처리는 필수!
✔ 비어 있는 값(NULL) 처리 → COALESCE(), fillna() 등 사용
✔ 날짜 형식 통일 → CAST(), pd.to_datetime() 활용
✔ 이상값 처리 → WHERE, apply(lambda x: 조건) 사용
데이터 분석을 제대로 하려면, 데이터를 먼저 정리하는 것이 중요해요!
여러분도 실무에서 데이터를 다룰 때, 데이터가 깔끔한지 한 번 확인해 보시는건 어떨까요! :)
'※ 소소한 IT' 카테고리의 다른 글
Model Context Protocol(MCP)란? LLM 기반 지능형 에이전트를 위한 맥락 유지 구조와 구축 방법 (1) | 2025.04.10 |
---|---|
Grafana와 InfluxDB 연계: 실시간 데이터 시각화 및 대시보드 구성 가이드 (0) | 2025.01.02 |
Windows에서 PowerShell로 InfluxDB와 CLI 설치: 초보자를 위한 가이드 (1) | 2024.12.20 |
톰캣과 IIS 공존 설정 방법: 포트 분리 vs Reverse Proxy (0) | 2024.12.18 |
REST API 설계부터 Swagger 문서화까지: 실무 팁과 예제 총정리 (0) | 2024.11.27 |