Python

[Python] 씨본(Seaborn) 라이브러리(Library)_1

구루싸 2019. 9. 26. 20:52
반응형
SMALL

오늘도 파이썬(Python) 학습을 진행하겠습니다

바로 맷플롯립(Matplotlib) 라이브러리(Library)의 기능과 스타일을 확장한 씨본(Seaborn) 라이브러리(Library)입니다

# 판다스(Pandas)
import pandas
import matplotlib.pyplot as mp
import matplotlib
# 씨본(Seaborn)
import seaborn 

titanic_data = seaborn.load_dataset('titanic')
# titanic_data = titanic_data.fillna(method = 'ffill')

print(titanic_data.head(), end = '\n')
print(titanic_data.info(), end = '\n')

matplotlib.rc('font', family = 'AppleGothic') # MAC OS 일 경우 한글 폰트 오류 해결
# 스타일 테마(darkgrid, whitegrid, dark, white, ticks)
seaborn.set_style('ticks')

fig = mp.figure(figsize = (10, 10))
ax1 = fig.add_subplot(3, 2, 1)
ax2 = fig.add_subplot(3, 2, 2)
ax3 = fig.add_subplot(3, 2, 3)
ax4 = fig.add_subplot(3, 2, 4)
ax5 = fig.add_subplot(3, 2, 5)
ax6 = fig.add_subplot(3, 2, 6)

# 히스토그램/커널 밀도 그래프
seaborn.distplot(titanic_data['fare'], # Column
                 hist = True, # 히스토그램
                 kde = True, # 커널 밀도 그래프
                 ax = ax1) # ax객체 지정

# 히트맵(heatmap) : 피벗테이블(pivot table)로 범주형 컬럼을 매트릭스형태(행, 열)로 재구분하여야함
pivot_table = titanic_data.pivot_table(index = ['sex'], 
                                       columns = ['class'], 
                                       aggfunc = 'size') # 데이터 값의 크기 기준으로 집계
seaborn.heatmap(pivot_table, # data
                annot = True, # 값 표시
                fmt = 'd', # 정수형 포맷
                cmap = 'viridis',
                linewidth =.5, # 구분선
                cbar = True, # 컬러바 표시여부
                ax = ax2)

# 막대그래프
seaborn.barplot(x = 'sex', # x축
                y = 'survived', # y축
                data = titanic_data, # data
                hue = 'class', # class 열 구분
                dodge = False, # 누적
                ax = ax3)
 
# 선형회귀분석에 의한 선형회귀선을 (미)표시 하는 산점도
seaborn.regplot(x = 'age', # x축
                y = 'fare', # y축
                data = titanic_data, # data
                ax = ax4, # ax객체 지정
                fit_reg = True) # 선형회귀선 표시 : False면 미표시


# 범주형 컬럼 데이터 산점도 : 
#   stripplot : 데이터 분산 미고려하여 중복 포인터 발생
#   swarmplot : 데이터 분산 고려하여 포인터 중복 제거
seaborn.stripplot(x = 'class', # x축
                  y = 'age', # y축
                  data = titanic_data, # data
                  hue = 'sex', # sex 열 색상 구분
                  ax = ax5) 
seaborn.swarmplot(x = 'class', # x축
                  y = 'age', # y축
                  data = titanic_data, # data
                  hue = 'sex',
                  ax = ax6) 

mp.show()

위의 코드는 씨본(Seaborn) 라이브러리(Library)에서 제공하는 "titanic" 데이터를 이용해서

히스토그램/커널 밀도 그래프, 히트맵, 막대그래프, 선형회귀선을 포함하는 산점도, 범주형 데이터의 산점도를 그리고 있습니다

오늘은 여기까지 하고 다음에 빈도 그래프, 박스 플롯/바이올린 그래프, 조인트 그래프에 대해 알아보겠습니다-_-

 

반응형
LIST