[ํผ๊ณต ๋ฐ์ดํฐ๋ถ์6] ๋ถํฌ ์์ฝํ๊ธฐ
< ์ฐ์ ๋ ๊ทธ๋ฆฌ๊ธฐ >
์ฐ์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋ฟ๋ฆฌ๋ ๊ทธ๋ํ์ด๋ค
# ์ง๋ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
pd.read_csv
import pandas as pd
import numpy as np
root = '/content/drive/MyDrive/แแ
ฉแซแแ
ฉแผ แแ
ฆแแ
ตแแ
ฅแแ
ฎแซแแ
ฅแจ'
file_address = root + '/ns_book7.csv'
df = pd.read_csv(file_address, low_memory = False)
df
# ๋งทํ๋กฏ๋ฆฝ ํจํค์ง ์ํฌํธํ๊ธฐ
import matplotlib.pyplot as plt
plt.scatter([1,2,3,4], [1,2,3,4])
plt.show()
plt.scatter(df['๋ฒํธ'], df['๋์ถ๊ฑด์'])
plt.show()
average = df['๋์ถ๊ฑด์'] / df['๋์๊ถ์']
plt.scatter(average , df['๋์ถ๊ฑด์'], alpha = 0.1)
plt.show()
< ํ์คํ ๊ทธ๋จ ๊ทธ๋ฆฌ๊ธฐ >
# ํ์คํ ๊ทธ๋จ์ ๋ป
๊ตฌ๊ฐ์์ ํฌํจ๋ ๋ฐ์ดํฐ ๊ฐ์๋ฅผ ๋ง๋ ๊ทธ๋ํ๋ก ๊ทธ๋ฆฐ ๊ฒ์ด๋ค!
๋งทํ๋กฏ๋ฆฝ์ผ๋ก ํ์คํ ๊ทธ๋จ์ ๊ทธ๋ฆด ๋๋ hist() ํจ์๋ฅผ ์ฌ์ฉํ๋ค
bins ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ตฌ๊ฐ์ ์ง์ ํ ์ ์๋ค
๋ง์ฝ bins๋ฅผ 100์ผ๋ก ์ง์ ํ๋ฉด ๋์ฑ ์ธ๋ฐํ๊ฒ ๊ด์ฐฐํ ์ ์๋ค
plt.hist([0,3,5,6,7,7,9,13], bins = 5)
plt.show()
# ํ์คํ ๊ทธ๋จ์ ๊ตฌ๊ฐ์ ์ ํํ๊ฒ ํ์ธํ๊ธฐ
import numpy as np
np.histogram_bin_edges([0,3,5,6,7,7,9,13], bins=5)
# ๊ฒฐ๊ณผ
array([ 0. , 2.6, 5.2, 7.8, 10.4, 13. ])
# ๊ตฌ๊ฐ ์กฐ์ ํ๊ธฐ
ํ ๊ตฌ๊ฐ์ ๋์๊ฐ ๋๋ฌด ์ปค์ ๋ค๋ฅธ ๊ตฌ๊ฐ์๋ ๋์๊ฐ ํ์๋์ง ์๋ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ก๊ทธ ์ค์ผ์ผ๋ก ๋ฐ๊พธ์ด ๋ก๊ทธ ํจ์๋ฅผ ์ ์ฉํ ์ ์๋ค
๊ทธ๋ฌ๋ฉด ํฐ ๊ฐ์ผ์๋ก ๋์ ํฌ๊ธฐ๊ฐ ๋ง์ด ์ค์ด๋ค์ด ์์ ๊ฐ๊ณผ์ ์ฐจ์ด๊ฐ ์ค์ด๋ ๋ค
# y์ถ์ ๋ก๊ทธ ์ค์ผ์ผ๋ก ๋ฐ๊พธ๊ธฐ
yscale() ํจ์์ 'log'๋ฅผ ์ง์ ํ๋ค๋ฉด ๋ฐ์ด 10์ธ ๋ก๊ทธ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค
plt.hist(df['๋์ถ๊ฑด์'])
plt.yscale('log')
plt.show()
# x์ถ์ ๊ตฌ๊ฐ์ ๋ ์ธ์ธํ๊ฒ ๋๋ ๋ณด๊ธฐ
bins = 100 ์ผ๋ก 100๊ฐ์ ๊ตฌ๊ฐ ๋๋ ๋ณด๊ธฐ
plt.hist(df['๋์ถ๊ฑด์'], bins=100)
plt.yscale('log')
plt.show()
# ๋์๋ช ์ ๊ธธ์ด์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๊ฐ์ ๊ทธ๋ํ, ๊ตฌ๊ฐ์ 100๊ฐ ๊ตฌํ๊ธฐ
1) ์ ๊ท๋ถํฌ์ ๊ฐ๊น์ธ ์ ์๊ณ
2) ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ์ ํธ์ค๋ ๊ทธ๋ํ๋ก ๋ํ๋ ์ ์๋ค
title_len = df['๋์๋ช
'].apply(len)
plt.hist(title_len, bins=100)
plt.show()
# x์ถ์๋ ๋ก๊ทธ ์ค์ผ์ผ ์ ์ฉ์์ผ๋ณด๊ธฐ
plt.hist(title_len, bins=100)
plt.xscale('log')
plt.show()
# ์์ ์์ผ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ
์์ ์์ผ ๊ทธ๋ฆผ์ ์ต์๊ฐ, ์ธ ๊ฐ์ ์ฌ๋ถ์์, ์ต๋๊ฐ ์ด๋ ๊ฒ ๋ค์ฏ ๊ฐ์ ์ซ์๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์์ฝํ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฐ๋ค
boxplot() ํจ์๋ฅผ ์ฌ์ฉํ๋ค
plt.boxplot(df[['๋์ถ๊ฑด์', '๋์๊ถ์']])
plt.yscale('log')
plt.show()
# ์์ ์์ผ ๊ทธ๋ฆผ ์ํ์ผ๋ก ๊ทธ๋ฆฌ๊ธฐ
vert = False
plt.boxplot(df[['๋์ถ๊ฑด์', '๋์๊ถ์']], vert = False)
plt.xscale('log')
plt.show()
# ์์ผ ๊ธธ์ด ์กฐ์ ํ๊ธฐ
whis = 10
๊ธฐ๋ณธ๊ฐ 1.5๋ฅผ 10์ผ๋ก ๋ฐ๊พธ์ด์ IQR์ 10๋ฐฐ ๋ฒ์ ์์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ฐ์ดํฐ๊น์ง ์์ผ ๊ทธ๋ฆฌ๊ธฐ
์ 1์ฌ๋ถ์์ (25%) ์ ์ 3์ฌ๋ถ์์ (75%) ์ฌ์ด์ ๊ฑฐ๋ฆฌ -> IQR
plt.boxplot(df[['๋์ถ๊ฑด์', '๋์๊ถ์']], whis=10)
plt.yscale('log')
plt.show()
< ํ๋ค์ค์ ๊ทธ๋ํ ํจ์ >
# ์ฐ์ ๋ ๊ทธ๋ฆฌ๊ธฐ
ํ๋ค์ค ๋ฐ์ดํฐํ๋ ์ ๊ฐ์ฒด์ plot์์ฑ ์ค scatter ๋ฉ์๋๋ก ์ฐ์ ๋๋ฅผ ๊ทธ๋ฆด ์ ์๋ค
df.plot.scatter('๋์๊ถ์', '๋์ถ๊ฑด์', alpha = 0.1)
plt.show()
# ํ์คํ ๊ทธ๋จ ๊ทธ๋ฆฌ๊ธฐ
๋งทํ๋กฏ๋ฆฝ์ผ๋ก ๊ทธ๋ฆด ๋๋ ๋์๋ช ๊ธธ์ด์ ๋ํ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ์์ฑํ์๋๋ฐ
ํ๋ค์ค๋ ๋ค์์ฒ๋ผ ๋ฐ์ดํฐํ๋ ์์ apply()๋ฉ์๋๋ฅผ ์ ์ฉํ ๋ค์ ๋ฐ๋ก plot.hist() ํธ์ถ
df['๋์๋ช
'].apply(len).plot.hist(bins=100)
plt.show()
# ์์ ์์ผ ๊ทธ๋ฆฌ๊ธฐ
df[['๋์ถ๊ฑด์', '๋์๊ถ์']].boxplot()
plt.yscale('log')
plt.show()