데이터 전처리 기법: 결측치 처리와 이상치 탐지
데이터 분석에서 데이터 전처리는 매우 중요한 단계입니다. 데이터가 깨끗하고 일관성 있어야 모델의 성능을 높일 수 있습니다. 이번 블로그에서는 데이터 전처리의 주요 기법 중 하나인 결측치 처리와 이상치 탐지에 대해 다루고, 파이썬 코드 예제를 통해 실제 데이터를 처리하는 방법을 소개합니다.
1. 결측치 처리
결측치(missing values)는 데이터셋에서 값이 누락된 상태를 말합니다. 결측치는 다양한 원인으로 발생할 수 있으며, 이를 처리하지 않으면 분석 결과에 악영향을 미칠 수 있습니다.
결측치 확인
우선 결측치를 확인하는 방법을 알아봅시다. pandas
라이브러리를 사용하여 데이터프레임을 생성하고 결측치를 확인할 수 있습니다.
import pandas as pd
# 샘플 데이터 생성
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
'Age': [25, 30, None, 35, 40],
'Salary': [50000, None, 60000, 70000, None]
}
df = pd.DataFrame(data)
# 결측치 확인
print(df.isnull())
print(df.isnull().sum())
위 코드에서는 None
값을 사용하여 결측치를 생성하였으며, isnull()
함수를 통해 결측치를 확인할 수 있습니다.
결측치 처리 방법
- 결측치 제거: 결측치가 포함된 행 또는 열을 삭제합니다.
- 결측치 대체: 결측치를 특정 값으로 대체합니다. 평균, 중앙값, 최빈값 등으로 대체할 수 있습니다.
# 결측치 제거
df_dropped = df.dropna()
print("결측치 제거:\n", df_dropped)
# 결측치 대체 (평균값으로 대체)
df_filled = df.fillna(df.mean(numeric_only=True))
print("결측치 대체:\n", df_filled)
2. 이상치 탐지
이상치(outliers)는 데이터 분포에서 다른 값들과 동떨어진 값을 의미합니다. 이상치는 분석 결과를 왜곡할 수 있으므로 이를 탐지하고 처리하는 것이 중요합니다.
이상치 탐지 방법
이상치를 탐지하는 다양한 방법이 있습니다. 여기서는 Z-Score와 IQR(Interquartile Range) 방법을 소개합니다.
Z-Score 방법
Z-Score는 각 데이터가 평균으로부터 얼마나 떨어져 있는지를 나타내는 값입니다. 일반적으로 Z-Score가 3 이상인 데이터는 이상치로 간주됩니다.
import numpy as np
# Z-Score 계산
df['Age_zscore'] = (df['Age'] - df['Age'].mean()) / df['Age'].std()
df['Salary_zscore'] = (df['Salary'] - df['Salary'].mean()) / df['Salary'].std()
# Z-Score가 3 이상인 값 탐지
print(df[(df['Age_zscore'].abs() >= 3) | (df['Salary_zscore'].abs() >= 3)])
IQR 방법
IQR은 사분위수 범위를 사용하여 이상치를 탐지하는 방법입니다. Q1(1사분위수)와 Q3(3사분위수)를 사용하여 IQR을 계산하고, 이를 기반으로 이상치를 탐지합니다.
# IQR 계산
Q1 = df['Age'].quantile(0.25)
Q3 = df['Age'].quantile(0.75)
IQR = Q3 - Q1
# IQR 범위를 벗어나는 값 탐지
age_outliers = df[(df['Age'] < (Q1 - 1.5 * IQR)) | (df['Age'] > (Q3 + 1.5 * IQR))]
print("Age 이상치:\n", age_outliers)
결론
이번 블로그에서는 데이터 전처리의 주요 기법인 결측치 처리와 이상치 탐지에 대해 알아보았습니다. 결측치를 확인하고 적절히 처리하는 방법, 그리고 Z-Score와 IQR을 사용하여 이상치를 탐지하는 방법을 파이썬 코드 예제와 함께 설명했습니다. 데이터 전처리는 데이터 분석의 중요한 단계이므로, 이를 통해 데이터의 품질을 높이고 분석 결과의 신뢰성을 확보할 수 있습니다.
'DataScience' 카테고리의 다른 글
데이터 프레임의 기초 통계 계산: 평균,중앙값,최대,최소,표준편차,분산,사분위수 (0) | 2024.08.01 |
---|---|
데이터프레임 기본 조작 : 행선택, 열선택, 인덱싱, 슬라이싱 (0) | 2024.08.01 |
파이썬으로 OpenAI GPT-3 사용하기 (0) | 2024.08.01 |
서울시 강서구 공동 주택 현황 데이터 분석 (20230905) (0) | 2023.09.08 |
날씨 데이터 분석 GlobalWeatherRepository (0) | 2023.09.04 |