본문 바로가기
Deep Learning

[딥러닝] 밑바닥부터 시작하는 딥러닝 공부 1-2 : 시각화

by 단깅수 2024. 1. 12.
728x90

이번에 소개할 내용은 밑시딥 1장의 뒤부분, "시각화"이다.

 

파이썬에서 사용되는 시각화 패키지는 크게 2가지 인데 첫 째는 Matplotlib(맷플롯립), 둘 째는 Seaborn(시본)이다.

그래서 이 두 패키지에 대해 내용을 정리해보려고 한다.

 

시각화에 사용할 데이터는 타이타닉 데이터

 

타이타닉 데이터 - 많은 사람들이 알고 있는 데이터이기도 하고 범주형과 수치형 변수가 함께 섞여 있어서 시각화하기에 좋다고 판단.

 

1. Matplotlib 패키지

  • 파이썬의 Matplotlib 패키지는 데이터 시각화를 위한 강력한 도구로, 그래프, 차트, 플롯 등 다양한 형태의 시각화를 생성가능. 이를 통해 데이터를 이해하고 효과적으로 전달할 수 있다.
  • Matplotlib의 주요 모듈 중 하나는 pyplot. pyplot은 MATLAB 스타일의 인터페이스를 제공하여, 간단하고 직관적인 방식으로 그래프를 생성할 수 있고 또한, Matplotlib는 객체 지향적 접근 방식도 제공하여 그래프를 더욱 세밀하게 제어할 수 있다.
  • 패키지 임포트
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

import matplotlib.font_manager as fm

# 폰트 경로 지정
font_location = 'C:/Windows/Fonts/LG_Smart_UI-Bold.ttf'  # 원하는 폰트 파일 경로로 변경해주세요
font_name = fm.FontProperties(fname=font_location).get_name()
plt.rcParams['font.family'] = font_name
titanic = pd.read_csv('titanic.csv')
  • Line plot
# plt 패키지의 line plot
plt.plot(titanic['Age'], titanic['Fare'])

plt.title("나이와 운임의 관계")
plt.xlabel("나이")
plt.ylabel("운임")

# 그래프 출력
plt.show()
  • Scatter plot
# plt 패키지의 scatter plot
plt.scatter(titanic['Age'], titanic['Fare'])

# 제목과 축 레이블 추가
plt.title("나이와 운임의 관계")
plt.xlabel("나이")
plt.ylabel("운임료")

# 그래프 출력
plt.show()

  •  Histogram
# plt 패키지의 Histogram
plt.hist(titanic['Age'])

# 제목과 축 레이블 추가
plt.title("승객의 나이 분포")
plt.xlabel("나이")
plt.ylabel("빈도")

# 그래프 출력
plt.show()

  • Bar plot
# plt 패키지의 bar plot
plt.bar(titanic['Age'], titanic['Fare'])

# 제목과 축 레이블 추가
plt.title("성별과 운임의 관계")
plt.xlabel("성별")
plt.ylabel("운임")

# 그래프 출력
plt.show()

2. Seaborn 패키지

  • Seaborn은 Matplotlib를 기반으로 한 파이썬의 시각화 라이브러리로, Matplotlib보다 더 아름답고 정교한 시각화를 제공하며 데이터를 탐색하고 이해하는 데 유용한 다양한 기능을 제공. Seaborn은 Matplotlib의 기능을 보완하며 통계적 그래픽스를 그리는 데 특히 유용하다.
  • Heatmap
titanic_numeric = titanic[['Pclass', 'Age', 'SibSp', 'Parch', 'Fare', 'Survived']]

# seaborn 패키지의 heatmap
sns.heatmap(titanic_numeric.corr(), annot=True, cmap='coolwarm')
plt.title('Titanic Correlation Heatmap')
plt.show()

  • Bar plot / Box plot / Violin plot
fig, ax = plt.subplots(2,2, figsize = (12,10))

# seaborn 패키지의 bar plot 가로 형태
sns.barplot(x='Fare', y='Sex', data=titanic, hue = 'Survived', ax = ax[0, 0], orient = 'h')
ax[0, 0].set_title('Sex 에 따른 운임료 차이')

# seaborn 패키지의 bar plot 세로 형태
sns.barplot(x='Pclass', y='Fare', data=titanic, hue = 'Survived', ax = ax[0, 1], palette = 'Blues')
ax[0, 1].set_title('Pclass 에 따른 운임료 차이')

# seaborn 패키지의 box plot
sns.boxplot(x='Embarked', y='Age', data=titanic, hue = 'Survived', ax = ax[1, 0], palette = 'Oranges')
ax[1, 0].set_title('Embarked 에 따른 나이 차이')

# seaborn 패키지의 violin plot
sns.violinplot(x='Sex', y='SibSp', data=titanic, hue = 'Survived', ax = ax[1, 1], palette = 'pastel')
ax[1, 1].set_title('Sex 에 따른 SibSp 차이')

plt.show()

  • Pair plot
# seaborn 패키지의 pair plot 
sns.pairplot(titanic)
plt.title('Example Pairplot')
plt.show()

  • Hist plot / Kde plot / Dist plot
fig, ax = plt.subplots(2,2, figsize = (12,10))

# seaborn 패키지의 histplot 밀도 선 제거
sns.histplot(titanic.Age, ax = ax[0, 0], kde = False, bins = 25, color = 'skyblue')
ax[0, 0].set_title('Age 분포 bins = 25')

# seaborn 패키지의 histplot 밀도 선 표시
sns.histplot(titanic.Age, ax = ax[0, 1], kde = True, bins = 5, color = 'magenta')
ax[0, 1].set_title('Age 분포 bins = 5')

# seaborn 패키지의 kde plot
sns.kdeplot(titanic.Fare, ax = ax[1, 0], color = 'black')
ax[1, 0].set_title('Fare 분포')

# seaborn 패키지의 dist plot
sns.distplot(titanic.SibSp, ax = ax[1, 1], color = 'orange')
ax[1, 1].set_title('SibSp 분포')

plt.show()

  • Seaborn 패키지의 ColorMap

728x90