데이터 시각화는 복잡한 데이터셋을 이해하기 쉽고 직관적인 그래픽으로 표현하는 과정입니다. 파이썬에서는 Matplotlib과 Seaborn이라는 두 가지 강력한 라이브러리를 통해 다양한 형태의 데이터 시각화를 구현할 수 있습니다. 이 글에서는 이 두 라이브러리의 특징, 사용법, 그리고 실제 적용 사례를 자세히 살펴보겠습니다.
1. Matplotlib
Matplotlib은 파이썬의 기본적인 플로팅 라이브러리로, 다양한 형태의 2D 그래프와 일부 3D 그래프를 생성할 수 있습니다.
1.1 Matplotlib의 특징
- 세밀한 제어: 그래프의 모든 요소를 세부적으로 조정할 수 있습니다.
- 다양한 그래프 유형: 선 그래프, 산점도, 막대 그래프, 히스토그램, 파이 차트 등을 지원합니다.
- 수학적 표현: LaTeX를 사용하여 수학 표현식을 그래프에 포함할 수 있습니다.
- 다양한 출력 형식: PNG, JPG, PDF, SVG 등 여러 형식으로 저장 가능합니다.
1.2 Matplotlib 설치
pip를 사용하여 쉽게 설치할 수 있습니다:
# Matplotlib 설치 명령어
pip install matplotlib
1.3 기본 사용법
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 그래프 그리기
plt.figure(figsize=(10, 6)) # 그래프 크기 설정
plt.plot(x, y, label='sin(x)') # 선 그래프 그리기
plt.title('Sine Wave') # 그래프 제목
plt.xlabel('x') # x축 레이블
plt.ylabel('y') # y축 레이블
plt.legend() # 범례 표시
plt.grid(True) # 그리드 표시
plt.show() # 그래프 출력
1.4 Matplotlib의 주요 그래프 유형
- 선 그래프 (Line Plot)
plt.plot(x, y) # 기본 선 그래프 - 산점도 (Scatter Plot)
plt.scatter(x, y) # 산점도 그래프 - 막대 그래프 (Bar Plot)
plt.bar(x, y) # 세로 막대 그래프 - 히스토그램 (Histogram)
plt.hist(data, bins=20) # 히스토그램, bins는 구간 수 - 파이 차트 (Pie Chart)
plt.pie(sizes, labels=labels, autopct='%1.1f%%') # 파이 차트
1.5 서브플롯 (Subplots)
여러 그래프를 하나의 figure에 배치할 수 있습니다:
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) # 1행 2열의 서브플롯 생성
ax1.plot(x, y1) # 첫 번째 서브플롯에 그래프 그리기
ax2.plot(x, y2) # 두 번째 서브플롯에 그래프 그리기
plt.show() # 그래프 출력
2. Seaborn
Seaborn은 Matplotlib을 기반으로 만들어진 통계 데이터 시각화 라이브러리입니다. 더 아름답고 정보가 풍부한 그래프를 쉽게 만들 수 있습니다.
2.1 Seaborn의 특징
- 아름다운 기본 스타일: 별도의 설정 없이도 보기 좋은 그래프를 생성합니다.
- 복잡한 데이터셋 시각화: 다변량 데이터를 효과적으로 표현할 수 있습니다.
- 통계 함수 내장: 회귀선, 신뢰구간 등을 자동으로 계산하여 표시합니다.
- 색상 팔레트: 다양한 색상 테마를 제공합니다.
2.2 Seaborn 설치
pip를 사용하여 설치할 수 있습니다:
# Seaborn 설치 명령어
pip install seaborn
2.3 기본 사용법
import seaborn as sns
import matplotlib.pyplot as plt
# 데이터셋 로드
tips = sns.load_dataset("tips")
# 산점도 그리기
plt.figure(figsize=(10, 6)) # 그래프 크기 설정
sns.scatterplot(x="total_bill", y="tip", data=tips) # Seaborn으로 산점도 그리기
plt.title("Tips vs Total Bill") # 그래프 제목
plt.show() # 그래프 출력
2.4 Seaborn의 주요 그래프 유형
- 관계형 그래프 (Relational Plots)
sns.relplot(x="total_bill", y="tip", hue="smoker", data=tips) # 관계형 그래프 - 분포형 그래프 (Distribution Plots)
sns.distplot(tips['total_bill']) # 분포 그래프 - 범주형 그래프 (Categorical Plots)
sns.boxplot(x="day", y="total_bill", data=tips) # 박스 플롯 - 회귀형 그래프 (Regression Plots)
sns.regplot(x="total_bill", y="tip", data=tips) # 회귀 그래프 - 행렬형 그래프 (Matrix Plots)
sns.heatmap(corr_matrix, annot=True) # 히트맵
2.5 Seaborn 스타일 설정
Seaborn은 다양한 스타일과 색상 팔레트를 제공합니다:
sns.set_style("whitegrid") # 스타일 설정
sns.set_palette("pastel") # 색상 팔레트 설정
3. Matplotlib과 Seaborn 비교
| 특징 | Matplotlib | Seaborn |
|---|---|---|
| 유연성 | 높음 | 중간 |
| 기본 스타일 | 기본적 | 세련됨 |
| 사용 난이도 | 중간 | 쉬움 |
| 통계 기능 | 제한적 | 풍부함 |
| 그래프 종류 | 매우 다양함 | 통계에 특화됨 |
4. 실제 응용 사례
4.1 주식 가격 트렌드 분석 (Matplotlib 사용)
import matplotlib.pyplot as plt
import pandas as pd
# 데이터 로드
stock_data = pd.read_csv('stock_prices.csv', parse_dates=['Date'], index_col='Date')
# 주식 가격 트렌드 그래프
plt.figure(figsize=(12, 6)) # 그래프 크기 설정
plt.plot(stock_data.index, stock_data['Close'], label='Close Price') # 종가 데이터로 선 그래프 그리기
plt.title('Stock Price Trend') # 그래프 제목
plt.xlabel('Date') # x축 레이블
plt.ylabel('Price') # y축 레이블
plt.legend() # 범례 표시
plt.grid(True) # 그리드 표시
plt.show() # 그래프 출력
4.2 다변량 데이터 분석 (Seaborn 사용)
import seaborn as sns
import matplotlib.pyplot as plt
# 데이터 로드
iris = sns.load_dataset("iris")
# 페어플롯 그리기
sns.pairplot(iris, hue="species") # 종별로 색상을 다르게 하여 페어플롯 생성
plt.suptitle("Iris Dataset Analysis", y=1.02) # 전체 그래프의 제목 설정
plt.show() # 그래프 출력
Matplotlib과 Seaborn은 각각 고유한 강점을 가지고 있으며, 상호 보완적으로 사용될 수 있습니다. Matplotlib은 세밀한 제어와 다양한 그래프 유형을 제공하여 복잡하고 사용자 정의가 많이 필요한 시각화에 적합합니다. 반면 Seaborn은 통계 데이터 시각화에 특화되어 있어, 빠르고 아름다운 통계 그래프를 쉽게 만들 수 있습니다.
데이터 과학자나 분석가는 두 라이브러리를 상황에 맞게 적절히 선택하거나 함께 사용하여 효과적인 데이터 시각화를 수행할 수 있습니다. 데이터 시각화는 단순히 그래프를 그리는 것을 넘어, 데이터에 숨겨진 인사이트를 발견하고 효과적으로 전달하는 강력한 도구입니다. Matplotlib과 Seaborn을 마스터함으로써, 복잡한 데이터를 명확하고 설득력 있게 표현할 수 있는 능력을 갖출 수 있을 것입니다.
추가 학습 자료
- Matplotlib 공식 튜토리얼
- Seaborn 공식 튜토리얼
- Python Graph Gallery – 다양한 그래프 예시와 코드