본문 바로가기

데이터 전처리란? 쉽게 이해하는 데이터 정리 방법!

by 애덤더미 2025. 2. 26.
반응형

 

◎ 데이터 전처리(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

☞  여기서 문제가 될 수 있는 부분 ☜

  1. 고객명이 NULL(비어 있음) → 고객 정보가 없는 주문이 존재함
  2. 주문일자의 형식이 제각각2024.03.01, 03-02-2024, 2024/03/04 등 일관성이 없음
  3. 총금액이 음수(-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: 조건) 사용

 

데이터 분석을 제대로 하려면, 데이터를 먼저 정리하는 것이 중요해요!

여러분도 실무에서 데이터를 다룰 때, 데이터가 깔끔한지 한 번 확인해 보시는건 어떨까요! :)

 

반응형