데이터 수집과 EDA 전략 시리즈 – 6화. 데이터 시각화 실전 가이드: matplotlib, seaborn을 활용한 EDA 시각화
데이터는 말이 없다.
하지만 데이터는 시각화라는 ‘언어’를 통해 이야기할 수 있다.
탐색적 데이터 분석(EDA) 과정에서 **데이터를 보는 것(Visualization)**은
숫자만으로는 결코 보이지 않는 패턴, 트렌드, 이상치를 직관적으로 보여준다.
이번 글에서는 Python의 대표적 시각화 도구인
matplotlib, seaborn을 중심으로
EDA에서 활용할 수 있는 다양한 실전 기법을 심층적으로 정리한다.
1. 왜 EDA에서 시각화가 필수인가?
EDA의 목적은 데이터를 ‘이해’하는 것이다.
숫자와 표로는 숨겨진 구조를 놓칠 수 있다.
시각화는 데이터 분석의 다음과 같은 역할을 한다:
- 변수 분포, 밀도 파악
- 이상치(Outlier) 감지
- 변수 간 상관성 탐색
- 그룹 간 차이 시각적 비교
또한 데이터 전문가와 비전문가(경영진, 마케팅팀 등) 간의
‘데이터 커뮤니케이션 도구’로서도 매우 중요한 역할을 한다.
✅ 분석가는 데이터 분석가이자, 데이터 스토리텔러다.
2. matplotlib vs seaborn
Python의 대표적인 시각화 라이브러리는 두 가지다.
라이브러리특징
matplotlib | 가장 기본, 커스터마이징 최고 수준 |
seaborn | matplotlib 기반 고급 wrapper, 통계 그래프 최적화 |
실무에서는 seaborn으로 빠르게 시각화하고
필요시 matplotlib으로 커스터마이징하는 방식이 일반적이다.
import matplotlib.pyplot as plt
import seaborn as sns
3. EDA 시각화 유형별 실전 예시
(1) 변수 분포 확인: histogram, KDE plot
sns.histplot(df['Age'], kde=True, bins=30)
plt.title('나이 분포와 커널 밀도 추정')
plt.show()
- Age 데이터의 분포 확인
- kde=True 옵션으로 부드러운 커널 곡선 추가
(2) 이상치 탐지: boxplot
sns.boxplot(x=df['Fare'])
plt.title('운임(Fare) 이상치 탐색')
plt.show()
- 중간값, 사분위수, 이상치(점) 시각적 확인 가능
(3) 범주형 변수 비교: countplot
sns.countplot(x='Pclass', hue='Survived', data=df)
plt.title('선실등급(Pclass)별 생존자 분포')
plt.show()
- Pclass(1등석, 2등석, 3등석)별 생존 여부 비교
- 조건부 막대 그래프로 그룹 간 차이 확인
(4) 변수 간 관계 탐색: scatterplot, pairplot
sns.scatterplot(x='Age', y='Fare', hue='Survived', data=df)
plt.title('나이 vs 운임 (생존자 구분)')
plt.show()
sns.pairplot(df[['Age', 'Fare', 'Pclass', 'Survived']], hue='Survived')
- 변수 간 상호작용, 군집, 경계선 여부 시각 탐색
- pairplot은 여러 변수의 산점도를 한 번에 확인
(5) 상관계수 Heatmap
plt.figure(figsize=(8,6))
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('변수 간 상관관계 Heatmap')
plt.show()
- 모든 수치형 변수 간 상관성을 직관적으로 확인
4. 고급 시각화 기법 추천
(1) violin plot
sns.violinplot(x='Pclass', y='Age', data=df)
plt.title('선실등급별 나이 분포')
plt.show()
- boxplot + 분포 밀도 결합 그래프
- 그룹 내 분포 형태까지 표현 가능
(2) jointplot
sns.jointplot(x='Age', y='Fare', data=df, kind='hex')
- 두 변수의 joint distribution + 각 변수의 marginal distribution
- hex 옵션으로 밀도 기반 격자 표시 가능
5. 실무 시각화 팁
- 제목, 축 이름, 레이블을 반드시 추가하자
- 색상은 정보를 강조하는 도구로 사용하되 과용하지 말 것
- 데이터 전처리가 충분히 끝난 상태에서 그릴 것
- 항상 데이터의 이상치, 결측치 여부를 인지한 후 시각화
- seaborn 스타일은 기본적으로 예쁘지만 필요시 plt.style.use('ggplot') 등으로 커스터마이징 가능
6. 분석가는 ‘그림을 그리는 사람’이어야 한다
좋은 분석가는 단지 코드를 잘 짜는 사람을 넘어,
데이터에서 인사이트를 시각적으로 전달하는 능력을 갖춘 사람이다.
시각화는 데이터를 이해하고,
동료와 고객, 조직 내 경영진에게 설명하는 최고의 도구다.
“데이터는 숫자 속에 있지만,
통찰은 그래프 속에 있다.”
다음 편 예고
데이터 수집과 EDA 전략 시리즈 – 7화. EDA 자동화와 리포트 생성: pandas-profiling, sweetviz 실전 활용
반복적인 EDA 작업을 코드 한 줄로 자동화할 수 있다면?
pandas-profiling, sweetviz 등 자동 EDA 리포트 생성 툴을 활용한 실전 예제를 소개한다.