EDA

EDA (Exploratory Data Analysis) – 탐색적 데이터 분석

EDA는 데이터 과학 및 통계학 분야에서 데이터 세트를 초기 단계에서 시각화·요약·탐색함으로써 잠재적인 패턴, 이상치, 가설을 발견하고 이후의 모델링 및 분석 방향을 설정하는 방법론을 뜻한다. 이 용어는 통계학자 John W. Tukey(1977, Exploratory Data Analysis)에 의해 널리 알려졌으며, 현대 빅데이터·머신러닝 환경에서 분석 프로세스의 필수 단계로 자리 잡았다.


1. 정의

  • 탐색적 데이터 분석(Exploratory Data Analysis, EDA): 정형·비정형 데이터에 대해 통계적 요약, 그래프, 상관관계 분석 등을 수행하여 데이터의 구조와 특성을 파악하고, 분석 목적에 맞는 가설을 수립하거나 검증을 위한 전처리 방안을 도출하는 절차를 말한다.
  • 전통적인 가설 검증(hypothesis testing)과 달리, 데이터‑주도(data‑driven) 접근을 강조하며, “데이터가 말하는 바를 먼저 듣는다”는 원칙에 기반한다.

2. 역사

연도 사건
1960‑1970년대 데이터 컴퓨터화가 진행됨에 따라 초기 통계 그래프(히스토그램, 박스플롯 등) 사용
1977 John W. Tukey, Exploratory Data Analysis 출간 → “EDA” 용어와 체계적 방법론 제시
1990‑2000년대 R, SAS, SPSS 등 통계 소프트웨어에 EDA 전용 패키지 도입
2010‑현재 Python(pandas, seaborn, plotly)·Julia 등 오픈소스 언어가 EDA 도구를 확대, 자동화·시각화 파이프라인이 상용화

3. 주요 기법 및 도구

3.1 통계적 요약

  • 기술통계(mean, median, variance, quantiles 등)
  • 분포 추정(커널 밀도 추정, 히스토그램)

3.2 시각화

기법 목적 대표 도구
히스토그램·밀도 플롯 분포 확인 matplotlib, seaborn
박스플롯·바이올린 플롯 이상치·변동성 파악 ggplot2, plotly
산점도·버블 차트 변수 간 관계 탐색 pandas.plotting, Altair
상관행렬·히트맵 다변량 상관관계 시각화 seaborn.heatmap
시계열 플롯 시간 의존성 확인 tsfresh, Prophet

3.3 차원 축소·클러스터링

  • PCA, t‑SNE, UMAP: 고차원 데이터를 2‑3차원으로 투영하여 구조 파악
  • k‑means, DBSCAN: 잠재적 군집(Cluster) 탐색

3.4 데이터 정제·변환

  • 결측치 처리(삭제, 대체, 모델 기반 보정)
  • 이상치 탐지(IQR, Z‑score, Isolation Forest)
  • 스케일링·인코딩(표준화, 원-핫 인코딩 등)

4. 활용 분야

  • 비즈니스 인텔리전스: 고객 세분화·매출 트렌드 분석
  • 의료·생명과학: 임상 데이터 탐색·유전자 데이터 전처리
  • 금융: 리스크 요인 탐색·시계열 변동성 분석
  • 제조·공정 관리: 품질 이상 탐지·공정 최적화
  • 연구·학술: 가설 도출·데이터 기반 논문 설계

5. 주요 소프트웨어·패키지

언어 패키지 특징
Python pandas, seaborn, plotly, sweetviz, pandas‑profiling 데이터프레임 중심, 인터랙티브 리포트 자동 생성
R tidyverse, DataExplorer, ggplot2, shiny 통계 모델과 시각화가 일체형
Julia DataFrames.jl, StatsPlots.jl, Makie.jl 고성능 과학 컴퓨팅에 최적
SAS / SPSS 내장 EDA 모듈 기업·정부기관에 널리 사용
Tableau / Power BI 시각화 중심 GUI 비전문가용 드래그‑앤‑드롭 분석

6. 절차 예시 (Python 기반)

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

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

# 2. 기본 요약 통계
print(df.describe())

# 3. 결측치 시각화
sns.heatmap(df.isnull(), cbar=False, yticklabels=False)
plt.title('Missing Values Heatmap')
plt.show()

# 4. 변수 간 관계 (산점도 행렬)
sns.pairplot(df.select_dtypes(['float', 'int']))
plt.show()

# 5. 이상치 탐지 (IQR)
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
outliers = ((df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))).any(axis=1)
print(f'Detected {outliers.sum()} outliers')

위와 같은 흐름이 EDA의 전형적인 작업 흐름이며, 이후 파생된 인사이트를 바탕으로 모델링, 가설 검정, 의사결정 단계로 진행한다.


7. 관련 용어

  • Data Wrangling (데이터 정제): EDA 전후에 수행되는 데이터 가공 과정
  • Feature Engineering (특성 공학): 탐색 결과를 토대로 새로운 변수를 생성하는 작업
  • Confirmatory Data Analysis (CDA): 가설을 검증하는 단계, EDA와 대비되는 개념

8. 참고문헌

  1. Tukey, J. W. (1977). Exploratory Data Analysis. Addison‑Wesley.
  2. Wickham, H. (2014). Advanced R. Chapman & Hall/CRC – Chapter on “Exploratory Data Analysis”.
  3. McKinney, W. (2018). Python for Data Analysis. O'Reilly Media.
  4. Healy, K. (2018). Data Visualization: A Practical Introduction. Princeton University Press.

이 문서는 2026년 2월 기준 최신 데이터 과학 동향을 반영하여 작성되었습니다.

둘러보기

더 찾아볼 만한 주제