๐Ÿง‘โ€๐Ÿ’ป [Python EDA 4] Seaborn

๊น€๋ฏธ์—ฐยท2023๋…„ 8์›” 21์ผ
0

[๋‚˜๋งŒ์˜ ๋…ธํŠธ] Python EDA

๋ชฉ๋ก ๋ณด๊ธฐ
4/8

1. Seaborn์ด๋ž€

https://seaborn.pydata.org/

  • Matplotlib ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Pandas DataFrame์™€์˜ ์ž˜ ์ด๋ฃจ์–ด์ง€๋Š” ํ˜ธํ™˜

๐Ÿ’ก ์‹œ๊ฐํ™” 3๋Œ€์žฅ : matplotlib, seaborn, plotly

  • plotly : ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒํ•œ ์‹œ๊ฐํ™”
    - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์ดํ•ด ํ•„์š”
    - ์ฝ”๋”ฉ ์ž˜ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€๊ฐ€ ๋˜๊ณ  ์‹ถ์œผ๋ฉด plotly ๊ณต๋ถ€ ์ถ”์ฒœ!!
    - Dash : ๋Œ€์‹œ๋ณด๋“œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

2. Seaborn ์‚ฌ์šฉ๋ฐฉ๋ฒ•

1) ์„ค์น˜

!pip install seaborn

2) ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

import seaborn as sns

3) ํ•œ๊ธ€ ํฐํŠธ ์•ˆ ๊นจ์ง€๊ธฐ ์œ„ํ•œ ์„ค์ •

import matplotlib
import matplotlib.font_manager as fm

#plt.rc('font',family='AppleGothic')

# For Windows
font_location = 'C:/Windows/Fonts/Malgun.ttf' 

# For apple
# font_location = '/System/Library/Fonts/AppleSDGothicNeo.ttc'

font_name = fm.FontProperties(fname=font_location).get_name()
print(font_name)
matplotlib.rc('font', family=font_name)

4) Seaborn ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„ ํ…œํ”Œ๋ฆฟ

# data= DataFrame์— ํ•œ ํ•จ
sns.~plot(data= , x= , y= , hue= ) # x,y๋Š” ์นผ๋Ÿผ๋ช…

๐Ÿ’ก (๊ธฐ์–ตํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€) palette ์ƒ‰์ƒ

  • Blues
  • Paired
  • viridis

โ€‹

3. Seaborn ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  • seaborn์˜ load_dataset() ํ•จ์ˆ˜ ์ด์šฉ
titanic = sns.load_dataset('titanic')

penguins = sns.load_dataset('penguins')

โ€‹

4. ์„ ํ˜• ํšŒ๊ท€์„  ์žˆ๋Š” ์‚ฐ์ ๋„(Regplot)

  • regplot() ํ•จ์ˆ˜ : ์„ ํ˜• ํšŒ๊ท€์„ ์ด ์žˆ๋Š” ์‚ฐ์ ๋„
- ๋ฐ์ดํ„ฐ ์…‹
- x์ถ• ๋ณ€์ˆ˜
- y์ถ• ๋ณ€์ˆ˜
- axe ๊ฐ์ฒด
- fit_reg : ์„ ํ˜•ํšŒ๊ท€์„  ํ‘œ์‹œ ์—ฌ๋ถ€
# ๊ทธ๋ž˜ํ”„ ๊ฐ์ฒด ์ƒ์„ฑ (figure์— 2๊ฐœ์˜ ์„œ๋ธŒ ํ”Œ๋กฏ์„ ์ƒ์„ฑ)
fig = plt.figure(figsize=(15,5))
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
 
# ์‚ฐ์ ๋„์— ์„ ํ˜•ํšŒ๊ท€์„  ํ‘œ์‹œ(fit_reg=True)
sns.regplot(data=titanic, x='age', y='fare', ax=ax1)        

# ์‚ฐ์ ๋„์— ์„ ํ˜•ํšŒ๊ท€์„  ๋ฏธํ‘œ์‹œ(fit_reg=False)
sns.regplot(data=titanic, x='age', y='fare', ax=ax2, fit_reg=False)

plt.show()

โ€‹

5. Distplot, Histplot, Kdeplot

  • distplot( ) ํ•จ์ˆ˜ : ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„ ๋ฐ€๋„ ๊ทธ๋ž˜ํ”„์„ ํ‘œํ˜„ํ•˜๋Š” ํ•จ์ˆ˜
- ๋ถ„ํฌ๋ฅผ ๊ทธ๋ฆด ๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜
- hist : True๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ ํ‘œ์‹œ, False๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ ํ‘œ์‹œ ์•ˆ ํ•จ
- kde : True๋Š” ์ปค๋„ ๋ฐ€๋„ ๊ทธ๋ž˜ํ”„ ํ‘œ์‹œ, False๋Š” ์ปค๋„ ๋ฐ€๋„ ๊ทธ๋ž˜ํ”„ ํ‘œ์‹œ ์•ˆ ํ•จ
- axe ๊ฐ์ฒด
  • histplot( ) ํ•จ์ˆ˜ : ํžˆ์Šคํ† ๊ทธ๋žจ(ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ๊ตฌ๊ฐ„๋ณ„ ์ •๋ณด๋กœ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜)
  • kdeplot( ) ํ•จ์ˆ˜ : ์ปค๋„ ๋ฐ€๋„ ๊ทธ๋ž˜ํ”„(๊ทธ๋ž˜ํ”„์™€ x์ถ• ์‚ฌ์ด์˜ ๋ฉด์ ์ด 1์ด ๋˜๋„๋ก ๊ทธ๋ฆฌ๋Š” ๋ฐ€๋„ ํ•จ์ˆ˜)
# ๊ทธ๋ž˜ํ”„ ๊ฐ์ฒด ์ƒ์„ฑ (figure์— 3๊ฐœ์˜ ์„œ๋ธŒ ํ”Œ๋กฏ์„ ์ƒ์„ฑ)
fig = plt.figure(figsize=(15, 5))   
ax1 = fig.add_subplot(1, 3, 1)
ax2 = fig.add_subplot(1, 3, 2)
ax3 = fig.add_subplot(1, 3, 3)
 
# distplot
# ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ์ปค๋„ ๋ฐ€๋„ ๊ทธ๋ž˜ํ”„ ํ‘œ์‹œ
sns.distplot(titanic['fare'], ax=ax1) 

# histplot
#sns.histplot(data=titanic, x='fare', ax=ax2)์™€ ๋™์ผ  
sns.distplot(titanic['fare'], kde=False, ax=ax2)  

# kdeplot
#sns.kdeplot(data=titanic, x='fare', ax=ax3)์™€ ๋™์ผ  
sns.distplot(titanic['fare'], hist=False, ax=ax3) 

# ์ฐจํŠธ ์ œ๋ชฉ ํ‘œ์‹œ
ax1.set_title('titanic fare - distplot')
ax2.set_title('titanic fare - histplot')
ax3.set_title('titanic fare - kedplot')

plt.show()

data = sns.load_dataset('penguins')
data = data.dropna()

sns.histplot(data=data, x='bill_length_mm', bins=15, hue='species', palette='Set3', multiple='stack')

โ€‹

6. Displot

  • displot() ํ•จ์ˆ˜ : distribution๋“ค์„ ์—ฌ๋Ÿฌ subplot๋“ค๋กœ ๋‚˜๋ˆ ์„œ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
    - displot์— kind๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ, histplot, kdeplot, ecdfplot ์ถœ๋ ฅ ๊ฐ€๋Šฅ
    - row ๋ฐ col ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๊ทธ๋ž˜ํ”„ ๊ตฌ๋„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
sns.displot(data=data, x='bill_length_mm', row ='species', col='sex', kind='hist', hue='species', palette='viridis')

sns.displot(data=data, x='bill_length_mm', col='sex', kind='kde', hue='species', palette='viridis')

โ€‹

7. Barplot

  • barplot() ํ•จ์ˆ˜ : seaborn์—์„œ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜
- ์ฃผ์š” ์ธ์ž(parameter)
data, x, y, palette : ์ƒ‰์ƒ, hue: ๊ทธ๋ฃน, ax: axes, estimator: ์ง‘๊ณ„ํ•จ์ˆ˜

โ€‹
- ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ‰๊ท ์œผ๋กœ ์ง‘๊ณ„ํ•œ๋‹ค
- ๊ฐ€๋กœ / ์„ธ๋กœ ๋‘ ๊ฐ€์ง€๋กœ ๋ชจ๋‘ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
- x, y ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์„œ๋กœ ๋ฐ”๊พธ๋ฉด ์ถœ๋ ฅ ๋ฐฉํ–ฅ ๋ฐ”๊พธ๊ธฐ ๊ฐ€๋Šฅ

plt.figure(figsize=(12, 6)) # ๋„ํ™”์ง€ ์„ธํŒ…

# sns.barplot(data=data, x='species', y='bill_depth_mm', errorbar=None, palette='Set3') # ์„ธ๋กœ๋กœ ์ถœ๋ ฅ

sns.barplot(data=data, y='species', x='bill_depth_mm', errorbar=None, palette='Set3') # ๊ฐ€๋กœ๋กœ ์ถœ๋ ฅ, ๊ฒฐ๊ณผ๋Š” ํ‰๊ท ์œผ๋กœ ํ‘œํ˜„

# ๊ทธ๋ž˜ํ”„์˜ ์ถ”๊ฐ€์ ์ธ ์–‘์‹๋“ค์€ seaborn ํ•จ์ˆ˜ ๋ฐ‘์—๋‹ค๊ฐ€ ์ ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ
plt.title("ํŽญ๊ท„ ์ข…๋ณ„ ๋ถ€๋ฆฌ ๊ธธ์ด์˜ ํ‰๊ท ", fontsize=16)

# x ๋ˆˆ๊ธˆ ๋ณ€๊ฒฝ
plt.xticks([0, 5, 10, 15, 20])

# ๊ทธ๋ž˜ํ”„ ์ €์žฅ 
plt.savefig('sample_barplot.png') ๐ŸŒŸ๐ŸŒŸ๐ŸŒŸ

# ๊ทธ๋ž˜ํ”„๋งŒ ์ถœ๋ ฅ(๊ทธ๋ž˜ํ”„ ๊ด€๋ จ ์ฝ”๋“œ ๋งจ ๋งˆ์ง€๋ง‰์— ์ ์–ด์•ผ ํ•จ)
plt.show()

  • seaborn์— lambdaํ•จ์ˆ˜ ์ ์šฉ
# 15์„ธ ์ดํ•˜์˜ ๋น„์œจ ๊ทธ๋ž˜ํ”„
sns.barplot(data=df, x='Pclass', y='Age',
estimator=lambda x: (x <= 15).mean(), ci=False, palette='BuPu')

โ€‹

8. Boxplot

  • boxplot() ํ•จ์ˆ˜ : ๋ฐ์ดํ„ฐ์˜ ๊ฐ ์ข…๋ฅ˜๋ณ„๋กœ ์‚ฌ๋ถ„์œ„ ์ˆ˜(quantile)๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํ•จ์ˆ˜
    - ํŠน์ • ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด์ ์ธ ๋ถ„ํฌ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์ข‹์€ ์‹œ๊ฐํ™” ๊ธฐ๋ฒ•
    - box์™€ ์ „์ฒด range์˜ ๊ทธ๋ฆผ์„ ํ†ตํ•ด outlier(์ด์ƒ์น˜)๋ฅผ ์ฐพ๊ธฐ ์šฉ์ด(IQR : Inter-Quantile Range)
sns.boxplot(data=data, x='species', y='flipper_length_mm', palette='Set3')

โ€‹

9. ๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ์˜ ์‚ฐ์ ๋„(Stripplot, Swarmplot)

  • stripplot( ) ํ•จ์ˆ˜ : ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์ค‘๋ณต๋˜์–ด ๋ฒ”์ฃผ๋ณ„ ๋ถ„ํฌ๋ฅผ ์‹œ๊ฐํ™”
- ๋ฐ์ดํ„ฐ ์…‹
- x์ถ• ๋ณ€์ˆ˜
- y์ถ• ๋ณ€์ˆ˜
- axe ๊ฐ์ฒด
- hue : ํŠน์ • ์—ด ๋ฐ์ดํ„ฐ๋กœ ์ƒ‰์ƒ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅ
  • swarmplot( ) ํ•จ์ˆ˜
    : ๋ฐ์ดํ„ฐ์˜ ๋ถ„์‚ฐ๊นŒ์ง€ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์„œ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์‹œ๊ฐํ™”.
- ๋ฐ์ดํ„ฐ ์…‹
- x์ถ• ๋ณ€์ˆ˜
- y์ถ• ๋ณ€์ˆ˜
- axe ๊ฐ์ฒด
- hue : ํŠน์ • ์—ด ๋ฐ์ดํ„ฐ๋กœ ์ƒ‰์ƒ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅ
# ๊ทธ๋ž˜ํ”„ ๊ฐ์ฒด ์ƒ์„ฑ (figure์— 2๊ฐœ์˜ ์„œ๋ธŒ ํ”Œ๋กฏ์„ ์ƒ์„ฑ)
fig = plt.figure(figsize=(15, 5))   
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)

# ์ด์‚ฐํ˜• ๋ณ€์ˆ˜์˜ ๋ถ„ํฌ - ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ๋ฏธ๊ณ ๋ ค
sns.stripplot(data=titanic, x='class', y='age', ax=ax1)  

# ์ด์‚ฐํ˜• ๋ณ€์ˆ˜์˜ ๋ถ„ํฌ - ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ๊ณ ๋ ค (์ค‘๋ณต X) 
sns.swarmplot(data=titanic, x='class', y='age', ax=ax2, hue='sex') # ์„ฑ๋ณ„๋กœ ์ƒ‰์ƒ ๊ตฌ๋ถ„   

# ์ฐจํŠธ ์ œ๋ชฉ ํ‘œ์‹œ
ax1.set_title('Strip Plot')
ax2.set_title('Swarm Plot')

plt.show()

โ€‹

10. ๋นˆ๋„ ๊ทธ๋ž˜ํ”„(Countplot)

  • countplot( ) ํ•จ์ˆ˜ : ๊ฐ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”
- ๋ฐ์ดํ„ฐ ์…‹
- x์ถ• ๋ณ€์ˆ˜
- axe ๊ฐ์ฒด
- hue : ํŠน์ • ์—ด ๋ฐ์ดํ„ฐ๋กœ ์ƒ‰์ƒ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅ
- palette
# ๊ทธ๋ž˜ํ”„ ๊ฐ์ฒด ์ƒ์„ฑ (figure์— 3๊ฐœ์˜ ์„œ๋ธŒ ํ”Œ๋กฏ์„ ์ƒ์„ฑ)
fig = plt.figure(figsize=(15, 5))   
ax1 = fig.add_subplot(1, 3, 1)
ax2 = fig.add_subplot(1, 3, 2)
ax3 = fig.add_subplot(1, 3, 3)
 
# class๋ณ„ ์ธ์› ํŒŒ์•…
sns.countplot(data=titanic, x='class', ax=ax1, palette='Set3') 

# hue ์˜ต์…˜์— 'who' ์ถ”๊ฐ€ 
sns.countplot(data=titanic, x='class', ax=ax2, hue='who', palette='Set3')

# dodge=False ์˜ต์…˜ ์ถ”๊ฐ€ (์ถ• ๋ฐฉํ–ฅ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋ˆ„์  ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ)
sns.countplot(data=titanic, x='class', ax=ax3, hue='who', palette='Set3', dodge=False)

# ์ฐจํŠธ ์ œ๋ชฉ ํ‘œ์‹œ
ax1.set_title('titanic class')
ax2.set_title('titanic class - who')
ax3.set_title('titanic class - who(stacked)')

plt.show()

โ€‹

11. ์กฐ์ธํŠธ ๊ทธ๋ž˜ํ”„(Jointplot)

  • jointplot( ) ํ•จ์ˆ˜ : ์‚ฐ์ ๋„๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ‘œ์‹œ, x-y์ถ•์— ๊ฐ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๋™์‹œ์— ์‹œ๊ฐํ™”
- ๋ฐ์ดํ„ฐ ์…‹
- x์ถ• ๋ณ€์ˆ˜
- y์ถ• ๋ณ€์ˆ˜
- kind = 'reg' : ์„ ํ˜• ํšŒ๊ท€์„  ์ถ”๊ฐ€
- kind = 'hex' : ์œก๊ฐ ์‚ฐ์ ๋„ ์ถ”๊ฐ€
- kind = 'kde' : ์ปค๋„ ๋ฐ€์ง‘ ๊ทธ๋ž˜ํ”„ ์ถ”๊ฐ€
# ์กฐ์ธํŠธ ๊ทธ๋ž˜ํ”„ - ์‚ฐ์ ๋„(๊ธฐ๋ณธ๊ฐ’)
j1 = sns.jointplot(data = titanic, x='fare', y='age')
j1.fig.suptitle('titanic fare - scatter', size=15)

plt.show()

# ์กฐ์ธํŠธ ๊ทธ๋ž˜ํ”„ - ํšŒ๊ท€์„ (kind = 'reg')
j2 = sns.jointplot(data=titanic, x='fare', y='age', kind='reg')
j2.fig.suptitle('titanic fare - reg', size=15)

plt.show()

# ์กฐ์ธํŠธ ๊ทธ๋ž˜ํ”„ - ์œก๊ฐ ์‚ฐ์ ๋„(kind = 'hex')
j3 = sns.jointplot(data=titanic, x='fare', y='age', kind='hex')
j3.fig.suptitle('titanic fare - hex', size=15)

plt.show()

# ์กฐ์ธํŠธ ๊ทธ๋ž˜ํ”„ - ์ปค๋„ ๋ฐ€์ง‘ ๊ทธ๋ž˜ํ”„(kind = 'kde')
j4 = sns.jointplot(data=titanic, x='fare', y='age', kind='kde')
j4.fig.suptitle('titanic fare - kde', size=15)

plt.show()

โ€‹

12. ๊ด€๊ณ„ ๊ทธ๋ž˜ํ”„(Pairplot)

  • pairplot( ) ํ•จ์ˆ˜
    - ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ feature(์ˆ˜์น˜ํ˜•)์„ ๋‘ ๊ฐœ์”ฉ ์ง ์ง€์€ ๋ชจ๋“  ์กฐํ•ฉ ํ‘œํ˜„(displot์˜ ํ™•์žฅํŒ)
    - ๊ฐ ๊ทธ๋ฆฌ๋“œ์— ๋‘ feature์— ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ํ•˜๋‚˜์”ฉ ํ‘œํ˜„
    - ๊ฐ™์€ feature์— ์ง์„ ์ด๋ฃจ๋Š” ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ ์‹œ๊ฐํ™”
    - ์„œ๋กœ ๋‹ค๋ฅธ feature์— ๊ฐ„์—๋Š” ์‚ฐ์ ๋„ ์‹œ๊ฐํ™”
    - ๊ฐ feature์— ๋Œ€ํ•ด ๊ณ„์‚ฐ๋œ ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, feature๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ ๋ถ€์ ํ•ฉ(๋ณดํ†ต 6๊ฐœ ์ •๋„๊นŒ์ง€๋งŒ ์‚ฌ์šฉ)
    - feature๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ, ๋ช‡ ๊ฐœ feature์— ๋Œ€ํ•ด์„œ๋งŒ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ํ•˜๋‚˜์”ฉ ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ
titanic_pair = titanic[['age', 'pclass', 'fare']]
sns.pairplot(titanic_pair)

plt.show()

sns.pairplot(data=data, hue='species')

โ€‹

13. Lineplot

  • lineplot() ํ•จ์ˆ˜ :ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ x, y๋กœ ํ‘œ์‹œํ•˜์—ฌ ๊ด€๊ณ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜(์„  ๊ทธ๋ž˜ํ”„)
    - ์ˆ˜์น˜ํ˜• ์ง€ํ‘œ๋“ค ๊ฐ„์˜ ๊ฒฝํ–ฅ์„ ํŒŒ์•…ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.(์˜ค์ฐจ ํฌํ•จ)
    - ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ฅธ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ/ ์—ฐ์†ํ•œ ๋ฐ์ดํ„ฐ๋“ค ๋ณผ ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ
sns.lineplot(data=data, x='body_mass_g', y='flipper_length_mm', errorbar=None, hue='species', palette='winter')

โ€‹

14. Scatterplot

  • scatterplot() ํ•จ์ˆ˜ : lineplot๊ณผ ๋น„์Šทํ•˜๊ฒŒ x, y์— ๋Œ€ํ•œ ์ „์ฒด์ ์ธ ๋ถ„ํฌ๋ฅผ ํ™•์ธํ•˜๋Š” plot
    - lineplot์€ ๊ฒฝํ–ฅ์„ฑ์— ์ดˆ์ ์„ ๋‘”๋‹ค๋ฉด, scatterplot์€ ๋ฐ์ดํ„ฐ ๊ทธ ์ž์ฒด๊ฐ€ ํผ์ ธ์žˆ๋Š” ๋ชจ์–‘์— ์ค‘์ 
    - ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด, Lineplot๋ณด๋‹ค๋Š” Scatterplot ์‚ฌ์šฉ
- s : ์  ํฌ๊ธฐ
- alpha(0~1) : ํˆฌ๋ช…๋„
- plt.scatter์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
sns.scatterplot(data=data, x='body_mass_g', y='flipper_length_mm', hue='species', palette='Blues', s=50, alpha=1)

โ€‹

15. Heatmap

  • heatmap() ํ•จ์ˆ˜ : ๋ฐ์ดํ„ฐ์˜ ๊ด€๊ณ„๋ฅผ ์ •์‚ฌ๊ฐํ˜• ๊ทธ๋ฆผ์˜ ์ƒ‰ ์ฐจ์ด๋กœ ๋ณด์—ฌ์ฃผ๋Š” ํ•จ์ˆ˜
    - ๋ง ๊ทธ๋Œ€๋กœ heatmap์ด๊ธฐ ๋•Œ๋ฌธ์—, ์—ดํ™”์ƒ์นด๋ฉ”๋ผ๋กœ ์‚ฌ๋ฌผ์„ ์ฐ์€ ๊ฒƒ์ฒ˜๋Ÿผ ์ •๋ณด์˜ ์ฐจ์ด๋ฅผ ํ‘œํ˜„
    - pairplot๊ณผ ๋น„์Šทํ•˜๊ฒŒ feature๊ฐ„ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐํ™”ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ
    - ์ƒ๊ด€๊ด€๊ณ„ : ์–ด๋–ค X๊ฐ’์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ Y๊ฐ’์˜ ์„ ํ˜•์ ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š”์ง€๋ฅผ ์ธก์ •ํ•œ ์ง€ํ‘œ(๋ฒ”์œ„ : -1 ~1)
sns.heatmap(data=data.corr(), annot=True, fmt='.3f', cmap='Blues_r')

0๊ฐœ์˜ ๋Œ“๊ธ€