탐색적 데이터 분석(EDA) 개요
탐색적 데이터 분석(EDA)은 데이터를 이해하고 모델링 이전에 데이터를 정제하기 위한 필수 과정입니다.
EDA를 통해 데이터의 분포, 이상치, 결측치, 상관관계 등을 파악하여 데이터 전처리 및 모델 설계의 방향성을 결정할 수 있습니다.
1. 데이터 구조와 개요 확인
EDA의 첫 번째 단계는 데이터셋의 전반적인 구조를 파악하는 것입니다.
데이터 크기 확인: 데이터셋의 행(row)과 열(column) 개수를 파악하여 전체적인 데이터 구조를 이해.
print(data.shape) # 행(row)과 열(column) 개수데이터 타입 확인: 각 열의 데이터 유형(수치형, 범주형, 날짜 등)을 파악.
print(data.info()) # 데이터 타입 및 결측치 정보샘플 데이터 확인: 데이터의 일부를 출력하여 데이터의 내용과 특성을 살펴봄.
print(data.head()) # 상위 5개 데이터 확인결측치 탐지: 각 열에 결측값이 얼마나 있는지 확인.
print(data.isnull().sum())
2. 수치형 데이터 분석
수치형 데이터의 분포와 기본 통계량을 확인합니다.
기초 통계량 확인: 평균, 중앙값, 최소값, 최대값, 분산 등을 통해 데이터 분포를 파악.
print(data.describe())분포 시각화: 히스토그램과 KDE(Kernel Density Estimate)를 통해 수치형 데이터의 분포를 시각적으로 분석.
import seaborn as sns import matplotlib.pyplot as plt sns.histplot(data['column_name'], kde=True) plt.show()왜도(Skewness) 분석: 데이터가 비대칭적인지 확인하여 변환 필요성을 검토.
from scipy.stats import skew skewness = data.skew() print(skewness)
3. 범주형 데이터 분석
범주형 데이터의 클래스 분포를 확인하고, 클래스 불균형 여부를 파악합니다.
빈도표(Frequency Table): 각 클래스별 데이터 개수를 확인.
print(data['categorical_column'].value_counts())범주형 데이터 시각화: 막대그래프를 활용한 시각화.
sns.countplot(data=data, x='categorical_column') plt.show()
4. 결측치 분석
결측값이 데이터에 미치는 영향을 분석하고, 적절한 처리를 결정합니다.
결측치 비율 확인
missing = data.isnull().sum() missing_percentage = (missing / len(data)) * 100 print(pd.DataFrame({'Missing Values': missing, 'Percentage': missing_percentage}))결측치 시각화
import missingno as msno msno.matrix(data) plt.show() msno.heatmap(data) plt.show()
5. 이상치 탐지 (Outlier Detection)
이상치를 탐지하여 데이터 품질을 개선합니다.
Boxplot 시각화
sns.boxplot(data['column_name']) plt.show()IQR(Interquartile Range) 활용
Q1 = data['column_name'].quantile(0.25) Q3 = data['column_name'].quantile(0.75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR outliers = data[(data['column_name'] < lower_bound) | (data['column_name'] > upper_bound)] print(outliers)
6. 상관관계 분석 (Correlation Analysis)
변수 간의 관계를 분석하여 중요한 변수를 식별합니다.
상관계수 계산: 변수 간 상관관계를 파악.
correlation_matrix = data.corr() print(correlation_matrix)히트맵 시각화: 상관계수를 히트맵으로 표현하여 변수 간 관계를 한눈에 확인.
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm') plt.show()
7. 목표 변수(Target Variable) 분석
타겟 변수의 분포와 특징을 분석하여 문제 정의에 적합한지 검토합니다.
- 타겟 변수의 분포 확인: 회귀(regression) 또는 분류(classification) 문제에 적합한지 확인.
sns.histplot(data['target'], kde=True) plt.show()
EDA의 결과 활용
EDA의 분석 결과를 바탕으로 데이터 전처리 및 모델링 방향성을 결정할 수 있습니다.
- 결측치 처리 방법 결정: 삭제, 대체, 또는 모델 기반 처리.
- 이상치 처리 방향 결정: 제거, 대체, 또는 무시.
- 특성 선택 또는 생성: 중요한 변수 선택 및 새로운 피처 생성.
- 데이터 변환 필요성 확인: 로그 변환, 스케일링, 또는 표준화를 적용할지 결정.
EDA는 데이터를 이해하고 정제하는 데 있어 가장 중요한 단계이며, 모델링 성능의 기반을 다지는 핵심 과정입니다.
'Python > Machine Learning' 카테고리의 다른 글
| [TIL] 머신러닝 파이프 라인 개념 (1) | 2024.12.24 |
|---|---|
| [TIL] 데이터 전처리 인코딩, 스케일링 (1) | 2024.12.23 |
| [TIL] 241219 머신러닝 워크플로우 정리 (3) | 2024.12.19 |
| 챕터2 주택가격예측 과제설명 (3) | 2024.12.18 |
| [머신러닝] 지도학습 : 회귀모델 (1) | 2024.12.16 |