12๋ฒ ๋ฌธ์
์ฃผ์ด์ง ๋ฐ์ดํฐ์ ์ฒซ ๋ฒ์งธ ํ๋ถํฐ ์์๋๋ก 80%๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ํ๋ จ ๋ฐ์ดํฐ๋ก ์ถ์ถ ํ
'total_bedrooms' ๋ณ์์ ๊ฒฐ์ธก๊ฐ(NA)์ 'total_bedrooms' ๋ณ์์ ์ค์๊ฐ์ผ๋ก ๋์ฒดํ๊ณ
๋์ฒด ์ ์ 'total_bedroom' ๋ณ์ ํ์คํธ์ฐจ ๊ฐ๊ณผ ๋์ฒด ํ์ 'total_bedrooms' ๋ณ์ ํ์คํธ์ฐจ ๊ฐ ์ฐจ์ด์ ์ ๋๊ฐ์ ๊ตฌํ์์ค.
12๋ฒ ํ์ด
1. ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
data=pd.read_csv("housing.csv")
2. 80%-ํ๋ จ๋ฐ์ดํฐ๋ก ์ถ์ถ
len_data=len(data)*0.8
len_data=int(len_data)
#์ถ์ถ
train=data[:len_data]
- len( ) : ๋ฐ์ดํฐ์ ํ ๊ฐ์๋ฅผ ์ ์ฅ
- int( ) : 0.8์ ๊ณฑํด์ฃผ๋ ์ฐ์ฐ ํ์ ์ ์ฅํ๋ฉด ์ค์๊ฐ์ผ๋ก ์ ์ฅ๋๋๋ฐ, ์ด๋๋ก ์ ์ฅํ๋ฉด data[:len_data]๋ฅผ ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์ ์๊ฐ์ผ๋ก ์ง์ ํด์ค์ผํ๊ธฐ ๋๋ฌธ..! ๋ฐ๋ผ์ int()๋ณํ์ ํด์ค์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค..!
3. NA ๊ฐ์ ํ์ธ
print(train.isnull().sum())
#train=train.copy()
#๋ณํ ์ ํ์คํธ์ฐจ ๊ตฌํด๋๊ธฐ
old=train['total_bedrooms'].std()
#์ค์๊ฐ์ผ๋ก ๊ฒฐ์ธก์น ์ฑ์
train['total_bedrooms']=train['total_bedrooms'].fillna(train['total_bedrooms'].median())
- train=train.copy() : ์ด ์ฝ๋๋ฅผ ์จ์ฃผ์ง ์์ผ๋ฉด ์๊พธ ์๋์๊ฐ์ ๊ฒฝ๊ณ ๋ฌธ์ด ๋ํ๋๋๋ผ๊ตฌ์. ๋์ผํ๊ฒ ๋ํ๋์ ๋ค๋ฉด ์ด ์ฝ๋๋ฅผ ์ ์ด์ฃผ์๋ฉด ๋ฉ๋๋น..! ๋ฌผ๋ก ๊ฒฝ๊ณ ๋ฌธ์ด๊ธฐ ๋๋ฌธ์ ์ ์ด์ฃผ์์ง ์์ผ์ ๋ ์ฝ๋๋ ๋๊น์ง ์คํ์ด ๋ฉ๋๋ค.
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
self._set_item(key, value)
- ํ์ธ
print(train.isnull().sum())
4. ํ์คํธ์ฐจ ๊ตฌํ๊ธฐ
new=train['total_bedrooms'].std()
5. ๋์ฒด์ ํ์คํธ์ฐจ์ ๋์ฒดํ ํ์คํธ์ฐจ ์ฌ์ด์ ์ฐจ์ด(์ ๋๊ฐ)
result=abs(old-new)
- abs() : ์ ๋๊ฐ์ ๊ตฌํด์ค
6. ๊ฒฐ๊ณผ๊ฐ ์ ์ถ
print(result)