Data Processing
: Data Processing(๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ)๋ ํน์ฑ ๋ถ์์ ์ ํฉํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๋ ์์ ์ด๋ค.
๊ฐ์ฅ ๋ง์ ๋ ธ๋ ฅ์ด ๋ค์ด๊ฐ๋ ๊ณผ์ ..!
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ์ ์ข ๋ฅ๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ๋ค.
1. Data Cleaning(๋ฐ์ดํฐ ํด๋ฆฌ๋) - ๊ฒฐ์ธก์น์ฒ๋ฆฌ,,
2. Data Transformation(๋ฐ์ดํฐ ๋ณํ) - ์ ๊ทํ,,,๋ฑ๋ฑ
3. Data Reduction(๋ฐ์ดํฐ ์ถ์) - ์ฐจ์์ถ์,,,
*๊ทธ๋ผ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ์ ์ฒซ๋ฒ์งธ Data Cleaning์ ๋ํด ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค..!
~1. Data Cleaning(๋ฐ์ดํฐ ํด๋ฆฌ๋)~
๊ฒฐ์ธก์น ์ญ์
1. ํจํค์ง ์ํฌํธ ๋ฐ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
from pandas import read_csv
dataset=read_csv('pima-indians-diabetes.csv', header=None)
2. ๋ฐ์ดํฐ ํ์ธ
print(dataset.describe())
#0์ ๊ฒฐ์ธก์น ์ธ๋ฐ min๊ฐ์ด 0์ผ๋ก ํ์ธ๋จ
3. ๊ฒฐ์ธก์น ๊ฐ์ ํ์ธ
num_missing=(dataset[[1,2,3,4,5]]==0).sum()
print(num_missing)
1,2,3,4,5 ํ์์ 0์ ๊ฐฏ์๋ฅผ ์ธ์ด๋ณด๋ฉด ๊ฒฐ์ธก์น์ ๊ฐ์๋ฅผ ํ์ธํ ์ ์์!
4. 0์ ๊ฒฐ์ธก์น(nan)์ผ๋ก ๋ณ๊ฒฝ
import numpy as np
dataset=read_csv('pima-indians-diabetes.csv', header=None)
datasetorig=dataset.copy()
dataset[[1,2,3,4,5]]=dataset[[1,2,3,4,5]].replace(0, np.nan)
print(datasetorig.head(10))
print(dataset.head(10))
#0์ด nan์ผ๋ก ์ ๋ฐ๋ ๊ฒ์ ํ์ธ
0์ nan์ผ๋ก ๋ฐ๊พธ์ด์ ๊ฒฐ์ธก์น๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ํด์ค!
5. ๊ฒฐ์ธก์น ์ญ์
#nan์ผ๋ก ๋ฐ๊ฟ์ฃผ์์ผ๋ฏ๋ก dropna๋ฅผ ํํ๋ฉด na๊ฐ์ญ์ (ํ์ญ์ )
#inplace=True : ์ญ์ ๋ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋์ฒด
#axis=0(๋ํดํธ๊ฐ) -> ํ์ญ์
#axis=1(๋ํดํธ๊ฐ) -> ์ด์ญ์
dataset.dropna(inplace=True)
6. ์ญ์ ์ ํ ๋น๊ต
print("์ญ์ ์ ํ๊ฐ์ :", datasetorig.shape)
print("์ญ์ ํ ํ๊ฐ์ :", dataset.shape)
๊ฒฐ์ธก์น ํ์ ๋ชจ๋ ์ญ์ ํ๋ ๊ฐ์๊ฐ ๋ง์ด ์ค์ด๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด๋ ๊ฒ ๋ฐ์ดํฐ์ ์์ค์ด ํฐ ๊ฒฝ์ฐ์๋ ์ญ์ ๋ณด๋ค๋ ๊ฒฐ์ธก์น๋ฅผ ๋์ฒดํ๋ ๋ฐฉ๋ฒ์ ํ์ฉํ๊ธฐ๋ ํ๋ค!
๊ฒฐ์ธก์น ๋์ฒด
1. ๋ค์ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ ๋ฐ nan(๊ฒฐ์ธก์น)๋ก ๋ณ๊ฒฝ
import pandas as pd
dataset=pd.read_csv('pima-indians-diabetes.csv', header=None)
datasetorig=dataset.copy()
dataset[[1,2,3,4,5]]=dataset[[1,2,3,4,5]].replace(0, np.nan)
2. ์ต๋น๊ฐ/์ค์๊ฐ/ํ๊ท ๊ฐ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
from sklearn.impute import SimpleImputer
import pandas as pd
values=dataset.values
#strategy='most_frequent' -> ์ต๋น๊ฐ
#strategy='median' -> ์ค์๊ฐ
#strategy='mean' -> ํ๊ท ๊ฐ
imputer=SimpleImputer(missing_values=np.nan, strategy='mean')
dataimputed=pd.DataFrame(imputer.fit_transform(values))
#ํ๊ฐ์๊ฐ ๊ทธ๋๋ก์
print("์ญ์ ์ ํ๊ฐ์ :", datasetorig.shape)
print("์ญ์ ํ ํ๊ฐ์ :", dataset.shape)
#๊ฒฐ์ธก์น๋ ์ฌ๋ผ์ง๊ฒ์ ํ์ธํ ์ ์์
num_missing=(dataimputed[[1,2,3,4,5]]==0).sum()
print(num_missing)
3. ๊ฒฐ์ธก์น๋ฅผ ์๊ณ ๋ฆฌ์ฆ์ ํตํ์ฌ ๋์ฒด
import pandas as pd
dataset=pd.read_csv('pima-indians-diabetes.csv', header=None)
datasetorig=dataset.copy()
dataset[[1,2,3,4,5]]=dataset[[1,2,3,4,5]].replace(0, np.nan)
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
imputer=IterativeImputer()
datatrans=pd.DataFrame(imputer.fit_transform(dataset))
pip install missingpy
~๋๋คํฌ๋ ์คํธ ๊ฐ์ผ๋ก ๋์ฒด~
from missingpy import MissForest
imputer=MissForest()
datatrans=pd.DataFrame(impupter.fit_transform(dataset))
~KNN ๊ฐ์ผ๋ก ๋์ฒด~
from missingpy import KNNImputer
imputer=KNNImputer()
datatrans=pd.DataFrame(impupter.fit_transform(dataset))