데이터 분석을 하다 보면, 수치보다 더 직관적인 것이 바로 시각화이다.
숫자만으로는 보이지 않던 패턴이, 시각화를 통해 명확하게 드러나는 순간을 경험해 보았을 것이다 :)
이 글에서는 파이썬에서 가장 널리 사용되는 시각화 라이브러리인 matplotlib과 seaborn,
그리고 그 안에서 많이 쓰이는 함수들인 distplot, scatterplot, boxplot의 차이와 사용법을 정리해 보았다.
데이터 시각화를 시작할 때 가장 먼저 마주치는 질문 중 하나가
"matplotlib이 좋을까? seaborn이 더 나을까?" 일 것이다.
두 라이브러리는 모두 파이썬에서 강력한 시각화 기능을 제공하지만, 목적과 난이도, 커스터마이징 유무에 따라 적절한 선택이 달라질 수 있다.
아래 표를 통해 각각의 특징과 차이를 비교해 보자.
| 구분 | matplotlib | seaborn |
|---|---|---|
| 탄생 | 기본 시각화 도구 (저수준 API) | matplotlib 기반 고수준 시각화 라이브러리 |
| 특징 | 커스터마이징 자유도 매우 높음 | 통계 시각화에 최적화, 코드가 더 간단함 |
| 사용 목적 | 세밀한 조작, 복잡한 도표 구성 | 빠른 시각화, 통계 기반 그래프 |
| 대표 함수 | plt.plot(), plt.hist() 등 | sns.histplot(), sns.boxplot() 등 |
두 라이브러리는 각자의 장점이 명확하다.
seaborn이 훨씬 효율적이고 직관적이다.matplotlib이 더 강력하다.처음에는 seaborn으로 시작해서 익숙해진 뒤,
필요할 때 matplotlib으로 커스터마이징을 확장하는 접근도 좋다.
더 자세한 사용 가이드는 matplotlib 공식 문서, seaborn 공식 문서를 참고하자.
distplot→ 분포 확인용 (히스토그램 + KDE)
📌 distplot()은 deprecated 되었다!
→ 최근에는 histplot() + kdeplot() 조합을 많이 사용한다.
import seaborn as sns
import matplotlib.pyplot as plt
sns.histplot(data=df, x='Age', kde=True)
kde=True를 넣으면 커널 밀도 추정 곡선이 같이 그려진다.
분포 형태와 중심 경향, 밀도까지 한 번에 볼 수 있어 매우 유용하다.
scatterplot→ 변수 간 관계 시각화
sns.scatterplot(data=df, x='Age', y='Fare', hue='Survived')
# `hue` 옵션으로 색깔로 그룹 구분도 가능하다.
산점도는 두 수치형 변수 사이의 관계를 파악할 때 사용한다.
선형 관계, 이상치, 군집 등을 시각적으로 확인할 수 있다.
boxplot→ 이상치와 분포 구조를 시각화
sns.boxplot(data=df, y='Fare')
상자 수염 그림(Boxplot)은 데이터의 중앙값, 사분위수, 이상치를 시각화해준다.
sns.boxplot(data=df, x='Pclass', y='Fare') # 클래스별 운임 비교
시각화 함수는 정말 다양하지만,
항상 "무엇을 보고 싶은가?" 에 따라 선택 기준이 달라져야 한다.
아래에 목적별로 어떤 함수를 선택하면 좋은지 정리해 보았다.
| 목적 | 추천 함수 | 설명 |
|---|---|---|
| 데이터 분포 확인 | sns.histplot(), sns.kdeplot() | 분포 형태 + 밀도곡선 시각화 가능 |
| 변수 간 관계 파악 | sns.scatterplot() | 산점도로 연속형 변수 간 관계 확인 |
| 이상치 및 분포 구조 확인 | sns.boxplot() | 사분위수 + 이상치 시각화 |
그래프를 고를 때는 먼저
"내가 보고 싶은 건 분포일까, 관계일까, 이상치일까?" 를 질문해 보는 것이 좋다.
각 함수가 가진 시각화 목적을 이해하면 복잡한 데이터를 더 효과적으로 해석할 수 있다.
시각화를 통해 우리는 단순히 예쁜 그래프를 그리는 것이 아니라, 데이터의 속성을 정확히 읽어내고 설명할 수 있게 된다.
각각 선택할 수 있다.