Python/Python 심화

Python Matplotlib와 Seaborn을 활용한 데이터 시각화

임베디드 친구 2025. 7. 29. 20:02
728x90
반응형

Python Matplotlib와 Seaborn을 활용한 데이터 시각화

데이터 시각화는 데이터를 이해하고 분석하는 데 매우 중요한 도구입니다. Python에서는 이를 위해 다양한 라이브러리를 제공하지만, 그중 가장 인기 있는 라이브러리는 MatplotlibSeaborn입니다. 이번 포스팅에서는 이 두 라이브러리를 활용해 데이터 시각화를 수행하는 방법을 예제와 함께 살펴보겠습니다.

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()

주요 기능

  1. 라인 플롯(Line Plot): 연속 데이터를 시각화할 때 주로 사용.
  2. 막대 그래프(Bar Plot): 범주형 데이터를 비교할 때 사용.
  3. 히스토그램(Histogram): 데이터 분포를 이해할 때 유용.
  4. 산점도(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()

주요 기능

  1. 통계적 데이터 시각화: 히트맵, 카운트 플롯, 커널 밀도 추정 등 다양한 통계적 시각화 제공.
  2. 카테고리 데이터 시각화: Box Plot, Violin Plot 등을 통해 범주형 데이터의 분포와 비교 가능.
  3. 스타일링: 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
반응형