ααΆααΏααααα»ααααααα
αΌααα
αααα»ααα·ααααα·ααααΆααΆααααααα·ααααααααΆααα·α
ααΆαααΆαααααΉααα»αααΆαααααααααα’αααΈααααααα»ααααα
αΆααα½αααα ααα»αααααΆα
αααΎααα·αααΆα₯α‘αΌαααααα½αααααΉαααααααααααΆααααααααααΆααααααΆαα αααααΎααααα½αααΆαααα‘ααααΈ Iron Man α¬ααΆαα’ααααααααααααΆαα
αααα»αααΈααααΆαα α·ααααααααα»α
ααα»ααααααααΎααΆα αα·αααααα α’ααααα·ααααΆααΆαααααααααΌαααΆααααα»αααααα·αααααα α αΎααα·αααααΆαααααααΆαααααα»α αα·αααααΎααααΆαααααααααΆαα½αααΊααααΎαααΆααα·αααααααα»αααααααα
αΌαααΆαα
αααα»ααααααΆααααααααααΆα α¬αα·ααΆαααΆααΆααα·ααΈααΆααααΆαααα½αα
αα αααα»αα’αααααααα αααα»αααΆαααΆαααααααΎαααΉααααααΆααααΈαααααααα’αααα’αΆα ααααΎαααΆααα·ααααααααΆααααΆααα αα αα·αααΆααααα½αααΆαα½αααΉαααΆαααααΆα αα·ααααααΌαααΆααα αΆααα ααΎαααΆαααααΆααΆαααααΎα±ααααΌαααΆαααΆααααααα αα·αα’αΆα ααααΎαααααΆαααααα»ααα·ααααααααααααααααΆα
α’αααααααΆαααΆα
αααΎααααα ααααΆαα·αααααΎαα’αααΈααααα·αααααααΆαα
αααα»αα’αααααααααα ααα»ααααα’αααα
αΆααααααΎαααααΌαααΉαα’αΆα
αααα’αααΈααααΈ α αΎαα’αααααΆααααα»αα·αα
αααααααΎαααααα
αααααααΆααΆα
ααααα‘αααα½ααααααΆααααααΎαααΆααα·ααααααααΏα αα·αααΆααα
ααΆααααααααα’αΆα
α
ααααααΌα αα·αααααΎαααααααααΆααααααΆαααααα½ααα α¬
ααΎαααΆαααα½ααααα»ααα·ααααααα α’αααΈαααααααΌαααααΎαααααΆαα?
ααΌα αααα αααααααΆαα ααΎαααααΌααααααΈα’αααΈαααααΎααααα»ααααααααΆα ααΆααΌαααΆααα½αα ααΎααααΈααααΎααΌα αααααΎαααααΎαααααΆααΎααααΈααααααααααααα·ααααααααααααααααΆα
import pandas as pd #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ pandas
import numpy as np #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ numpy
df = pd.read_csv("AB_NYC_2019.csv") #ΡΠΈΡΠ°Π΅ΠΌ Π΄Π°ΡΠ°ΡΠ΅Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ df
df.head(3) #ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΠ΅ΡΠ²ΡΠ΅ 3 ΡΡΡΠΎΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
df.info() #ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ
αααααΎαααααααα½αααα
- ααΎβα ααα½αβαααααΆααβαααα»αβαα½αβααβααΈαα½ααβααααΌαβααΉαβα ααα½αβαααααΆααβααα»αβαααβα¬βαα?
- ααΎα’αααΈααΆααααΉαααΆααααα·αααααααα αααα»ααα½αααααΈαα½αα?
- ααΎαα½ααααα½αααΆαααααΎαα αααααααααααα ααΎααααΈααααΎααΆαααααΆαααααααααΆααααΆ?
α ααααΎαα αααααααα½αααΆαααααααΉαα’αα»ααααΆαα±ααα’ααααα·ααΆααααα»ααα·αααααα αα·αααΌααααααΆααααααΆαααααααααΆααααααΆααααααα’αααα
ααΌα ααααΆαααααααα αααααΆααααΆαααΎαα±ααααΆαααααααΈααααα α’αααΈααααααα αααα»ααα½αααααΈαα½αα ααΎαα’αΆα ααααΎαα»αααΆα pandas describe() α ααααααΆαααΆααααα αα»ααα·ααααα·αααα»αααΆααααααΊααΆααΆαα·ααααααααααααΆαα’αααΈαα½ααααααααΆααααααααααα’ααααααα ααΎαααΉααααααααΆαααΆαα½ααα½ααααα ααααααααα
df.describe()
ααΆαααΎαααΎαααααααα
αααααΎααααααααααααΎαααααΆααααααααΆααα’ααααααΆα
import seaborn as sns
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')
αααααΆαα·αααααΆαααααΈαααΈααΆαααΎ α₯α‘αΌααααααΎαααΉααααααα
α’αααΈααααα½αα±ααα
αΆααα’αΆααααααααααααααα
α αΌαααΎαααααΆααΆαααααααα α αΎαααααα·αααΎα’αΆα ααααΎααΆα ααΌααααα½ααααααααΆαααααααααα½ααα αααα»ααα½αααΆααα’ααα αα (αα½αααΆααΉααα·ααααααΆαααααααααααααΆααααααααΆαααΆαα½αα‘αΎα)α
df = df[[c for c
in list(df)
if len(df[c].unique()) > 1]] #ΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π΄Π°ΡΠ°ΡΠ΅Ρ, ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
α₯α‘αΌαααα ααΎαααΆαααΆααααα½αααΎα αα·αααΆαααααααααααααααααααααΎαααΈαααααΆαααααα½α (αααααΆαααααααΆαααααααΆαααΌα ααααΆαααα»αααααΆααααΌα ααααΆααΆαα½αααΉααααααΆαααααααΆαααααΆαααα½α)α
df.drop_duplicates(inplace=True) #ΠΠ΅Π»Π°Π΅ΠΌ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΈΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΌ.
#Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
ΡΠ΄Π°Π»ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Π½Π΅ ΡΡΠΎΠΈΡ.
ααΎααααα αααααα»ααα·ααααααααΆααΈαα αα½αααΆαααααααα»αααΆα αα·ααα½ααααααΆαααα·ααΆα
αα ααΈαααααΎαααααΌαααααΎααΆααααααΆααααΌα αα½αα ααααα·αααΎαααααΆαααααααΆααα·ααααααααΆαααααα»ααα·αααααααα»αααΆα αα·αααα·ααΆααα·αααΆαααααΆααααααααααΆααααΆαααα αααααΎαααΉαααααΌααααααα α α·αααααΆααΎααΎααααααα’αααΈαααα - αααααΆααααΆααα’αααααααΆααα·ααααααααΆααααΆαααααααααααααααα½αααα α¬αα½αααααΆααααΆααα ααααα·αααΎαααααΆααααΆαααααΆααααααααααΆ αααααΎαααΆααα·αααα·ααΆααα’αααααα»αααΆααααα αααααα»ααα·ααααααααΆααΈαα ααΎαα·αααΌα αααααα ααααΌαα’αααααΉαααααΌααααααααΆαααΆαα½ααααααΆααααααα·αααΆαααααα·αααααααααααΆαααααα»ααα»αααΆα αα·αααα·ααΆα α αΎαααΆααααααααΆαααααααα αααααα»ααα·ααααααααΆααΈαα
df_numerical = df.select_dtypes(include = [np.number])
df_categorical = df.select_dtypes(exclude = [np.number])
ααΎαααααΎαααααΎααααΈααααΎα±ααααΆααΆααααααΆααααα½ααααααΆααααΎααααα»αααΆαααααΎαααΆααα·ααααααααΈααααααααααααααααΆααα - αα ααααααααααΎαααΉααααααΆααΆααΆααααααΆααααα½ααααααΆααααΈαα·αααααααΎαα
ααΎαααααΎααΆαααΆαα½ααα·ααααααααα·ααΆα
ααΏαααααΌααααααΎααα½αααααΎααΊαααααααΆααΎααΆα "αα½αααα αΆααααα" αα αααα»ααα·ααααααααα·ααΆαα ααΎαα α αα½αααααΆαααααααΆ αααααΆααααα½αααΆαααα αΆααααα½αα―αααΆααΆαα·ααααααααα·ααΆα ααα»ααααααΎααα½ααΆαα·αααααααα»αααΆαα
ααΎααΎαα’αΆα αααααα’ααααααααΆααα½ααααααααααααΆ? ααΆααΆααα·αααΆαα ααΆααΆααα’ααααΊα’αΆαααααααΎααααααΆαα·αααα·αααααααααα’ααααααα»ααα·ααΆα ααα»ααααααΆααΌαα αα½αααααααααα’αΆα ααΆααα·αααααααααα½αααααα·α αα½α (αα αααα»ααααααααααααααα·ααα 3-10)α
print(df_numerical.nunique())
αα ααααααααΎααααααα’ααααααααΆααα½αααα αΆααααα ααΎαααΉαααααΆααααΈαα½αααΆααΈαα·ααααααααα·ααΆααα ααΆαα·αααααααα»αααΆαα
spy_columns = df_numerical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']]#Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ-ΡΠΏΠΈΠΎΠ½Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ dataframe
df_numerical.drop(labels=['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3'], axis=1, inplace = True)#Π²ΡΡΠ΅Π·Π°Π΅ΠΌ ΡΡΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΈΠ· ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
df_categorical.insert(1, 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', spy_columns['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
df_categorical.insert(1, 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', spy_columns['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π²ΡΠΎΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
df_categorical.insert(1, 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3', spy_columns['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ααΈαααα»α ααΎαααΆαααααααα·ααααααααα·ααΆαααΆαααααα»αααΈαα·αααααααα»αααΆα α αΎαα₯α‘αΌααααααΎαα’αΆα ααααΎααΆαααΆαα½αααΆααΆαααααΉαααααΌαα ααΏαααααΌαααΊααααΌααααααΈαααααααααααΎαααΆααααααααα (NaN α αΎααααα»αααααΈαααα 0 ααΉαααααΌαααΆαααα½αααααΆαααααααα) α
for i in df_numerical.columns:
print(i, df[i][df[i]==0].count())
αα α ααα»α ααα ααΆααΆααΏαααααΆαααααα»αααΆααααααΉαααΆααΎαααααΌααααα½αααΆα’αΆα αααα αΆαααΈααααααααααΆααα ααΎαααααααΈααααααααα·ααααααααααΌαααΆααααααΌα? α¬ααΆα’αΆα ααΆααααααΉαααααααα·αααααα? αααα½αααΆαααααααααΌαααααααΎαααΆαααααΈααΈαα½ααα
ααΌα αααα ααααα·αααΎααΎααα αααααααα α α·αααααΆααΎαα’αΆα ααΉαααΆαααα·αααααααααααΆααααααΌααα αααααΎααα½ααααααα½ααααααΌαααααα NaN ααΎααααΈααααΎα±ααααΆααΆααααααΆααααα½ααααα»αααΆαααααΎααΆαααΆαα½ααα·αααααααααααΆαααααααααα ααααααααα
df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]] = df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]].replace(0, nan)
α₯α‘αΌααααααΌαααΎααααααααααααΎαααΆαααα·ααααααα
sns.heatmap(df_numerical.isnull(),yticklabels=False,cbar=False,cmap='viridis') # ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ df_numerical.info()
αα
ααΈααααααααααΆααααααα
ααΆααααα»ααα½ααααααααΆαααα½αααααααΌαααΆααααααΆααααΆαααααΏαα α αΎαα₯α‘αΌααααααΆααααααΆαααΈαααΆαα
αΆααααααΎα - αααααααααααΆαααΆαα½αααΉααααααααΆααααα? ααΎαααα»ααα½ααα»ααα½ααααααΆαα½αααΉαααααα α¬αα½αααααΆααααααα? α¬αααααααααααααααΆαααααααΆαα½αααΉαααααααααααααα?
αααααΊααΆααααΆααααΆααααα αΆαααααα αααααα’αΆα αα½αα’ααααααα»αααΆααααααα α α·αααααΆααΆαααααΆαααα’αααΈαααα’αΆα ααααΎααΆαααΆαα½αααΉαααααααααα
0. αααα½αααααααα·αα
αΆαααΆα
αα
αα
df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)
1. ααΎα ααα½ααααααααααααα αααα»ααα½ααααααααααΆα 50% αααα¬αα?
print(df_numerical.isnull().sum() / df_numerical.shape[0] * 100)
df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 50 ΠΏΡΡΡΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
2. αα»ααααααΆαααααααΆααααααααα
df_numerical.dropna(inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
α£.α‘. ααΆααααα αΌααααααα ααααα
import random #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ random
df_numerical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True) #Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΡΡΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ
α£.α’. ααΆααααα αΌααααααααα
from sklearn.impute import SimpleImputer #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ SimpleImputer, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
imputer = SimpleImputer(strategy='constant', fill_value="<ΠΠ°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ>") #Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SimpleImputer
df_numerical[["Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1",'Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2','Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']] = imputer.fit_transform(df_numerical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']]) #ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ
df_numerical.drop(labels = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"], axis = 1, inplace = True) #Π£Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
α£.α£. αααα αΌααααααααααα α¬ααΉαααΆαααααα»αα
from sklearn.impute import SimpleImputer #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ SimpleImputer, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
imputer = SimpleImputer(strategy='mean', missing_values = np.nan) #Π²ΠΌΠ΅ΡΡΠΎ mean ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ most_frequent
df_numerical[["Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1",'Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2','Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']] = imputer.fit_transform(df_numerical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']]) #ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ
df_numerical.drop(labels = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"], axis = 1, inplace = True) #Π£Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
α£.α€. αααα αΌαααααααααααΆαααααΆαααααααΌααααααααα
αα½αααΆααααααα’αΆα ααααΌαααΆαααααΆαααααααΎααααΌααααααααααααααααΎααααΌααΈαααααΆααα sklearn α¬αααααΆαααααααααααααΆααααααααα αααα»αααΆαααΆαααααααΎαααΉααααααα’αααααααΆα ααααα‘αααα½αα’αααΈαααααααααΆα’αΆα ααααΎααΆαααΆαααααΆααα»ααααα
ααΌα ααααα αΎα αααααΆαααααααα ααΆααα·ααΆαααΏαα’αααΈαα·ααααααααα·ααΆαααΉαααααΌαααΆαααααΆα αααααααΆααΆαααΆααα»ααααααααααΆααΆα αααΎααααα’αααΈαααααααα ααα·αααααα αα·αααααΎαααΆαααΆαα»ααααααΆαααα·α αα ααΆαααααααααΆααααααΎαααΆααα»α α αΎαααΏαααΆααΌαααααΆααααααΆαααα·ααααααααα·ααΆαααααΌαααΆααααααααα·α αΆαααΆαα αααα»αα’αααααααα α αΎα α₯α‘αΌααααααΊααΆαααααααΆααΎααααΈαααα‘αααα αα·αααααααα»αααΆααααααΎαααΆααααααααα αΆαααΆα αααΎααααα‘αααααα·αααΈααα·ααΆαα α’αααα’αΆα ααααΆααααααΌαααααα αααααααΆαααααΆααααα’αααα ααααΆα ααααααααααΆαα ααΉααα·α αα ααΆααααααα ααΌα ααααααΆαααααΎαααΆααα·ααααααααΆαα»αααααΎαααΆαααΏαααΆαα!
αα·αααααααα»αααΆα
ααΆααΌαααααΆααααααΆαααα·αααααααα»αααΆα αα·ααΈααΆααααα One-hot-encoding ααααΌαααΆαααααΎααΎααααΈααααΎαααααααααΆαααΆααΈααααα’αααα (α¬ααααα») αα ααααα½αα αα»αααΉααααααα α ααα»α ααα α αΌαααΎαααααΎααααΆααααΆα αα·αααΌαααΆαααΎ ααΎααααΈαααααααΆαααΆαα½αααααααααα
df_categorical.nunique()
sns.heatmap(df_categorical.isnull(),yticklabels=False,cbar=False,cmap='viridis')
0. αααα½αααααααα·αα
αΆαααΆα
αα
αα
df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)
1. ααΎα ααα½ααααααααααααα αααα»ααα½ααααααααααΆα 50% αααα¬αα?
print(df_categorical.isnull().sum() / df_numerical.shape[0] * 100)
df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True) #Π£Π΄Π°Π»ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°
#ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 50% ΠΏΡΡΡΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
2. αα»ααααααΆαααααααΆααααααααα
df_categorical.dropna(inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ,
#Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
α£.α‘. ααΆααααα αΌααααααα ααααα
import random
df_categorical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True)
α£.α’. ααΆααααα αΌααααααααα
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='constant', fill_value="<ΠΠ°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ>")
df_categorical[["Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1",'Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2','Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']] = imputer.fit_transform(df_categorical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']])
df_categorical.drop(labels = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"], axis = 1, inplace = True)
ααΌα αααα ααΈαααα»αβααΎαβααα½αααΆαβα ααα»α βαααααααΆαβααΎβααΆαα αΆαααα»αααΆααααβαααα»αβαα·ααααααβαα»αααΆαα α₯α‘αΌααααααΆααααααα αΎαααΎααααΈα’αα»ααααααΆαα’αα·αααΌααααα αα½αααΎααααααααααΆααα αααα»αααΌαααααΆααα·ααααααααααα’αααα αα·ααΈααΆααααααααααααΌαααΆαααααααΎααΆααΉαααΆααααΎααααΈααΆααΆααΆ algorithm ααααα’αααα’αΆα αααααΈαα·αααααααααααΆααα»αααΆααααααα
def encode_and_bind(original_dataframe, feature_to_encode):
dummies = pd.get_dummies(original_dataframe[[feature_to_encode]])
res = pd.concat([original_dataframe, dummies], axis=1)
res = res.drop([feature_to_encode], axis=1)
return(res)
features_to_encode = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"]
for feature in features_to_encode:
df_categorical = encode_and_bind(df_categorical, feature))
ααΌα αααα ααΈαααα»α ααΎαααΆααααα ααααΆαααααΎαααΆααα·αααααααα»αααΆα αα·αααα·ααΆαααΆα ααααα‘ααααΈααααΆ αααααααααααααΌααααα αΌααα½αααΆαααα·α
new_df = pd.concat([df_numerical,df_categorical], axis=1)
αααααΆααβααΈβααΎαβααΆαβαααα αΌαβαααα»αβαα·ααααααβα αΌαβααααΆβααΆβαα½αβα αΎα ααΈαααα»αβααΎαβα’αΆα βααααΎβααΆαβαααααααβαα·ααααααβαααβααααΎ MinMaxScaler ααΈβαααααΆααα sklearnα αααααΉαααααΎα±αααααααααααααΎααα α ααααα 0 αα·α 1 αααααΉααα½ααα αααααααα»ααααααΆαααααΌααΆαααα’ααΆααα
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
new_df = min_max_scaler.fit_transform(new_df)
α₯α‘αΌαααααα·αααααααααααΊαα½α ααΆαααααααΆααα’αααΈααΆααα’αα - αααααΆααααααααααΆα αααααααΆα ML algorithms ααα
αα
αααα»αα’αααααααα ααΎααα·αααΆααα·αααΈααΆαααααΎααΆαααΆαα½ααα·αααααααααααΈαααααααΆαα ααααααααααΆαααα·αααααααααααα α’ααααα½αααααΎαα
αα
αααααααααΎαααΆααα»αααααΆααααα·α
ααααα½α
α’αΆαααααααΎαα·α
αα
ααΆαααααα’αααα αα
αααα’ααΆαα αααα»αααΆαααΆαααααααΎαααΉαααΎαααα’αααααααΆα
ααααα‘αααα½αα
αααααααααΆαααααα α αΎαααΎααααααΉαααΆααΆααΉαα’αΆα
ααΆαααααΌαα’αααΈααααα½αα±ααα
αΆααα’αΆαααααα ααααΈ αα·αααΆααααααααααααα»αααΈαα·αααααα’ααα ααΌα
α’ααααααα½ααααα
ααααα: www.habr.com