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. 참고문헌
- Tukey, J. W. (1977). Exploratory Data Analysis. Addison‑Wesley.
- Wickham, H. (2014). Advanced R. Chapman & Hall/CRC – Chapter on “Exploratory Data Analysis”.
- McKinney, W. (2018). Python for Data Analysis. O'Reilly Media.
- Healy, K. (2018). Data Visualization: A Practical Introduction. Princeton University Press.
이 문서는 2026년 2월 기준 최신 데이터 과학 동향을 반영하여 작성되었습니다.