파워 파이썬/패키지

seoborn 패키지로 멋진 시각화하자

상선약수64 2023. 9. 27. 10:48
반응형

seoborn 패키지는  matplotlib기반하였고 다양한 색상 테마와 통계용 차트 등의 기능을 추가한 시각화 패키지, maptplotlib보다 높은 수준의 인터페이스를 제공하여 사용자들이 쉽게 데이터를 분석하고 시각화할 수 있습니다.

 

seobor 라이브러리는
matplotlib기반이고 고급스러운 시각화를 쉽게 그릴 수 있음

http://seaborn.pydata.org/

 

seaborn: statistical data visualization — seaborn 0.12.2 documentation

seaborn: statistical data visualization

seaborn.pydata.org

 

seoborn은 다양한 dataset이 제공되는데 어떤 데이터셑이 있는지 확인하고, tips데이터 셑을 이용하여 시각화하도록 하겠습니다.

import seaborn as sns
sns.get_dataset_names() #데이터 셑 이름을 가져오기

시본에서 제공되는 데이터 셑

아래의 글은 seoborn 공식 홈페이지의 튜토리얼을 참고하여 작성하였습니다.

https://seaborn.pydata.org/tutorial.html

scatter plot 작성하기
  • 샘플데이터 tips를 불러오고 확인하였고, tips데이터의 변수는 식사비용(total_bill), 성별(sex), 흡연유무(smoker), 요일(day), 시간(time), 규모(size), 팁(tip) 이 있습니다.
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

data = sns.load_dataset('tips') #tips샘플데이터를 불어온다
data

  • x축은 total_bill, y축은 tip으로 설정하여 scatterplot()를 이용하여 산점도를 그립니다. 
sns.scatterplot(x='total_bill', y='tip', data=data)

산점도

Hue

  • 점이 색을 통해 의미를 가질수 있도록 하는 것입니다. 식사비와 팁이 선형관계를 가지고 있는데, 시간 또는 흡연여부에 따라 구분을 할 수 있습니다.
sns.scatterplot(x='total_bill', y='tip', data=data, hue="time")

sns.scatterplot(x='total_bill', y='tip', data=data, hue="size")
  • hue 설정하는 변수가 범주형이나 계량형이냐에 따라 색상지정이 차이가 난다. 계량형 데이터는 sequential palette로 표현됩니다. color palette를 설정하여 변경할 수 있습니다.  

      https://seaborn.pydata.org/tutorial/color_palettes.html

 

Choosing color palettes — seaborn 0.12.2 documentation

Choosing color palettes Seaborn makes it easy to use colors that are well-suited to the characteristics of your data and your visualization goals. This chapter discusses both the general principles that should guide your choices and the tools in seaborn th

seaborn.pydata.org

sns.scatterplot(x='total_bill', y='tip', data=data, hue="size", palette="YlOrBr")
sns.scatterplot(x='total_bill', y='tip', data=data, hue="time", style="smoker", size="size", palette="YlOrBr")

2차원 복합데이터
  • 데이터가 하나는 범주형이고 하나는 계량형 데이터가 혼합(복합)되었다면 범주형(그룹별)으로 barplot, boxplot, violinplot 등을 표수 할 수 있습니다.
sns.barplot(x="day", y="total_bill", data=data)

  • boxplot : 이상치 등 분포를 확인할 수 있습니다.
sns.boxplot(x="day", y="total_bill", data=data, palette="Set2")
plt.title('boxplot')

 

  • violinplot: 커널 밀도 히스토드램을 표현해주며, 대칭정도를 확인해 줍니다.
sns.violinplot(x="day", y="total_bill", data=data, palette="Paired")
plt.title('ViolinePlot ')

sns.violinplot(x="day", y="total_bill", hue="sex", data=data, palette="Set1")
plt.title('ViolinePlot ')