파이썬 데이터 시각화 정리: Plotly와 Seaborn 그래프 명령어
파이썬 데이터 분석에서 시각화는 숫자와 표만으로 파악하기 어려운 데이터의 패턴을 그래프로 확인하는 과정입니다. 이번 글에서는 초보자가 자주 사용하는 Plotly Express와 Seaborn의 기본 그래프를 정리합니다.
- 그래프 목적에 맞는 시각화 명령어 선택하기
- 코드의 주요 매개변수 이해하기
- 그래프 코드와 결과 형태를 연결해서 읽기
- AI가 작성한 시각화 코드를 직접 검토하고 수정하기
1. 라이브러리 불러오기
Plotly Express는 대화형 그래프를 간결하게 만들 수 있고, Seaborn은 통계적 시각화에 자주 사용됩니다.
import pandas as pd
import plotly.express as px
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
# Seaborn 예제 데이터 불러오기
df = sns.load_dataset('tips')
핵심: pd, px, sns, plt는 라이브러리를 짧게 사용하기 위한 별칭입니다.
2. 선 그래프: px.line()
선 그래프는 시간에 따른 변화나 순서가 있는 데이터의 흐름을 살펴볼 때 사용합니다. 아래 예시는 팁 금액을 기준으로 정렬한 뒤, 각 행의 팁 금액을 선으로 연결합니다.
df_line = df.sort_values('tip')
fig = px.line(
data_frame=df_line,
x='total_bill',
y='tip',
title='총 결제금액과 팁 금액',
labels={'total_bill':'총 결제금액', 'tip':'팁 금액'}
)
fig.show()
※ 그래프 모양을 설명하기 위한 예시 그림입니다. 실제 실행 결과는 데이터와 정렬 방식에 따라 달라집니다.
3. 막대 그래프: px.bar()
막대 그래프는 범주별 수치나 평균을 비교할 때 사용합니다. 아래 코드는 성별에 따른 평균 팁 금액을 계산한 뒤 막대 그래프로 표현합니다.
df_sex_mean = (
df.groupby('sex')['tip']
.mean()
.reset_index()
)
fig = px.bar(
data_frame=df_sex_mean,
x='sex',
y='tip',
title='성별 평균 팁 비교',
labels={'sex':'성별', 'tip':'평균 팁'},
color='sex'
)
fig.show()
※ 막대 높이는 결과 형태를 보여주는 예시이며 실제 평균값을 표시한 것은 아닙니다.
4. 히스토그램: px.histogram()
히스토그램은 연속형 수치 데이터가 어느 구간에 얼마나 분포하는지 확인합니다. nbins는 구간의 개수를 지정하는 매개변수입니다.
fig = px.histogram(
data_frame=df,
x='total_bill',
nbins=20,
title='총 결제금액 분포',
labels={'total_bill':'총 결제금액'}
)
fig.show()
※ 예시 그림입니다. 실제 히스토그램의 구간과 빈도는 실행 결과를 확인하세요.
5. 그룹별 히스토그램: color와 barmode
color='time'은 점심과 저녁을 색으로 구분합니다. barmode='group'은 구간별 막대를 나란히 배치합니다.
fig = px.histogram(
data_frame=df,
x='total_bill',
color='time',
barmode='group',
nbins=15,
title='점심과 저녁의 총 결제금액 분포'
)
fig.update_traces(
marker_line_color='white',
marker_line_width=1
)
fig.show()
※ 색상과 막대 배치 개념을 나타낸 예시입니다.
6. 원 그래프: px.pie()
원 그래프는 전체에서 각 범주가 차지하는 비율을 보여줄 때 사용합니다. names는 범주, values는 각 범주의 수치입니다. hole을 지정하면 도넛 그래프 형태로 만들 수 있습니다.
df_day_count = (
df['day']
.value_counts()
.reset_index()
)
df_day_count.columns = ['day', 'count']
fig = px.pie(
data_frame=df_day_count,
names='day',
values='count',
hole=0.35,
title='요일별 방문 건수 비율'
)
fig.show()
※ 범주와 비율을 설명하기 위한 도넛 그래프 예시입니다.
7. 상관관계 히트맵: px.imshow()
상관관계 행렬은 숫자형 변수 사이의 선형 관계를 수치로 나타냅니다. 일반적으로 1에 가까우면 양의 상관관계, -1에 가까우면 음의 상관관계, 0에 가까우면 선형 상관관계가 약하다는 뜻입니다. 상관관계가 인과관계를 의미하는 것은 아닙니다.
df_corr = df.corr(numeric_only=True)
fig = px.imshow(
img=df_corr,
text_auto='.2f',
color_continuous_scale='RdBu_r',
zmin=-1,
zmax=1,
title='수치형 변수 상관관계 히트맵'
)
fig.show()
※ 색과 숫자는 히트맵 읽는 법을 보여주는 예시이며 실제 계산 결과가 아닙니다.
8. Seaborn 기본 그래프
Seaborn은 Matplotlib을 기반으로 통계적 시각화를 간편하게 작성할 수 있는 라이브러리입니다. 아래는 산점도와 회귀선을 함께 표현하는 예시입니다.
sns.scatterplot(
data=df,
x='total_bill',
y='tip',
hue='time'
)
plt.title('총 결제금액과 팁의 관계')
plt.xlabel('총 결제금액')
plt.ylabel('팁 금액')
plt.tight_layout()
plt.show()
※ 산점도 구조를 보여주는 예시 그림입니다. 실제 점의 위치와 범례는 데이터에 따라 달라집니다.
9. 자주 사용하는 명령어 요약
| 그래프 | 명령어 | 주요 목적 |
|---|---|---|
| 선 그래프 | px.line() |
변화 추이와 흐름 |
| 막대 그래프 | px.bar() |
범주별 값 비교 |
| 히스토그램 | px.histogram() |
수치 데이터 분포 |
| 원 그래프 | px.pie() |
전체 대비 비율 |
| 히트맵 | px.imshow() |
행렬 값과 상관관계 |
| 산점도 | sns.scatterplot() |
두 수치 변수의 관계 |
10. 초보자가 기억할 핵심
- 시간의 흐름이나 순서를 보고 싶다면
px.line() - 범주별 수치 비교는
px.bar() - 수치의 분포는
px.histogram() - 전체에서 차지하는 비율은
px.pie() - 변수 간 상관관계는
df.corr()와px.imshow() - 두 수치 변수의 관계는 산점도
sns.scatterplot()
파이썬 시각화에서 중요한 것은 모든 명령어를 암기하는 것이 아닙니다. 먼저 분석 목적을 정하고, 목적에 맞는 그래프를 선택한 다음, x, y, color, title 등의 매개변수를 하나씩 확인하는 습관을 들이는 것이 좋습니다.
학습 데이터: Seaborn 내장 tips 데이터셋. 그래프 이미지는 설명을 위한 예시이며 실제 코드 실행 결과 캡처가 아닙니다.
```