8. 데이터 시각화: Matplotlib과 Seaborn

데이터 시각화: Matplotlib과 Seaborn | 지식에 대한 탐구

데이터 시각화는 복잡한 데이터셋을 이해하기 쉽고 직관적인 그래픽으로 표현하는 과정입니다. 파이썬에서는 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의 주요 그래프 유형

  1. 선 그래프 (Line Plot)
    plt.plot(x, y)  # 기본 선 그래프
  2. 산점도 (Scatter Plot)
    plt.scatter(x, y)  # 산점도 그래프
  3. 막대 그래프 (Bar Plot)
    plt.bar(x, y)  # 세로 막대 그래프
  4. 히스토그램 (Histogram)
    plt.hist(data, bins=20)  # 히스토그램, bins는 구간 수
  5. 파이 차트 (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의 주요 그래프 유형

  1. 관계형 그래프 (Relational Plots)
    sns.relplot(x="total_bill", y="tip", hue="smoker", data=tips)  # 관계형 그래프
  2. 분포형 그래프 (Distribution Plots)
    sns.distplot(tips['total_bill'])  # 분포 그래프
  3. 범주형 그래프 (Categorical Plots)
    sns.boxplot(x="day", y="total_bill", data=tips)  # 박스 플롯
  4. 회귀형 그래프 (Regression Plots)
    sns.regplot(x="total_bill", y="tip", data=tips)  # 회귀 그래프
  5. 행렬형 그래프 (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을 마스터함으로써, 복잡한 데이터를 명확하고 설득력 있게 표현할 수 있는 능력을 갖출 수 있을 것입니다.

 

추가 학습 자료

 

© 2024 지식에 대한 탐구. All rights reserved.