๋ฐ์ดํฐ์ ์ข
๋ฅ
๋ฐ์ดํฐ๋ ํฌ๊ฒ ๋ฒ์ฃผํ, ์์นํ ๋ ๊ฐ์ง ๋ถ๋ฅ๋ก ๋๋ ์ ์๋ค.
๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ ๋ฒ์ฃผ/์นดํ
๊ณ ๋ฆฌ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฐ๊ฐ์ ์ด๋ฆ์ ๊ฐ๋ ๋ฐ์ดํฐ ์ข
๋ฅ๋ค.
ex) ์ฑ๋ณ - ์ฌ์ฑ, ๋จ์ฑ / ํ๋ ฅ - ์ด์กธ, ์ค์กธ, ๋์กธ, ๋ํ์์กธ / ์ถ์ ํ๊ต - ๊ณ ๋ ค๋ํ๊ต, ์ฐ์ธ๋ํ๊ต, ...
๋ฐ๋ฉด ์์นํ ๋ฐ์ดํฐ๋ ๋ง๊ทธ๋๋ก ์ซ์๋ก ํ์๋๋ ์๋ฃ๋ค์ด๋ค.
ex) ๋์ด - 1์ด, 2์ด, ... / ํค - 160cm, 161cm, ... / ๋ชธ๋ฌด๊ฒ - 50kg, 51kg, ...
๋ฒ์ฃผํ ๋ฐ์ดํฐ(์ง์ ์๋ฃ)
๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ ๋ ์์ํ, ๋ช
๋ชฉํ์ด๋ผ๋ ๋ ๊ฐ์ง ํ์ ๋ถ๋ฅ๋ก ๋ค์ ๋๋์ด์ง๋ค.
์์ํ ๋ฐ์ดํฐ๋ ๊ฐ ๋ฐ์ดํฐ๋ณ๋ก ์์๊ฐ ๋๋์ด์ ธ ์๋ ๋ฐ์ดํฐ๋ค์ด๋ค.
์๋ฅผ ๋ค์ด ๋ง์กฑ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด, 5์ ๊ณผ 1์ ์ ๋๋ฑํ ์๊ฒฉ์ ๊ฐ๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ค. ๋ณดํต 5์ ์ด 1์ ๋ณด๋ค ๋ ๋์ ์์๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ๋ง์กฑ๋ ๋ฐ์ดํฐ๋ ์์ํ ๋ฐ์ดํฐ์ด๋ค.
๋ช
๋ชฉํ ๋ฐ์ดํฐ๋ ๋ฐ๋๋ก ๊ฐ ๋ฐ์ดํฐ๋ณ ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ด๋ค.
์ฑ๋ณ ๋ฐ์ดํฐ๋ ์ฌ์ฑ๊ณผ ๋จ์ฑ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ฐ ๋ ์ฌ์ด์ ์์๋ฅผ ๋งค๊ธธ ์ ์์ผ๋ฏ๋ก ๋ช
๋ชฉํ ๋ฐ์ดํฐ์ด๋ค.
์์นํ ๋ฐ์ดํฐ(์์ ์๋ฃ)
์์นํ ๋ฐ์ดํฐ ์ญ์ ์ด์ฐํ, ์ฐ์ํ์ด๋ผ๋ ๋ ํ์ ๋ถ๋ฅ๋ก ๋๋ ์ ์๋ค.
์ด์ฐํ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ฌ์ด์ ๋์ด์ง์ด ์๋ค.
๋ฌผ๊ฑด์ ๊ฐ์์ ๊ฐ์ ์์๋ฅผ ๋ค ์ ์๋ค. 1๊ฐ์ 2๊ฐ ์ฌ์ด์ธ ๊ฐ์๋ฅผ ์ ์ํ ์ ์์ผ๋ฏ๋ก ๋ฌผ๊ฑด์ ๊ฐ์๋ ์ด์ฐํ ๋ฐ์ดํฐ์ด๋ค.
๋ฐ๋ฉด ์ฐ์ํ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ฌ์ด์ ๋์ด์ง์ด ์๋ค.
ํค๋ 160cm์ 161cm ์ฌ์ด์ ๋ฌด์ํ ๋ง์ ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก, ์ฐ์์ ์ด๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ ๋ฐ๋ผ์ ์ฐ์ํ ๋ฐ์ดํฐ์ ํด๋นํ๋ค.
๋ฒ์ฃผํ ๋ฐ์ดํฐ ์๊ฐํ
๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ธฐ ์ํด์ seaborn, matplotlib์ ์ด์ฉํ๋ค.
import seaborn as sns
import matplotlib.pyplot as plt
์๋จ์ ํ์ผ์ ์ฌ์ฉํ์๋ค.
1) ๋ฒ์ฃผํ ๋ณ์ 1๊ฐ
๋ฒ์ฃผํ ๋ณ์๋ฅผ ์๊ฐํํ๊ธฐ ์ํด์ ๋ง๋๊ทธ๋ํ๋ ์๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์๋ค.
๋ง๋๊ทธ๋ํ์ ๊ฒฝ์ฐ pandas์ ๊ธฐ๋ฅ ์ค ํ๋์ธ plot.bar()๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
image = df['grade'].value_counts().plot.bar()
grade ๋ณ์๋ 1, 2, 3, 4, 5๋ฑ๊ธ ์ค ํ๋์ ๊ฐ์ ๊ฐ๋๋ค. ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ํ๊ฐ ๋์ถ๋๋ค.
๋ง๋๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์๋ seaborn์ ์นด์ดํธ๋ํ sns.countplot()์ด ์๋ค.
sns.countplot(x = 'grade', data = df)
์๊ทธ๋ํ๋ plt.pie()๋ฅผ ์ด์ฉํ๋ค.
plt.pie(x = df['grade'].value_counts(), labels = [1, 2, 3, 4, 5], autopct='%.1f%%')
2) ๋ฒ์ฃผํ ๋ณ์ + ์์นํ ๋ณ์ ์๊ฐํ
โ sns.lineplot(): ๋ช
๋ชฉํ + ์์นํ(์ฐ์ํ + ์ด์ฐํ)
โก sns.scatterplot(): ๋ช
๋ชฉํ + ์์นํ(์ฐ์ํ + ์ฐ์ํ)
โข sns.barplot(): ๋ช
๋ชฉํ + ์ฐ์ํ
โฃ sns.pointplot(): ๋ช
๋ชฉํ + ์ฐ์ํ
โค sns.boxplot(): ๋ช
๋ชฉํ + ์ฐ์ํ
โฅ sns.violinplot(): ๋ช
๋ชฉํ + ์ฐ์ํ
๊ต์ฅํ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐํ๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ๋์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ์๊ฐํ ๋ฐฉ๋ฒ์ ๊ณ ๋ฅด๋ฉด ๋๋ค.
์ด์ค์์ scatterplot์ ํ ๋ฒ ๊ทธ๋ ค๋ณด์.
sns.scatterplot(x = 'weight', y = 'height', data = df, hue = 'grade')
weight์ height ์ฌ์ด์ scatterplot์ ๊ทธ๋ ธ์ง๋ง, hue๋ฅผ ํตํด grade๋ณ๋ก ๋ค๋ฅด๊ฒ ํ์ํ์๋ค.
grade๋ ๋ฒ์ฃผํ ๋ณ์์ด๊ณ ๋๋จธ์ง๋ ์์นํ์ด๋ฏ๋ก ๋ฒ์ฃผํ, ์์นํ ์ฌ์ด ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๋ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค.
์์นํ ๋ฐ์ดํฐ ์๊ฐํ
1) ์์นํ ๋ณ์ 1๊ฐ
ํ์คํ ๊ทธ๋จ์ ๊ทธ๋ ค์ ์์นํ ๋ณ์๋ฅผ ์๊ฐํํด๋ณด์. plt.hist()๋ฅผ ์ด์ฉํ ์ ์๋ค.
plt.hist(df['height'])
๊ตฌ๊ฐ์ ๊ฐ์๋ hist์ ์ธ์์ธ bins์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
ํ์คํ ๊ทธ๋จ์ ํ๋ฅ ๋ฐ๋ํจ์๋ฅผ ์ถ๊ฐํ์ฌ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ๋ ์๋ค. sns.displot()๋ฅผ ์ด์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
sns.distplot(df['weight'])
sns.boxplot()์ ํตํด ๋ฐ์คํ๋กฏ์ ๊ทธ๋ฆด ์ ์๋ค. min, max, Q1, Q2, Q3, outlier๋ฅผ ํ์ธํ ์ ์๋ค.
plt.figure(figsize = (6, 8))
sns.boxplot(y = 'weight', data = df)
plt.show()
2) ์์นํ ๋ณ์ 2๊ฐ
โ sns.lineplot(): ์ฐ์ํ + ์ด์ฐํ
โก sns.scatterplot(): ์ฐ์ํ + ์ฐ์ํ
โข sns.regplot(): ์ฐ์ํ+ ์ฐ์ํ
๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐํ๊ฐ ๊ฐ๋ฅํ๋ค. ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐํ๋ฅผ ํ์ ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ์ ๋๋ฌ๋๋์ง๋ ์ฐ์ตํด๋ณผ ํ์๊ฐ ์๋ ๊ฒ ๊ฐ๋ค.