Π§Π΅ΡΡΠΎ Ρ
ΠΎΡΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π°Π²Π»ΠΈΠ·Π°Ρ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° Data Science, ΠΈΠΌΠ°Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΈ ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π³ΠΈ ΠΎΡΠ°ΠΊΠ²Π°. ΠΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΠ° ΡΠΌΡΡΠ°Ρ, ΡΠ΅ ΡΠ΅Π³Π° ΡΠ΅ ΠΏΠΈΡΠ°Ρ ΡΡΡΠ°Ρ
ΠΎΡΠ½ΠΈ Π½Π΅Π²ΡΠΎΠ½Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ, ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π°Ρ Π³Π»Π°ΡΠΎΠ² Π°ΡΠΈΡΡΠ΅Π½Ρ ΠΎΡ Iron Man ΠΈΠ»ΠΈ ΡΠ΅ ΠΏΠΎΠ±Π΅Π΄ΡΡ Π²ΡΠΈΡΠΊΠΈ Π½Π° ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°Π·Π°ΡΠΈ.
ΠΠΎ ΡΠ°Π±ΠΎΡΠ° ΠΠ°ΡΠ° Π£ΡΠ΅Π½ΠΈΡΡ ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΈ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΈ ΠΎΡΠ½Π΅ΠΌΠ°ΡΠΈ Π²ΡΠ΅ΠΌΠ΅ Π°ΡΠΏΠ΅ΠΊΡΠΈ Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈ Π² Π½Π΅Π²ΡΠΎΠ½Π½Π° ΠΌΡΠ΅ΠΆΠ° ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π°ΡΠΈΠ½.
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π½Π°ΡΠΈΡΡ Π΅ΠΊΠΈΠΏ ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π΄Π°Π½Π½ΠΈ Π±ΡΡΠ·ΠΎ ΠΈ Π»Π΅ΡΠ½ΠΎ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ° ΠΈ ΠΊΠΎΠ΄. ΠΠΏΠΈΡΠ°Ρ ΠΌΠ΅ ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΊΠΎΠ΄Π° Π΄ΠΎΡΡΠ° Π³ΡΠ²ΠΊΠ°Π² ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ.
ΠΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»ΠΈΡΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π½Π°ΠΌΠ΅ΡΡΡ Π½ΠΈΡΠΎ Π½Π΅ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΎ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, Π½ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°ΡΡΠ°Ρ Π½Π΅ΡΠΎ Π½ΠΎΠ²ΠΎ ΠΈ Π²ΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠ΄Π°Π²Π½Π° ΠΌΠ΅ΡΡΠ°Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π±Π΅Π»Π΅ΠΆΠ½ΠΈΠΊ Π·Π° Π±ΡΡΠ·Π° ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ° ΠΊΠΎΠ΄Π° ΠΈ Π΄Π° Π³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° Π·Π° ΡΠ΅Π±Π΅ ΡΠΈ, ΠΈΠ»ΠΈ
ΠΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²Ρ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°?
Π ΡΠ°ΠΊΠ°, ΡΡΠ°Π½Π΄Π°ΡΡΡΡ: ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°, ΠΎΠ±ΡΠ°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½Π°. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠ²Π°, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ pandas, Π·Π° Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ.
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)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
3.1. ΠΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ
import random #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ random
df_numerical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True) #Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΡΡΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ
3.2. ΠΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ
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) #Π£Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
3.3. ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΠΈΠ»ΠΈ Π½Π°ΠΉ-ΡΠ΅ΡΡΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ
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) #Π£Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
3.4. ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ°, ΠΈΠ·ΡΠΈΡΠ»Π΅Π½Π° ΠΎΡ Π΄ΡΡΠ³ ΠΌΠΎΠ΄Π΅Π»
ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅Π³ΡΠ΅ΡΠΈΠΎΠ½Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° 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)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ,
#Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
3.1. ΠΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ
import random
df_categorical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True)
3.2. ΠΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ
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)
Π ΡΠ°ΠΊΠ°, Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ Ρ Π½ΡΠ»Π΅Π²ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. Π‘Π΅Π³Π° Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ Π΅Π΄Π½ΠΎ Π³ΠΎΡΠ΅ΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΎ, Π·Π° Π΄Π° ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ Π²Π°ΡΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΈ ΠΎΡ Π²ΠΈΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ.
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 Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ ΠΈ Ρ.Π½.!
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π½Π΅ Π²Π·Π΅Ρ
ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅ΡΠΈΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π° ΡΠ°ΠΊΠΈΠ²Π° Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π²Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ°. Π Π±ΡΠ΄Π΅ΡΠ΅ Π½Π°ΡΠΈΡΡ Π΅ΠΊΠΈΠΏ ΡΠ΅ ΠΏΠΎΡΠ²Π΅ΡΠΈ ΠΎΡΠ΄Π΅Π»Π½Π° ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ° ΠΈ ΡΠ΅ Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅, ΡΠ΅ ΡΠ΅ ΡΡΠΏΠ΅Π΅ Π΄Π° Π²Π½Π΅ΡΠ΅ Π½Π΅ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π½ΠΎΠ²ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΆΠΈΠ²ΠΎΡΠ° Π²ΠΈ, ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com