Chapter 13. Visualization#
ํ์ต๋ชฉํ์ ๊ธฐ๋ํจ๊ณผ
ํ์ต๋ชฉํ
๋ฐฐ์ด, ๋ฐ์ดํํ๋ ์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
๊ธฐ๋ํจ๊ณผ
๊ทธ๋ํ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ํ๋ด์ด ๋ถ์, ์ฒ๋ฆฌํ๊ฑฐ๋ ํจ๊ณผ์ ์ผ๋ก ์ค๋ช ํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ค.
#I. Matplotlib
๋ฐ์ดํฐ ๋ถ์ ๋๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ค ํ๋๊ฐ ๋ฐ์ดํฐ ์๊ฐํ์ด๋ค. ํ์ด์ฌ ์ธ์ด๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ์๊ฐํ๋ matplotlib๊ณผ seaborn ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฅํ๋ค. matplotlib๊ณผ seaborn์ ๋ค์ํ ๊ทธ๋ํ ํจ์๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฌํ ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๋ ๊ฒ์ ์ด๋ ต์ง ์์ง๋ง, ๋ฐ์ดํฐ์ ์ ํฉํ ์๊ฐํ๋ฅผ ์ด๋์ด ๋ด๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๊ณ ์ด๋ ต๋ค.
Matplotlib๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ , ์ฐํฌ๋, ๋ง๋ ๊ทธ๋ํ, ๋ฉด์ ๊ทธ๋ํ, ํ์คํ ๊ทธ๋จ, ํ์ด์ฐจํธ, ๋ฐ์คํ๋กฏ ๋ฑ ๋ค์ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์๋๋ก ํ๋ค.
์๋์ ๋งํฌ๋ฅผ ํตํด ๋ค์ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ๊ณผ ์ต์ ์ ํ์ตํ ์ ์๋ค.
matplotlib ๊ณต์ ์ฌ์ดํธ : https://matplotlib.org/stable/index.html
seaborn ๊ณต์ ์ฌ์ดํธ : https://seaborn.pydata.org/
๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ : https://stackoverflow.com/
ํ๊ธ ํฐํธ ์ค์น ๋ฐ ์ค์ #
๊ทธ๋ํ์ ๊ทธ๋ํ์ ๋ชฉ, X์ถ์ด๋ฆ, Y์ถ์ด๋ฆ ๋ฑ ํ๊ธ์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ํ๊ธ์ด ๊นจ์ง์ง์๋๋ก ํฐํธ ์ค์น ๋ฐ ์ค์ ์ ๋จผ์ ํด์ฃผ์.
์๋ ์ ์ ์คํ์์ผ ํฐํธ๋ฅผ ์ค์นํด์ค๋ค.
๋ฉ๋ด์์ ๋ฐํ์ -> ์ธ์ ๋ค์ ์์์ ํด์ค๋ค.
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
'sudo' is not recognized as an internal or external command,
operable program or batch file.
'sudo' is not recognized as an internal or external command,
operable program or batch file.
ํฐํธ๋ฅผ ์ค์ ํ๋ค.
import matplotlib.pyplot as plt
import numpy as np
plt.rc('font', family='NanumBarunGothic')
ํฐํธ์ค์ ์ด ์ ๋์๋์ง ํ์ธํด๋ณธ๋ค. โํ๊ธโ์ด๋ผ๋ ๊ธ์๊ฐ ์ถ๋ ฅ์ด ๋์๋ค๋ฉด ์๋๊ฒ์ด๋ค.
plt.text(0.3, 0.3, 'ํ๊ธ', size=100)
plt.show()

Matplotlib: numpy ๋ฐ์ดํฐ ํ์ฉ#
numpy ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์. ํ์ํ ๋ชจ๋์ ๋จผ์ ๋ถ๋ฌ์จ๋ค.
matplotlib.pyplot ๋ชจ๋์ ๋ณดํต plt๋ผ๋ ๋ณ์นญ์ ์ฌ์ฉํ๋ค.
import matplotlib.pyplot as plt
import numpy as np
์ ๊ทธ๋ํ: plt.plot()#
์ ๊ทธ๋ํ๋ ์๋์ ์ ์ผ๋ก ํ์ํ๊ณ ์ ๊ณผ ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ง์ ์ผ๋ก ์ฐ๊ฒฐํ ๊ทธ๋ํ์ด๋ค.
์ฐ์ํ๋ ๋ฐ์ดํฐ ๊ฐ๋ค์ ์ง์ ๋๋ ๊ณก์ ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ ๊ฐ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
์๊ฐ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ์ ๋ณํ ์ถ์ธ๋ฅผ ํ์ ํ๋๋ฐ ์ ์ฉํ๋ค.
plt.plot(x, y, ...)
์ ๊ทธ๋ํ์ ์ฌ์ฉ๋ ์ ์๋ ๋ค์ํ ๊พธ๋ฏธ๊ธฐ ์ต์ ์ด ์๋ค.
๊ธ์ |
์ |
๊ธ์ |
์ /๋ง์ปค ๋ชจ์ |
์ต์ ๋ช |
์ต์ ๊ฐ |
||
---|---|---|---|---|---|---|---|
โbโ |
Blue |
โ-โ |
Solid line |
label |
โ๋ผ๋ฒจ๋ช โ |
||
โgโ |
Green |
โโโ |
Dashed line |
color/c |
โ์ ์โ |
||
โrโ |
Red |
โ-.โ |
Dash-dot line |
linewidth/lw |
์ ๊ตต๊ธฐ |
||
โcโ |
Cyan |
โ:โ |
Dotted lin |
linestyle/ls |
โ์ ๋ชจ์โ |
||
โmโ |
Magenta |
โ.โ |
Point marker |
marker |
โ๋ง์ปค๋ชจ์โ |
||
โyโ |
Yellow |
โ,โ |
Pixel marker |
markerfacecolor/mfc |
โ๋ง์ปค์โ |
||
โkโ |
Black |
โoโ |
Circle marker |
markersize/ms |
๋ง์ปคํฌ๊ธฐ |
||
โwโ |
White |
๐ ๋ฐฐ์ด x, y์ ๋ํ ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
x = np.arange(0, 10)
y = 2 * x**2 - 3 * x + 1
#TODO
#plt.plot(x, y, color = 'green', linestyle = 'dashed', marker = 'o', mfc = 'blue', ms = 12)
plt.show()
#plt.savefig('line.png') #.show()๋ฅผ ์ฃผ์์ฒ๋ฆฌํ๊ณ ํ์ผ๋ก ์ ์ฅํด์ผ ํ๋ค.
๋ค์ค ์ ๊ทธ๋ํ#
์ฌ๋ฌ ๊ฐ์ ๊ทธ๋ํ๋ฅผ ํ๋์ ๋ํ์ง์ ๊ทธ๋ฆฌ๊ณ ์ถ์ ๋์๋ ๊ทธ๋ํ๋ฅผ ๋จผ์ ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ๋ง์ง๋ง์ plt.show()ํ๋ฉด ๋๋ค.
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
#Todo
plt.title('Example of sinewave') # ์ ๋ชฉ
plt.legend() # ๋ฒ๋ก
plt.xlabel('Time') # x์ถ ๋ผ๋ฒจ
plt.ylabel('Amplitude') # y์ถ ๋ผ๋ฒจ
plt.show()
No handles with labels found to put in legend.

์ฐํฌ๋(์ฐ์ ๋) ๊ทธ๋ํ: plt.scatter()#
์ฐํฌ๋๊ทธ๋ํ๋ ๋ํ ์์ ๋ ๋ณ์ x์ y ๊ฐ์ด ๋ง๋๋ ์ง์ ์ ํ์ํ๋ค.
์ด ๊ทธ๋ํ๋ฅผ ํตํด ๋ ๋ณ์ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ ์ ์๋ค.
plt.scatter(x, y, ...)
์ฐํฌ๋ ๊ทธ๋ํ์ ์ฌ์ฉ๋๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ต์ ๋ช |
์ต์ ๊ฐ |
---|---|
color/c/facecolor/facecolors |
โ๋ง์ปค์โ(ํ๋์ ์ ๋์ ๋ฐ์ดํฐ ์ง์ ๊ฐ๋ฅ) |
cmap |
colormap |
marker |
โoโ, โ+โ, โ*โ, โ.โ, โ>โ |
alpha |
ํฌ๋ช ๋ |
s |
๋ง์ปคํฌ๊ธฐ |
https://matplotlib.org/tutorials/colors/colormaps.html
๐ ๋ฐฐ์ด x,y์ ๋ํด ์ฐํฌ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
x = np.random.randint(0, 100, 200)
y = np.random.randint(0, 100, 200)
#TODO
plt.show()
์นผ๋ผ๋ฐ๊ฐ ์๋ ์ฐํฌ๋ ๊ทธ๋ํ: plt.colorbar()#
color๋ฅผ ๋ฐ์ดํฐ์ ์ฐ๋์ํฌ ์ ์๋ค.
์ฐ๋์ํจ ๋ฐ์ดํ๊ฐ colorbar์ ์๊น๋ก ๋ํ๋๋ค.
plt.scatter(x,y,c=data)
plt.colorbar()
๐ ๋ฐฐ์ด x,y์ ๋ํด ์นผ๋ผ๋ฐ๊ฐ ์๋ ์ฐํฌ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
x = np.random.randint(0, 100, 20)
y = np.random.randint(0, 100, 20)
#TODO
plt.show()
์ธ๋ก ๋ง๋๊ทธ๋ํ: plt.bar()#
๋ง๋ ๊ทธ๋ํ๋ ๊ฐ ํญ๋ชฉ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ ์ ์๋๋ก ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ํ์ด๋ค.
plt.bar(x, y)
๐ ๋ฐฐ์ด x, ๋ฆฌ์คํธ y์ ๋ํด ์ธ๋ก ๋ง๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
x = np.arange(1, 6)
y = [10, 5, 25, 3, 22]
#TODO
plt.show()
๊ฐ๋ก ๋ง๋๊ทธ๋ํ: plt.barh()#
plt.barh(x, y)
๐ ๋ฐฐ์ด x, ๋ฆฌ์คํธ y์ ๋ํด ๊ฐ๋ก ๋ง๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
x = np.arange(1, 6)
y = [10, 5, 25, 3, 22]
#Todo
Matplotlib: ํ๋ค์ค ๋ฐ์ดํฐ ํ์ฉ#
import pandas as pd
scores = [[84, 87, 78], [21, 15, 84], [87, 84, 76], [100, 87, 99], [59, 99, 59], [46, 77, 56]]
names = ['์ฒ ์', '์์ด', '๊ธธ๋', '๋ฏธ์', '์์ด', '์ฒ ์ด']
lectures = ['๊ตญ์ด', '์์ด', '์ํ']
df=pd.DataFrame(scores, index=names, columns=lectures)
df
๊ตญ์ด | ์์ด | ์ํ | |
---|---|---|---|
์ฒ ์ | 84 | 87 | 78 |
์์ด | 21 | 15 | 84 |
๊ธธ๋ | 87 | 84 | 76 |
๋ฏธ์ | 100 | 87 | 99 |
์์ด | 59 | 99 | 59 |
์ฒ ์ด | 46 | 77 | 56 |
๋ฐ์ดํฐํ๋ ์์ผ๋ก ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ฒซ ๋ฒ์งธ๋ plt.๊ทธ๋ํํจ์๋ช (x, y)์ ๊ฐ์ด ์์ ์ค๋ช ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ทธ๋ฆฌ๋ ๊ฒ์ด๋ค.
์) plt.plot(df.index, df[โ๊ตญ์ดโ])
๋ ๋ฒ์งธ๋ ๋ฐ์ดํฐํ๋ ์๋ช .plot(kind=โ๊ทธ๋ํ์ข ๋ฅโ)์ ๊ฐ์ด ๋ฐ์ดํฐํ๋ ์๋ช ์ .์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์) df[โ๊ตญ์ดโ].plot(kind=โlineโ)
kind ์ต์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
โlineโ: ์ ๊ทธ๋ํ
โbarโ: ์์ง๋ง๋๊ทธ๋ํ
โbarhโ: ์ํ๋ง๋๊ทธ๋ํ
โpieโ: ์๊ทธ๋ํ
โboxโ: ๋ฐ์ค๊ทธ๋ํ
โkdeโ: ์ปค๋๋ฐ๋๊ทธ๋ํ
์ ๊ทธ๋ํ: df๋ณ์๋ช .plot(kind=โlineโ)#
df['๊ตญ์ด'].plot(kind='line', marker='*', markersize='10', markerfacecolor='red')
#plt.plot(df.index, df['๊ตญ์ด'], marker='*', markersize='10', markerfacecolor='red')
plt.title('๊ตญ์ด์ฑ์ ')
plt.xlabel('์ด๋ฆ')
plt.ylabel('์ ์')
plt.show()

์ฌ๋ฌ๊ฐ ๊ทธ๋ํ: plt.subplot()#
์ฌ๋ฌ ๊ฐ์ ๊ทธ๋ํ๋ฅผ ํ๋์ ๋ํ์ง์ ๋ํ๋ด๋ณด์.
plt.figure(figsize = (12,3)) : ๋ํ์ง์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ๋ก 12, ์ธ๋ก 3 ์ธ์น๋ก ์ค์ ํ๋ค.
plt.subplot(row, column, index): ํ๋์ ๋ํ์ง๋ฅผ row์ column์ผ๋ก ๋๋๊ณ ๊ทธ๋ํ๊ฐ ๋ค์ด๊ฐ ์์น ์ฆ, index๋ฅผ ์ ์ด์ค๋ค.
plt.figure(figsize=(12,3))
for i in range(3):
plt.subplot(1,3,i+1)
df[lectures[i]].plot(kind='line')
#plt.plot(names,df[lectures[i]])
plt.title(lectures[i]+'์ฑ์ ')
plt.show()

์ธ๋ก ๋ง๋๊ทธ๋ํ: df๋ณ์๋ช .plot(kind=โbarโ)#
df['๊ตญ์ด'].plot(kind='bar')
#plt.bar(df.index, df['๊ตญ์ด'])
plt.title('ํ์๋ค์ ์ฑ์ ')
plt.ylabel('์ ์')
plt.xlabel('์ด๋ฆ')
plt.show()

df.plot(kind='bar')
plt.title('ํ์๋ค์ ์ฑ์ ')
plt.ylabel('์ ์')
plt.xlabel('์ด๋ฆ')
plt.show()

์ธ๋ก ๋ง๋ ๊ทธ๋ํ๋ฅผ ์ ๋ ฌํด๋ณด์.
sorted_math=df.sort_values(by='์ํ')
sorted_math
๊ตญ์ด | ์์ด | ์ํ | |
---|---|---|---|
์ฒ ์ด | 46 | 77 | 56 |
์์ด | 59 | 99 | 59 |
๊ธธ๋ | 87 | 84 | 76 |
์ฒ ์ | 84 | 87 | 78 |
์์ด | 21 | 15 | 84 |
๋ฏธ์ | 100 | 87 | 99 |
sorted_math['์ํ'].plot(kind='bar')
plt.title('์ํ์ฑ์ ')
plt.ylabel('์ด๋ฆ')
plt.xlabel('์ ์')
plt.show()

๊ฐ๋ก ๋ง๋๊ทธ๋ํ: df๋ณ์๋ช .plot(kind=โbarhโ)#
df.plot(kind='barh', stacked = True)
plt.title('ํ์๋ค์ ์ฑ์ ')
plt.ylabel('์ด๋ฆ')
plt.xlabel('์ ์')
plt.show()

ํ์ด ๊ทธ๋ํ: df๋ณ์๋ช .plot(kind=โpieโ)#
autopct : ํ์ด์กฐ๊ฐ์ ๋ฐฑ๋ถ์จ๋ก ๋ํ๋ธ๋ค.
startangle: ์ฒซ ๋ฒ์งธ ํ์ด์ ์์ ๊ฐ๋
explode: ํน์ ์กฐ๊ฐ์ ๋์ถ์ํจ๋ค.
explode = [0.0, 0.1, 0.0, 0.0]
๋ฐ์ดํฐํ๋ ์๋ช
.plot(kind='pie',
figsize=(7,5),
autopct='%.1f%%',
startangle=0,
explode = explode,
colors=['chocolate','bisque','cadetblue','yellow'])
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
# ๋ฐ์ดํฐ ์ ์
departments = ['๊ฒฝ์ ํ๋ถ', '๊ตญ์ด๊ต์ก๊ณผ', '์๋ช
๊ณผํ๋ถ', '์๋น์์๋ํ๋ถ', '์๋ฆฌ๊ณผํ๋ถ',
'์ธ๋ก ์ ๋ณดํ๊ณผ', '์ธ์ดํ๊ณผ', '์๋์ง์์๊ณตํ๊ณผ', '์์ด๊ต์ก๊ณผ', '์ค๋ฆฌ๊ต์ก๊ณผ',
'์์ ์ ๊ณตํ๋ถ', '์ ์น์ธ๊ตํ๋ถ', '์ฒจ๋จ์ตํฉํ๋ถ', '์ฒด์ก๊ต์ก๊ณผ', 'ํต๊ณํ๊ณผ']
students = [4, 3, 3, 2, 6,
2, 4, 7, 3, 1,
5, 3, 2, 6, 3]
# ๋ฐ์ดํฐํ๋ ์ ์์ฑ
data = {'Department': departments, 'Students': students}
sugang = pd.DataFrame(data)
# ํ์ด์ฐจํธ ๊ทธ๋ฆฌ๊ธฐ
explode = [0.0, 0.1, 0.0, 0.0, 0.0,
0.0, 0.1, 0.0, 0.0, 0.0,
0.0, 0.1, 0.0, 0.0, 0.0,]
plt.figure(figsize=(10, 10))
sugang['Students'].plot(kind='pie', figsize=(7,5), labels=sugang['Department'], autopct='%1.1f%%', startangle=0, explode = explode)
plt.title('ํ๊ณผ๋ณ ์๊ฐ์ ๋น์จ')
plt.show()

II. Seaborn#
Matplotlib์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์์ ํ ๋ง์ ํต๊ณ์ฉ ์ฐจํธ ๋ฑ์ ๊ธฐ๋ฅ์ ํ์ฅํ ํ์ด์ฌ ์๊ฐํ ๋๊ตฌ์ ๊ณ ๊ธ ๋ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ ์๋ฆ๋ต๊ณ ๋ณต์กํ ์๊ฐํ๋ฅผ ๊ฐ๋จํ ์ฝ๋๋ก ๊ตฌํํ ์ ์๊ฒ ํด์ค๋ค.

import matplotlib.pyplot as plt
import seaborn as sns
์ ๊ทธ๋ํ: sns.lineplot()#
#sns.lineplot(data=df['ํ๊ท '])
sns.lineplot(x=df.index, y='๊ตญ์ด', data=df)
plt.show()

๋ง๋๊ทธ๋ํ: sns.barplot()#
์์ง๋ง๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฐ๋ค.
์ต์ orient=โhโ๋ฅผ ํ๋ฉด ์ํ๋ง๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฐ๋ค.
sns.barplot(data=df['๊ตญ์ด'])
sns.barplot(x=df.index, y='๊ตญ์ด', data=df)
plt.show()

sns.barplot(data=df['๊ตญ์ด'], orient='h')
plt.show()

์ฐํฌ๋ ๊ทธ๋ํ: sns.scatterplot()#
์ฐํฌ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฐ๋ค.
sns.scatterplot(data=df['๊ตญ์ด'])
plt.show()

๋ฐ์คํ๋กฏ ๊ทธ๋ํ:sns.boxplot()#
๋ฐ์คํ๋กฏ์ ์์ผ์์, ๋ด, ์บ๋ค ๋ฑ ๋ค์ํ ์ด๋ฆ์ ๊ฐ์ง ๊ทธ๋ํ์ด๋ค. ๋ฐ์ดํฐ์ ๋ถํฌ์ ์ด์์น๋ฅผ ๋์์ ๋ณด์ฌ์ค์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ตฐ์ ์ฝ๊ฒ ๋น๊ตํ ์ ์๋๋ก ์ต์๊ฐ, ์ต๋๊ฐ, ์ 1์ฌ๋ถ์์(Q1), ์ 2์ฌ๋ถ์์(Q2, ์ค์๊ฐ), ์ 3์ฌ๋ถ์์(Q3) ๋ฑ ๋ค์ฏ๊ฐ์ง ํต๊ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ธ๋ค.
๐ ์ฑ๋ณ๋ณ๋ก ๊ตญ์ด์ ์์ ๋ํด ๋ฐ์คํ๋กฏ์ ๊ทธ๋ ค๋ณด์.
gender = ['๋จ','์ฌ','๋จ','์ฌ','์ฌ','๋จ']
df['์ฑ๋ณ']= gender
sns.boxplot(x=df['์ฑ๋ณ'], y=df['๊ตญ์ด'])
#sns.boxplot(x='์ฑ๋ณ', y='๊ตญ์ด', data=df)
plt.show()

ํ๊ท์ ์ด ์๋ ์ฐํฌ๋ ๊ทธ๋ํ: sns.regplot()#
regression plot
์ฐํฌ๋์ ์ ํํ๊ท๋ถ์์ ์ํ ํ๊ท์ , 95%์ ์ ๋ขฐ๊ตฌ๊ฐ์ ํจ๊ป ๋ํ๋ด๋ ๊ทธ๋ํ์ด๋ค.
ํ๊ท์ : ์ฐํฌ๋์ ์ฐ์ฌํด ์๋ ์ ๋ค์ ๊ด๊ณ์ ๊ทผ๊ฑฐํ์ฌ ๊ทธ์ด์ง๋ ์
ํ๊ท์ ์์๋ ์์์ฒ๋ฆฌ ๋ ๋ถ๋ถ์ด ์ ๋ขฐ๊ตฌ๊ฐ์ด๋ค.
๐ ๊ตญ์ด์ ์์ด์ ๊ด๊ณ๋ฅผ ๋ณด๊ธฐ์ํด ํ๊ท์ ์ด ์๋ ์ฐํฌ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(5,3))
sns.regplot(x='๊ตญ์ด', y='์์ด', data=df)
plt.show()

์นดํ ๊ณ ๋ฆฌ๋ณ ํ๊ท์ ์ด ์๋ ์ฐํฌ๋ ๊ทธ๋ฆฌ๊ธฐ: sns.lmplot()#
regplot()๊ณผ ๋น์ทํ๋, hue ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ ํ์ฌ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ๊ฐ๊ฐ ๋ฐ์ดํฐ์ ๋ถํฌ์ ์ ํ ๊ด๊ณ๋ฅผ ํ์ํ ์ ์๋ค.
๐ ์ฑ๋ณ๋ก ๊ตฌ๋ถํ์ฌ ๊ตญ์ด์ ์์ด์ ๊ด๊ณ๋ฅผ ๋ณด๊ธฐ์ํด ํ๊ท์ ์ด ์๋ ์ฐํฌ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
plt.figure(figsize=(5,3))
sns.lmplot(x='๊ตญ์ด',y='์์ด',hue='์ฑ๋ณ',data=df)
plt.show()
<Figure size 360x216 with 0 Axes>

ํํธ๋งต ๊ทธ๋ํ: sns.heatmap()#
์์์ผ๋ก ํํํ ์ ์๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋งคํธ๋ฆญ์ค ํํ๋ก ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ํ์ด๋ค.
sns.heatmap(data)
annot : ๊ฐ ์ ์ ๊ฐ์ ๋ํ๋ธ๋ค.
fmt : ์ ์๋ก ๊ฐ์ ๋ํ๋ธ๋ค.
cmap: ์ปฌ๋ฌ๋งต์ ์ ์ด์ค๋ค. https://matplotlib.org/tutorials/colors/colormaps.html
๐ ํ์๊ณผ ๊ณผ๋ชฉ๋ณ ํํธ๋งต๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
sns.heatmap(df.loc[:, '๊ตญ์ด':'์ํ'],annot=True, fmt='d', cmap='YlGnBu', linewidth=0.5)
plt.show()

ํ์คํ ๊ทธ๋จ๊ณผ ์ปค๋๋ฐ๋ ๊ทธ๋ํ: sns.displot()#
๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ์คํ ๊ทธ๋จ๊ณผ ์ปค๋ ๋ฐ๋ ํจ์๋ฅผ ๊ทธ๋ํ๋ก ๋ณด์ฌ์ค๋ค.
ํ์คํ ๊ทธ๋จ์ ์ฐ์ํ ๋ฐ์ดํฐ๋ฅผ ํต๊ณ์ ์ผ๋ก ๊ทผ์ฌํํ์ฌ ๋์ ๋ถํฌ๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค.
์ปค๋๋ฐ๋ํจ์ : ๊ทธ๋ํ์ x์ถ ์ฌ์ด์ ๋ฉด์ ์ด 1์ด ๋๋๋ก ๊ทธ๋ฆฌ๋ ๋ฐ๋ ๋ถํฌ ํจ์
kde ์ต์ ์ False๋ก ์ฃผ๋ฉด ํ์คํ ๊ทธ๋จ๋ง ๋ณด์ฌ์ค๋ค.
hue ์ต์ ์ผ๋ก ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ฃ์ด์ค ์๋ ์๋ค.
plt.figure(figsize=(5,3))
sns.displot(df['์ํ'])
plt.show()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-29-eea6ee5d51a3> in <module>
1 plt.figure(figsize=(5,3))
----> 2 sns.displot(df['์ํ'])
3 plt.show()
AttributeError: module 'seaborn' has no attribute 'displot'
<Figure size 360x216 with 0 Axes>
count ๊ทธ๋ํ: sns.countplot()#
๊ณ ์ ํ ๊ฐ์ด๋ ๋ฒ์ฃผ ์๊ฐ ์ ํ๋ ๋ณ์(์: ์ฑ๋ณ ๋๋ ์ข ๊ต)์ธ ๋ฒ์ฃผํ ๋ณ์์ ๋น๋์๋ฅผ ์๊ฐํํ์ฌ ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ํ์ด๋ค.
plt.figure(figsize=(5,3))
sns.countplot(x='์ฑ๋ณ', data=df)
plt.show()
๋ฐ์ด์ฌ๋ฆฐ ๊ทธ๋ํ: sns.violinplot()#
๋ฐ์ด์ฌ๋ฆฐ๊ทธ๋ํ๋ ์ปค๋ ๋ฐ๋ ๊ณก์ (Kernel Density Curve)์ ๋ฐ์ค ํ๋กฏ์ ํฉ์น ํํ์ ๊ทธ๋ํ์ด๋ค.
ํ๋์ ๋ณ์์ ์ฐ์ํ ๋ฐ์ดํฐ์ ๋ถํฌ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ทธ๋ํ์ด๋ฉฐ, ์นดํ ๊ณ ๋ฆฌ๊ฐ์ ์ ์ฒด ํ์์ ๋ณด์ฌ์ค๋ค.
๐ ์ฑ๋ณ๋ณ๋ก ๊ตญ์ด์ ์์ ๋ํ ๋ฐ์ด์ฌ๋ฆฐ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์.
sns.violinplot(x='์ฑ๋ณ', y='๊ตญ์ด', data=df)
plt.show()
ํ๋ฉด๋ถํ ๊ทธ๋ํ: .FacetGrid()#
FacetGrid๊ทธ๋ํ๋ ํ, ์ด ๋ฐฉํฅ์ผ๋ก ์๋ก ๋ค๋ฅธ ์กฐ๊ฑด์ ์ ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ ์๋ธ ํ๋กฏ์ ๋ง๋ ๋ค.
map() ํจ์๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ์๋ธ ํ๋กฏ์ ์ ์ฉํ ๊ทธ๋ํ ์ข ๋ฅ๋ฅผ ์ ๋ฌํ๋ค.
df['ํ๊ท '] = df.loc[: , '๊ตญ์ด':'์ํ'].mean(axis=1)
df['Pass/Fail'] = ['Pass' if i >= 75 else 'Fail' for i in df['ํ๊ท ']]
df
g=sns.FacetGrid (data=df, col='Pass/Fail', row='์ฑ๋ณ')
g=g.map(plt.scatter, 'ํ๊ท ', '๊ตญ์ด')
์ด๋ณ์๋ฐ์ดํฐ ๋ถํฌ ๊ทธ๋ํ: sns.pairplot()#
pairplot๊ทธ๋ํ๋ ๋ฐ์ดํฐํ๋ ์์ ์ด(๋ณ์)์ ๋ ๊ฐ์ฉ ์ง์ ์ง์ ์ ์๋ ๋ชจ๋ ์กฐํฉ์ ๋ํด ๋ํ๋ธ๋ค.
๋ง๋ค์ด์ง ์ง์ ๊ฐ์๋งํผ ํ๋ฉด์ ๊ทธ๋ฆฌ๋๋ก ๋๋๋ค.
๊ฐ์ ๋ณ์๋ผ๋ฆฌ ์ง์ ์ด๋ฃจ๋ ๊ฒฝ์ฐ์๋ ํ์คํ ๊ทธ๋จ์ ๋ํ๋ด๊ณ , ์๋ก ๋ค๋ฅธ ๋ณ์ ๊ฐ์๋ ์ฐ์ ๋๋ฅผ ๋ํ๋ธ๋ค.
์ต์
hue
๋ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ๋ณด์ฌ์ค๋ค.
sns.pairplot(df)
plt.show()
์กฐ์ธํธ ๊ทธ๋ํ: sns.jointplot()#
์กฐ์ธํธ ๊ทธ๋ํ ์ฐ์ ๋๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ์ํ๊ณ , x-y์ถ์ ๊ฐ ๋ณ์์ ๋ํ ํ์คํ ๊ทธ๋จ์ ๋์์ ๋ณด์ฌ์ค ๋ ๋ณ์์ ๊ด๊ณ์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ๋์ด ์๋ ์ ๋๋ฅผ ํ๋์ ํ์ ํ๊ธฐ ์ข์ jointplot() ํจ์ ์ฌ์ฉ ํ๊ท์ ์ถ๊ฐ: kind=โregโ ์ปค๋ ๋ฐ๋ ๊ทธ๋ํ: kind=โkdeโ
sns.jointplot (x='๊ตญ์ด', y='์์ด', kind='kde', data=df)
plt.show()
๋ง๋ฌด๋ฆฌ#
์ ๊ทธ๋ํ:
plt.plot()
dt.plot(kind=โlineโ)
์ฐํฌ๋๊ทธ๋ํ:
plt.scatter()
dt.plot(kind=โscatterโ)
์นผ๋ผ๋ฐ: plt.colorbar()
์ธ๋ก๋ง๋ ๊ทธ๋ํ:
plt.bar()
dt.plot(kind=โbarโ)
๊ฐ๋ก๋ง๋ ๊ทธ๋ํ:
plt.barh()
dt.plot(kind=โbarhโ)
ํ์คํ ๊ทธ๋จ: dt.plot(kind=โhistโ)
ํ์ด์ฐจํธ: dt.plot(kind=โpieโ)
ํํธ๋งต: sns.heatmap()
์ด๋ณ์๊ทธ๋ํ: sns.pairplot()
ํ๊ท์ ์ด ์๋ ์ฐํฌ๋: sns.regplot()
์นดํ ๊ณ ๋ฆฌ๋ณ ํ๊ท์ ์ด ์๋ ์ฐํฌ๋: sns.lmplot()
ํ์คํ ๊ทธ๋จ: sns.histplot()
๋ง๋๊ทธ๋ํ: sns.barplot()
๋น๋๊ทธ๋ํ: sns.countplot()
๋ฐ์คํ๋กฏ๊ทธ๋ํ: sns.boxplot()
๋ฐ์ด์ฌ๋ฆฐ๊ทธ๋ํ: sns.violinplot()
ํ๋ฉด ๊ทธ๋ฆฌ๋๋ก ๋ถํ ํ๊ธฐ: sns.FacetGrid()