áááŒá¬ááááá¯áááᯠData Science áááºáááºááá¯á·áááºáá±á¬ááºáá°áá»á¬ážááẠáááºážááá¯á·á
á±á¬áá·áºáá»áŸá±á¬áºáá±ááá·áºá¡áá¬á¡ááœáẠáááºááœá±á·áá»áá±á¬áá»áŸá±á¬áºááá·áºáá»ááºááẠáááºážáá«ážáááºá ááá¯á¡áá«ááœáẠáááºážááá¯á·ááẠá¡á±ážááŒáá±á¬ á¡á¬áá¯á¶ááŒá±á¬ááœááºáááºáá»á¬ážááᯠáá±ážáá¬ážáááºá 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) #ÐелаеЌ ÑÑП, еÑлО ÑÑОÑаеЌ ÐœÑжМÑÐŒ.
#РМекПÑПÑÑÑ
пÑПекÑаÑ
ÑЎалÑÑÑ ÑакОе ЎаММÑе Ñ ÑаЌПгП МаÑала Ме ÑÑПОÑ.
áá»áœááºá¯ááºááá¯á·ááẠáá±áá¬á¡ááœá²ááᯠááŸá áºáá¯á¡ááŒá Ạááá¯ááºážááŒá¬ážáááº- áá áºáá¯ááẠá¡áááºá¡ááœá±ážáááºááá¯ážáá»á¬ážááŸáá·áº á¡ááŒá¬ážáá áºáá¯á¡á¬áž á¡áá±á¡ááœááºááŒáá·áº ááá¯ááºážááŒá¬ážáá¬ážáááºá
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡áá±ážá áááºááŸááºážáááºážáá»ááºáá áºáá¯ááŒá¯áá¯ááºááẠááá¯á¡ááºáááº- á¡áááºá¡ááœá±ážááŸáá·áº á¡áá±á¡ááœááºáá±áá¬áá»á¬ážááœáẠáá»á±á¬ááºáá¯á¶ážáá±áá±á¬ áá±áá¬ááá¯ááºážáá»á¬ážááẠáá áºáá¯ááŸáá·áºáá áºáᯠá¡ááœááºáááºá ááºááŸá¯áááŸááá«áá áá»áœááºá¯ááºááá¯á·ááẠáááºááá·áºá¡áá¬ááᯠá áœáá·áºááœáŸááºááááºááᯠáá¯á¶ážááŒááºááẠááá¯á¡ááºáá«áááº- áá»á±á¬ááºáá¯á¶ážáá±áá±á¬ á¡áá»ááºá¡áááºáá«ááŸááá±á¬ ááá¯ááºážáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááºážááá¯á·á¡áááºá០áá áºá áááºáá áºááá¯ááºážáá¬ááŒá áºáááºá ááá¯á·ááá¯áẠá¡áá»áá¯á·áá±á¬ áá±á¬áºáá¶áá»á¬ážá áá»ááºážááŒá±á¬ááºážáá»á¬áž áááºá ááºáá±áá«á dataset ááᯠááŸá áºááá¯ááºážááœá²ááá¯ááºááœáá·áºááŸááááºá ááá¯ááºáá«áá áááºááẠááááŠážá áœá¬ á¡áááºá¡áá»ááºážááŸáá·áº á¡áá±á¡ááœááºááœáẠáá»á±á¬ááºáá¯á¶ážáá±áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáááºá ááºááŸá¯áááŸááá±á¬ ááá¯ááºážáá»á¬ážááŸáá·áº ááá¯ááºááœááºááŒá±ááŸááºážááẠááá¯á¡ááºááŒá®áž áá±áá¬á¡ááœá²ááᯠááŸá áºááá¯ááºážááœá²áá«á
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 library ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ á¡áá¬ážáá° á á¬ááŒáá·áºááá¯ááºáá»á¬ážá០áá±á¬áºáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá¯ááºááŸá¯ áá±á¬áºáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºááá¯ážáá»á¬ážááᯠááœááºáá»ááºááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·áá¡ááœá²á·ááẠááá±ážáá±á¬á·áá±á¬á¡áá¬áááºááœáẠáááºážááᯠáááºááá¯á·áá¯ááºáá±á¬ááºááá¯ááºáááºáá°áá±á¬ áá®ážááŒá¬ážáá±á¬ááºážáá«ážááᯠááŒáŸá¯ááºááŸá¶áá«áááºá
ááá¯á·ááŒá±á¬áá·áºá ááá¯á¡áá»áááºááœááºá ááá¬ááá±áá¬ááŸáá·áºáááºáááºááá·áº áá¬ááºááŒá±á¬ááºážááᯠá¡ááŸá±á¬áá·áºá¡ááŸááºááŒá áºá á±áááºá á¡ááŒá±á¬ááºážááŸá¬ ááá°áá®áá±á¬áá¯ááºáááºážáá¬áááºáá»á¬ážá¡ááœáẠáá±áá¬ááŒááºáááºááŒááºážááŸáá·áº ááŒáá¯áááºáá¯ááºáá±á¬ááºááŒááºážááá¯á·ááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºáááºážááŸáá·áº á¡áá±á¡ááœááºááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬ážá¡ááœáẠá¡ááŒá±áá¶á¡áá¬áá»á¬ážááᯠá€áá±á¬ááºážáá«ážááœáẠááá·áºááœááºážá ááºážá á¬ážáá¬ážááŒá®ážá ááá¯á¡áá»áááºááẠá¡áááºá¡ááœá±ážááá¯ááºáá¬áá±áá¬ááá¯á· ááŒááºááœá¬ážáááºá¡áá»áááºááŒá áºáááºá á€ááŸááºá á¯á á¬á¡á¯ááºááᯠáááºááŸá áºáááºáááᯠááŒá±á¬ááºážáá²ááá¯ááºááŒá®ážá áááºážááᯠááá°áá®áá±á¬áá¯ááºáá±á¬ááºá áá¬áá»á¬ážááŸáá·áº ááá¯ááºáá»á±á¬áá®ááœá±ááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºááá¯ááºáááºá ááá¯á·ááŸáᬠáá±áá¬ááᯠááŒáá¯áááºáá¯ááºáá±á¬ááºááŒááºážááẠá¡ááœááºáá»ááºááŒááºáá«áááºá
á¡áááºá¡ááœá±ážá¡áá»ááºá¡áááº
á¡ááŒá±áá¶á¡á¬ážááŒáá·áºá á¡áááºá¡ááœá±ážáá±á¬ááºážááœááºáá±á¬áá±áá¬á¡ááœááºá áááºážááᯠstring (ááá¯á·ááá¯áẠobject) á០áá¶áá«ááºáá áºáá¯ááá¯á·áá±á¬áºáááºáááºá¡ááœáẠOne-hot-encoding method ááá¯á¡áá¯á¶ážááŒá¯áááºá á€áá±áá¬ááá¯á·áááœá¬ážááá¯ááºáá®á ááá¬áááºááá¯ážáá»á¬ážááá¯ááŒá±ááŸááºážááẠá¡áááºáá±á¬áºááŒáá« áá¯á¶ááŒááºážááŸáá·áº áá¯ááºááá¯áá¯á¶ážááŒáá«á áá¯á·á
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)
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºáá¯á¶ážááœáẠá¡áááºá¡ááœá±ážáá±á¬ááºážááœááºáá±á¬áá±áá¬ááŸá nulls ááá¯ááºáᬠáááºááá¯ááºáá áºáá¯áááŸááá«áááºá ááᯠááá·áºáá±áá¬áá±á·á áºááŸá áááºááá¯ážáá»á¬ážáá±á«áºááœáẠone-hot-encoding áá¯ááºáá±á¬ááºááẠá¡áá»áááºáá»áá±á¬ááºááŒá®ááŒá áºáááºá ááá·áº 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)
áá±áá¬á¡ááœá²áá»á¬ážááᯠáá áºá á¯áá áºá ááºážáááºáž áá±á«ááºážá ááºááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºáá¯á¶ážááœáẠsklearn á á¬ááŒáá·áºááá¯ááºá០MinMaxScaler ááᯠá¡áá¯á¶ážááŒá¯á áá±áá¬á¡ááœááºááŒá±á¬ááºážááŒááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá áááºážááẠáá»áœááºá¯ááºááá¯á·ááááºááá¯ážáá»á¬ážááᯠ0 ááŸáá·áº 1 á¡ááŒá¬ážááŸá á á¶ááŸá¯ááºážáá»á¬ážááᯠá¡áá¬áááºááœáẠáá±á·áá»áá·áºáá±ážááá·áºá¡áá« á¡áá±á¬ááºá¡áá°ááŒá áºá á±áááºááŒá áºáááºá
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
new_df = min_max_scaler.fit_transform(new_df)
á€áá±áá¬ááẠááá¯á¡áá« áááºááá·áºá¡áá¬á¡ááœááºáááᯠá¡áááºááá·áºááŒá áºáá±áá«ááŒá® - á¡á¬áá¯á¶ááŒá±á¬ááœááºáááºáá»á¬ážá á ᶠML á¡ááºáááá¯áá®áááºáá»á¬áž á áááºááŒáá·áºá
á€áá±á¬ááºážáá«ážááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»áááºá
á®ážáá®ážáá±áá¬ááŒáá·áº áá¯ááºáá±á¬ááºááŒááºážááᯠááá·áºááœááºážá
ááºážá
á¬ážááŒááºážáááŸááá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº ááá¯ááá¯á·áá±á¬áá±áá¬á¡ááœáẠáááºááẠáááºááá¬áááºá¡áá±á«áº áá°áááºá á¡áááºážáááºááœá²ááŒá¬ážáá±á¬ áá¯ááºáá±á¬ááºááŸá¯áááºážá
áá
áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áºáá«áááºá á¡áá¬áááºááœááºá áá»áœááºá¯ááºááá¯á·á¡ááœá²á·ááẠá€á¡ááŒá±á¬ááºážá¡áá¬á¡ááœáẠáá®ážááŒá¬ážáá±á¬ááºážáá«ážáá
áºáá¯ááºááᯠááŒáŸá¯ááºááŸá¶áááºááŒá
áºááŒá®ážá áááºážááẠááá·áºááááœáẠá
áááºáááºá
á¬ážááœááºá á¡áá
áºá¡áááºážááŸáá·áº á¡áá¯á¶ážáááºááá·áºá¡áá¬áá
áºáá¯ááᯠáá±á¬ááºáá»ááºážáá±ážááá¯ááºáááá·áºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá
source: www.habr.com