🖥️ IT, 컴퓨터/📁 데이터 분석

[데이터 분석] 데이터 EDA(Exploratory Data Analysis)란? 탐색적 데이터 분석

김 홍시 2024. 11. 20.
반응형

데이터 EDA(Exploratory Data Analysis)는 데이터 분석의 초기 단계에서 데이터를 탐색하고 이해하기 위해 사용하는 기법과 과정입니다. EDA는 데이터를 시각화하고 요약하여 데이터에 숨겨진 패턴, 관계, 이상치 등을 발견하고, 분석에 적합한 방향성을 설정하는 데 도움을 줍니다. 자세히 설명하자면 다음과 같은 주요 단계와 기법을 포함합니다:


1. 데이터 로딩 및 구조 확인

EDA의 첫 번째 단계는 데이터를 로드하고 데이터의 기본 구조를 파악하는 것입니다.

  • 기본 정보 확인:
    • head(), tail()로 데이터 샘플 보기
    • 데이터의 행과 열 수 확인 (shape)
    • 데이터 타입 확인 (info() 또는 dtypes)
  • 결측값 확인:
    • isnull().sum()을 사용하여 결측값이 있는 열과 개수 파악
  • 기술 통계:
    • describe()로 각 변수의 기초 통계값(평균, 중앙값, 표준편차 등) 확인

2. 데이터 시각화

EDA에서는 데이터를 시각화하여 변수 간의 관계를 보다 명확히 이해합니다.

  • 단변수 분석 (Univariate Analysis):
    • 데이터 분포 확인: 히스토그램, 박스플롯
    • 데이터의 비대칭성(Skewness)과 첨도(Kurtosis) 분석
  • 이변수 분석 (Bivariate Analysis):
    • 변수 간 관계 확인: 산점도(Scatter Plot), 상관계수 행렬(Heatmap)
    • 범주형 변수의 비교: 막대 그래프, 점 플롯
  • 다변수 분석 (Multivariate Analysis):
    • 페어플롯(Pairplot): 여러 변수의 관계를 한눈에 확인
    • 주성분 분석(PCA): 데이터 차원 축소 및 시각화
  • 이상치(Outlier) 탐지:
    • 박스플롯을 사용하여 이상치 확인
    • 클러스터링 기법(DBSCAN 등)을 활용한 이상치 탐지

3. 변수 관계 분석

  • 상관 분석 (Correlation Analysis):
    • corr() 메서드를 사용하여 변수 간 상관계수 확인
    • Heatmap으로 상관 관계 시각화
  • 카테고리 데이터 분석:
    • 범주형 변수와 연속형 변수 간 관계 확인: 그룹별 평균, 중앙값 계산
    • 피벗 테이블 및 그룹화(groupby) 사용

4. 데이터 정제 및 전처리

EDA 중 발견한 문제를 해결하기 위해 데이터를 정제합니다.

  • 결측값 처리:
    • 제거: 결측값이 많은 행 또는 열 제거
    • 대체: 평균, 중앙값, 또는 예측 모델을 활용한 결측값 대체
  • 이상치 처리:
    • 제거 또는 대체
    • 로그 변환, 제곱근 변환 등을 사용해 이상치를 완화
  • 데이터 변환:
    • 스케일링(표준화 또는 정규화)
    • 변수 변환(로그, 제곱근 등)

5. EDA 도구 및 라이브러리

Python에서는 다양한 라이브러리를 활용하여 EDA를 수행할 수 있습니다.

  • Pandas: 데이터 로딩, 정리, 기술 통계 계산
  • NumPy: 수치 계산 및 데이터 변환
  • Matplotlib & Seaborn: 데이터 시각화
  • Plotly: 대화형 시각화
  • Scipy/Statsmodels: 통계적 분석
  • Sweetviz, Pandas-Profiling: 자동화된 EDA 보고서 생성

6. EDA의 목표

  • 데이터의 분포와 특성 이해
  • 변수 간 관계 파악
  • 이상치, 결측값 등의 데이터 문제 탐지
  • 모델링에 필요한 변수(Feature) 선정
  • 분석의 방향성을 설정

예시 코드

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 데이터 로드
df = pd.read_csv('data.csv')

# 데이터 요약
print(df.info())
print(df.describe())

# 결측값 시각화
sns.heatmap(df.isnull(), cbar=False)
plt.show()

# 히스토그램으로 변수 분포 확인
df['feature1'].hist(bins=20)
plt.show()

# 상관관계 시각화
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.show()

# 산점도
sns.scatterplot(x='feature1', y='feature2', data=df)
plt.show()

EDA는 데이터 분석 프로젝트의 성공을 위해 꼭 필요한 과정입니다. 데이터를 깊이 이해하면 이후의 분석이나 모델링 단계를 훨씬 효율적으로 진행할 수 있습니다. 

 

 

 

반응형

댓글