GDG on Campus: SSWU 6th/Winter Blog Challenge

[Winter Blog Challenge] 개발자를 위한 데이터 전처리 팁 (Chapter Member 한예원)

gdgoc-sswu 2025. 2. 24. 03:51

안녕하세요! GDGoC SSWU Chapter Member 한예원입니다.

저는 개발자를 위한 데이터 전처리 팁을 소개해 드리려고 합니다.

 

 

1. 데이터 전처리의 중요성

 

데이터 전처리는 AI/ML 프로젝트의 성패를 좌우하는 핵심 과정입니다. 아무리 뛰어난 알고리즘이라도 전처리가 제대로 이루어지지 않은 데이터를 사용한다면 성능은 기대에 미치지 못할 가능성이 큽니다. 반면, 잘 처리된 데이터는 복잡한 알고리즘보다도 더 큰 효과를 낼 수 있습니다. 이 글에서는 데이터 전처리의 주요 과정과 실용적인 팁을 공유하려 합니다.

 

2. 데이터 전처리 단계와 팁

 

데이터를 탐색하고, 결측값이나 이상치를 처리하여, 필요한 경우 데이터를 변환하거나 새로운 특징을 생성해냅니다. 데이터 전처리의 주요 단계와 각 단계에서 활용할 수 있는 팁, 라이브러리, 코드 예제를 소개해드리겠습니다.

 

  • 데이터 탐색 (EDA, Exploratory Data Analysis)

데이터를 시각화하고 요약 통계를 확인하며, 데이터의 분포와 이상값(outliers)을 파악하는 데 중점을 둡니다.

 

Tip:

• Pandas를 사용하여 데이터를 탐색하고, Matplotlib와 Seaborn으로 시각화합니다.

• 이상값이나 결측값의 위치를 파악하기 위해 히스토그램, 상자 그림(Box Plot)을 활용합니다.

 

<예제 코드>

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

 

데이터 탐색

print(df.describe())

sns.histplot(df['column'])

plt.show()

 

 

  • 결측값 처리

결측값의 유형

1. MCAR (Missing Completely At Random): 특정 이유 없이 무작위로 누락된 데이터.

2. MAR (Missing At Random): 다른 변수의 값에 따라 결측이 발생.

3. MNAR (Missing Not At Random): 관찰할 수 없는 이유로 결측이 발생.

 

결측값 처리 방법

• 삭제: 결측값이 적다면 해당 행이나 열을 제거합니다.

  대체: 평균, 중앙값, 최빈값으로 채우거나 예측 모델을 사용해 값을 대체합니다.

 

Tip:

• Scikit-learn의 SimpleImputer를 활용하면 효율적으로 결측값을 처리할 수 있습니다.

• 특정 도메인에서는 결측값을 0이나 특정 값으로 채우는 것도 고려할 수 있습니다.

 

<예제 코드>

from sklearn.impute import SimpleImputer

 

imputer = SimpleImputer(strategy='mean') # 평균값으로 대체

df['column'] = imputer.fit_transform(df[['column']])

 

  • 데이터 정규화와 스케일링

데이터의 범위를 조정하면 머신러닝 모델이 값의 크기에 영향을 받지 않도록 할 수 있습니다.

 

방법

  1. 정규화 (Normalization): 데이터를 [0, 1] 범위로 변환.
  2. 표준화 (Standardization): 데이터를 평균 0, 표준편차 1로 변환.

Tip:

• 정규화는 Min-Max Scaling을, 표준화는 Z-score Scaling을 사용합니다.

• Scikit-learn의 StandardScaler와 MinMaxScaler를 활용하세요.

 

<예제 코드>

from sklearn.preprocessing import StandardScaler

 

scaler = StandardScaler()

scaled_data = scaler.fit_transform(df[['column']])

 

 

  • 이상치 처리

이상치는 데이터의 분포에서 벗어난 값으로, 모델 성능을 떨어뜨릴 수 있습니다.

 

이상치 탐지 방법

• 시각화: Box Plot, Scatter Plot을 활용합니다.

• 통계적 방법: IQR(Interquartile Range) 또는 Z-score를 사용해 이상치를 탐지합니다.

 

처리 방법

• 이상치를 제거하거나 적절한 값으로 변환합니다.

 

Tip :

이상치를 무조건 제거하기보다 데이터의 맥락을 고려하여 결정하세요 !

 

 

  • 범주형 데이터 처리

머신러닝은 모델 숫자 데이터를 더 잘 처리하기 때문에, 범주형 데이터를 수치로 변환하는 작업이 필요합니다.

 

방법

  1. 라벨 인코딩 (Label Encoding): 범주형 데이터를 숫자로 변환.
  2. 원-핫 인코딩 (One-Hot Encoding): 각 범주를 독립적인 열로 변환.

<예제 코드>

import pandas as pd

One-Hot Encoding

encoded_df = pd.get_dummies(df, columns=['column'])

 

 

  • 특징 선택 및 생성

특징 선택 : 모델 성능을 높이기 위해 불필요한 변수를 제거하는 작업입니다. 상관관계 분석이나 PCA(주성분 분석)를 활용합니다.

특징 생성 : 여러 열의 데이터를 조합해 새로운 특징을 생성할 수 있습니다. 예를 들어, 날짜 데이터를 연도, 월, 일로 분리하면 더 유의미한 정보를 얻을 수 있습니다.

 

 

결론 !

올바른 전처리 과정은 단순히 데이터를 깨끗하게 만드는 것을 넘어, 모델이 더 효율적으로 학습하고 좋은 성능을 발휘할 수 있는 환경을 제공합니다. 개발자는 데이터 전처리의 중요성을 인지하고 꾸준히 실습하며 실무 역량을 키워야 합니다. 또한, 자동화 도구와 라이브러리를 활용해 생산성을 높이는 것도 중요합니다.

감사합니다!