기본 차트 (Basic Charts)
초급
학습 목표
이 레시피를 완료하면 다음을 할 수 있습니다:
- 막대 그래프 (Bar Chart)로 카테고리 비교
- 라인 차트 (Line Chart)로 시계열 변화 시각화
- 산점도 (Scatter Plot)로 두 변수 간 관계 파악
- 파이 차트 (Pie Chart)로 구성 비중 확인
- 히스토그램 (Histogram)으로 데이터 분포 확인
0. 사전 준비 (Setup)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 한글 폰트 설정 (환경에 따라 변경 필요, 여기서는 영문으로 진행)
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = False
# 데이터 생성
np.random.seed(42)
df = pd.DataFrame({
'category': ['A', 'B', 'C', 'D', 'E'],
'value': [23, 45, 12, 67, 34],
'value2': [20, 40, 15, 60, 30]
})
# 시계열 데이터
dates = pd.date_range(start='2023-01-01', periods=100)
ts_df = pd.DataFrame({
'date': dates,
'sales': np.random.randn(100).cumsum() + 100,
'visitors': np.random.randn(100).cumsum() + 50
})1. 막대 그래프 (Bar Chart)
범주형 데이터의 크기를 비교할 때 사용합니다.
plt.figure(figsize=(10, 6))
sns.barplot(x='category', y='value', data=df)
plt.title('Category Values')
plt.show()
수평 막대 그래프
레이블이 길거나 순위를 표현할 때 유용합니다.
plt.figure(figsize=(10, 6))
sns.barplot(x='value', y='category', data=df, orient='h')
plt.title('Horizontal Bar Chart')
plt.show()
2. 라인 차트 (Line Chart)
시간에 따른 변화 추세를 보여줄 때 사용합니다.
plt.figure(figsize=(12, 6))
sns.lineplot(x='date', y='sales', data=ts_df, label='Sales')
sns.lineplot(x='date', y='visitors', data=ts_df, label='Visitors')
plt.title('Sales & Visitors Trend')
plt.legend()
plt.show()
3. 산점도 (Scatter Plot)
두 연속형 변수 사이의 상관관계를 보여줍니다.
# 산점도용 데이터 생성
scatter_df = pd.DataFrame({
'x': np.random.randn(100),
'y': np.random.randn(100)
})
scatter_df['y'] = scatter_df['x'] * 2 + np.random.randn(100) * 0.5 # 상관관계 생성
plt.figure(figsize=(8, 8))
sns.scatterplot(x='x', y='y', data=scatter_df)
plt.title('Scatter Plot')
plt.show()
4. 히스토그램 (Histogram)
데이터의 빈도 분포를 보여줍니다.
plt.figure(figsize=(10, 6))
sns.histplot(scatter_df['y'], kde=True) # kde=True: 밀도 곡선 추가
plt.title('Distribution')
plt.show()
5. 파이 차트 (Pie Chart)
전체 대비 비중을 보여줍니다. (Seaborn은 파이 차트를 지원하지 않아 matplotlib 사용)
plt.figure(figsize=(8, 8))
plt.pie(df['value'], labels=df['category'], autopct='%1.1f%%', startangle=90)
plt.title('Category Composition')
plt.show()실행 결과
[Graph Saved: generated_plot_c84ab52daf_0.png]

Last updated on