Seaborn 시각화: Heatmap, Pivot Plot, Correlation Plot, Violin Plot

이번에는 Seaborn의 다음과 같은 그래프에 대해 알아봅시다.

  1. Heatmap
  2. Pivot Plot
  3. Correlation 시각화
  4. Pair Plot
  5. Violin Plot

학습 활동은 아래를 참고하세요.

Q1 다음 각각이 의미하는 바는 무엇인가요?

In [2]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
In [3]:
titanic = sns.load_dataset('titanic')
titanic
Out[3]:
survivedpclasssexagesibspparchfareembarkedclasswhoadult_maledeckembark_townalivealone
003male22.0107.2500SThirdmanTrueNaNSouthamptonnoFalse
111female38.01071.2833CFirstwomanFalseCCherbourgyesFalse
213female26.0007.9250SThirdwomanFalseNaNSouthamptonyesTrue
311female35.01053.1000SFirstwomanFalseCSouthamptonyesFalse
403male35.0008.0500SThirdmanTrueNaNSouthamptonnoTrue
................................................
88602male27.00013.0000SSecondmanTrueNaNSouthamptonnoTrue
88711female19.00030.0000SFirstwomanFalseBSouthamptonyesTrue
88803femaleNaN1223.4500SThirdwomanFalseNaNSouthamptonnoFalse
88911male26.00030.0000CFirstmanTrueCCherbourgyesTrue
89003male32.0007.7500QThirdmanTrueNaNQueenstownnoTrue

891 rows × 15 columns

Q2 sns.load_dataset()은 무엇을 하는 함수인가요?

891 rows × 15 columns

  1. survived: 생존여부
  2. pclass: 좌석등급
  3. sex: 성별
  4. age: 나이
  5. sibsp: 형제자매 숫자
  6. parch: 부모자식 숫자
  7. fare: 요금
  8. embarked: 탑승 항구
  9. class: 좌석등급 (영문)
  10. who: 사람 구분
  11. deck: 데크
  12. embark_town: 탑승 항구 (영문)
  13. alive: 생존여부 (영문)
  14. alone: 혼자인지 여부
In [4]:
tips = sns.load_dataset('tips')
  1. total_bill: 총 합계 요금표
  2. tip: 팁
  3. sex: 성별
  4. smoker: 흡연자 여부
  5. day: 요일
  6. time: 식사 시간
  7. size: 식사 인원

Heatmap

색상으로 표현할 수 있는 다양한 정보를 일정한 이미지위에 열분포 형태의 비쥬얼한 그래픽으로 출력하는 것이 특징이다

Q3 Heat map은 무엇인가요?

In [5]:
uniform_data = np.random.rand(10, 12)
sns.heatmap(uniform_data, annot=True)
plt.show()

Q4 numpy의 random.rand()는 어떤 함수인가요?

Q5 annot=True는 무슨 일을 하는 옵션인가요?

Q6 heatmap()은 어떻게 입력 값을 받을까요?

Pivot Plot

In [6]:
tips.head()
Out[6]:
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
323.683.31MaleNoSunDinner2
424.593.61FemaleNoSunDinner4
In [7]:
pivot = tips.pivot_table(index='day', columns='size', values='tip')
pivot
Out[7]:
size123456
day
Thur1.832.4425002.6925004.2180005.0000005.3
Fri1.922.6443753.0000004.730000NaNNaN
Sat1.002.5175473.7977784.1238463.000000NaN
SunNaN2.8169233.1206674.0877784.0466675.0

Q7 pivot_table()은 무엇을 할까요?

Q8 index=, columns= values=는 각각 어떻게 정할까요?

In [8]:
sns.heatmap(pivot, annot=True)
plt.show()

Q9 heatmap()에 pivot_table()의 결과를 넣으면 어떻게 될까요?

Q10 NaN으로 처리된 경우에 어떻게 표시되나요?

Correlation 시각화

In [9]:
titanic.corr()
Out[9]:
survivedpclassagesibspparchfareadult_malealone
survived1.000000-0.338481-0.077221-0.0353220.0816290.257307-0.557080-0.203367
pclass-0.3384811.000000-0.3692260.0830810.018443-0.5495000.0940350.135207
age-0.077221-0.3692261.000000-0.308247-0.1891190.0960670.2803280.198270
sibsp-0.0353220.083081-0.3082471.0000000.4148380.159651-0.253586-0.584471
parch0.0816290.018443-0.1891190.4148381.0000000.216225-0.349943-0.583398
fare0.257307-0.5495000.0960670.1596510.2162251.000000-0.182024-0.271832
adult_male-0.5570800.0940350.280328-0.253586-0.349943-0.1820241.0000000.404744
alone-0.2033670.1352070.198270-0.584471-0.583398-0.2718320.4047441.000000

Q11 pandas의 DataFrame의 corr() 매쏘드는 상관관계를 구해줍니다. 상관관계란?

In [10]:
sns.heatmap(titanic.corr(), annot=True, cmap="YlGnBu")
plt.show()

Q12 상관관계를 heatmap()에 입력하면 어떻게 되나요?

Pair Plot

In [11]:
tips.head()
Out[11]:
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
323.683.31MaleNoSunDinner2
424.593.61FemaleNoSunDinner4
In [12]:
sns.pairplot(tips)
plt.show()

Q13 pariplot()은 무엇을 하는 함수인가요?

In [13]:
sns.pairplot(tips, hue='size')
plt.show()

Q14 pairplot()에 hue=옵션을 넣으면 무엇이 달라지나요?

In [14]:
sns.pairplot(tips, hue='size', palette="rainbow")
plt.show()

Q15 palette=옵션은 무엇을 하나요?

Q16 더 많은 색상 옵션이 있는데요, 어떤 것들이 있나요?

In [15]:
sns.pairplot(tips, hue='size', palette="rainbow", height=5,)
plt.show()

Violin Plot

바이올린처럼 생긴 violinplot 입니다. column에 대한 데이터의 비교 분포도를 확인할 수 있습니다. 곡선진 부분 (뚱뚱한 부분)은 데이터의 분포를 나타냅니다. 양쪽 끝 뾰족한 부분은 데이터의 최소값과 최대값을 나타냅니다.

In [17]:
sns.violinplot(x=tips["total_bill"])
plt.show()

Q 17 violinplot()에서 최소, 최대, 평균, 중앙값은 각각 어떻게 표시되나요?

In [18]:
sns.violinplot(x="day", y="total_bill", data=tips)
plt.show()

Q18 x=와 y=가 주는 의미는 무엇인가요?

In [19]:
sns.violinplot(y="day", x="total_bill", data=tips)
plt.show()
In [20]:
sns.violinplot(x="day", y="total_bill", hue="smoker", data=tips, palette="muted")
plt.show()

Q19 hue=와 palette은 어떤 일을 했나요?

In [21]:
sns.violinplot(x="day", y="total_bill", hue="smoker", data=tips, palette="muted", split=True)
plt.show()

Q20 split=True는 어떤 결과를 가져왔나요?

댓글 없음:

댓글 쓰기

PyR Intro - 신입생OT학기제