728x90
반응형
Python Matplotlib와 Seaborn을 활용한 데이터 시각화
데이터 시각화는 데이터를 이해하고 분석하는 데 매우 중요한 도구입니다. Python에서는 이를 위해 다양한 라이브러리를 제공하지만, 그중 가장 인기 있는 라이브러리는 Matplotlib와 Seaborn입니다. 이번 포스팅에서는 이 두 라이브러리를 활용해 데이터 시각화를 수행하는 방법을 예제와 함께 살펴보겠습니다.
1. Matplotlib 소개
Matplotlib는 Python의 기본 데이터 시각화 라이브러리로, 간단한 플롯부터 복잡한 그래프까지 다양한 시각화를 지원합니다. Matplotlib는 주로 pyplot
모듈을 통해 사용됩니다.
import matplotlib.pyplot as plt
import numpy as np
# 간단한 선 그래프 그리기
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='Sine Wave')
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.grid(True)
plt.show()
주요 기능
- 라인 플롯(Line Plot): 연속 데이터를 시각화할 때 주로 사용.
- 막대 그래프(Bar Plot): 범주형 데이터를 비교할 때 사용.
- 히스토그램(Histogram): 데이터 분포를 이해할 때 유용.
- 산점도(Scatter Plot): 두 변수 간의 관계를 보여줄 때 사용.
2. Seaborn 소개
Seaborn은 Matplotlib를 기반으로 한 고급 시각화 라이브러리로, 스타일링과 복잡한 플롯을 간편하게 제공합니다. 데이터프레임과 통합되어 데이터 시각화 작업이 매우 효율적입니다.
import seaborn as sns
import pandas as pd
import numpy as np
# 샘플 데이터 생성
data = pd.DataFrame({
'x': np.random.normal(size=100),
'y': np.random.normal(size=100),
'category': np.random.choice(['A', 'B'], size=100)
})
# 산점도
sns.scatterplot(x='x', y='y', hue='category', data=data)
plt.title('Seaborn Scatter Plot')
plt.show()
주요 기능
- 통계적 데이터 시각화: 히트맵, 카운트 플롯, 커널 밀도 추정 등 다양한 통계적 시각화 제공.
- 카테고리 데이터 시각화: Box Plot, Violin Plot 등을 통해 범주형 데이터의 분포와 비교 가능.
- 스타일링: Matplotlib에 비해 기본 스타일이 세련되고 보기 좋음.
3. Matplotlib와 Seaborn 비교
특징 | Matplotlib | Seaborn |
---|---|---|
학습 곡선 | 상대적으로 가파름 | 비교적 완만함 |
스타일링 | 기본 스타일이 다소 단순 | 기본 스타일이 세련됨 |
데이터프레임 지원 | 지원하지 않음(DataFrame 변환 필요) | Pandas DataFrame과 자연스럽게 통합 |
기능 확장성 | 매우 유연하고 다양한 커스터마이징 가능 | 특정 유형의 플롯을 간편하게 생성 가능 |
4. 실전 예제: 데이터 분석 및 시각화
다음은 Matplotlib와 Seaborn을 사용하여 간단한 데이터 분석 및 시각화를 수행하는 예제입니다.
데이터 생성 및 전처리
# 샘플 데이터 생성
np.random.seed(42)
data = pd.DataFrame({
'age': np.random.randint(18, 70, 100),
'income': np.random.randint(30000, 120000, 100),
'spending_score': np.random.randint(1, 100, 100),
'gender': np.random.choice(['Male', 'Female'], 100)
})
print(data.head())
Matplotlib로 히스토그램 그리기
# 히스토그램
plt.hist(data['spending_score'], bins=10, color='skyblue', edgecolor='black')
plt.title('Spending Score Distribution')
plt.xlabel('Spending Score')
plt.ylabel('Frequency')
plt.show()
Seaborn으로 박스 플롯 그리기
# 박스 플롯
sns.boxplot(x='gender', y='income', data=data)
plt.title('Income by Gender')
plt.show()
Seaborn으로 히트맵 생성
# 상관관계 히트맵
corr = data.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap')
plt.show()
5. 결론
Matplotlib와 Seaborn은 각각의 장점과 특징을 가지고 있으며, 데이터 분석 및 시각화 작업에서 서로 보완적인 역할을 합니다. 단순하고 커스터마이징 가능한 시각화가 필요하다면 Matplotlib를, 세련된 통계적 시각화가 필요하다면 Seaborn을 활용하세요.
위의 예제 코드를 실행하면서 데이터 시각화의 기초와 고급 기능을 익혀보세요. 추가적으로, 각 라이브러리의 공식 문서를 참고하면 더 다양한 기능을 활용할 수 있습니다.
728x90
반응형
'Python > Python 심화' 카테고리의 다른 글
Python statsmodels를 이용한 통계 분석 (0) | 2025.07.31 |
---|---|
Python Scikit-learn을 활용한 머신러닝 기초 (0) | 2025.07.30 |
Python NumPy를 이용한 수치 계산 (0) | 2025.07.28 |
Pandas를 이용한 데이터 처리 및 분석 (0) | 2025.07.27 |
Python 파일 입출력과 pathlib (0) | 2025.07.26 |