Π§Π΅ΡΡΠΎ ΡΡΠ΄ΠΈ ΠΊΠΎΡΠΈ ΡΠ»Π°Π·Π΅ Ρ ΠΎΠ±Π»Π°ΡΡ Π½Π°ΡΠΊΠ΅ ΠΎ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ° ΠΈΠΌΠ°ΡΡ ΠΌΠ°ΡΠ΅ ΠΎΠ΄ ΡΠ΅Π°Π»Π½ΠΈΡ
ΠΎΡΠ΅ΠΊΠΈΠ²Π°ΡΠ° ΠΎ ΡΠΎΠΌΠ΅ ΡΡΠ° ΠΈΡ
ΡΠ΅ΠΊΠ°. ΠΠ½ΠΎΠ³ΠΈ ΡΡΠ΄ΠΈ ΠΌΠΈΡΠ»Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π΄Π° ΠΏΠΈΡΠ°ΡΠΈ ΡΠΎΠΎΠ» Π½Π΅ΡΡΠΎΠ½ΡΠΊΠ΅ ΠΌΡΠ΅ΠΆΠ΅, ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π³Π»Π°ΡΠΎΠ²Π½ΠΎΠ³ Π°ΡΠΈΡΡΠ΅Π½ΡΠ° ΠΎΠ΄ ΠΡΠΎΠ½ ΠΠ°Π½-Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠΈ ΡΠ²Π΅ Π½Π° ΡΠΈΠ½Π°Π½ΡΠΈΡΡΠΊΠΈΠΌ ΡΡΠΆΠΈΡΡΠΈΠΌΠ°.
ΠΠ»ΠΈ ΡΠ°Π΄ ΠΠ°ΡΡΠΌ ΠΠ°ΡΡΠ½ΠΈΠΊ ΡΠ΅ Π²ΠΎΡΠ΅Π½ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ°, Π° ΡΠ΅Π΄Π°Π½ ΠΎΠ΄ Π½Π°ΡΠ²Π°ΠΆΠ½ΠΈΡΠΈΡ
Π°ΡΠΏΠ΅ΠΊΠ°ΡΠ° ΠΊΠΎΡΠΈ ΠΎΠ΄ΡΠ·ΠΈΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π΄Π° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ½Π΅ΡΡ Ρ Π½Π΅ΡΡΠΎΠ½ΡΠΊΡ ΠΌΡΠ΅ΠΆΡ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΡ Π½Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ Π½Π°ΡΠΈΠ½.
Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ, Π½Π°Ρ ΡΠΈΠΌ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΠ·ΠΎ ΠΈ Π»Π°ΠΊΠΎ ΠΎΠ±ΡΠ°Π΄ΠΈΡΠΈ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΏΠΎΠΌΠΎΡΡ Π΄Π΅ΡΠ°ΡΠ½ΠΈΡ ΡΠΏΡΡΡΡΠ°Π²Π° ΠΈ ΠΊΠΎΠ΄Π°. ΠΠΎΠΊΡΡΠ°Π»ΠΈ ΡΠΌΠΎ Π΄Π° ΡΡΠΈΠ½ΠΈΠΌΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΈΠΌ ΠΈ Π΄Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΡΠΊΡΠΏΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.
ΠΠ½ΠΎΠ³ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»ΡΠΈ ΠΌΠΎΠΆΠ΄Π° Π½Π΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ Π½ΠΈΡΡΠ° Π½Π΅ΠΎΠ±ΠΈΡΠ½ΠΎ Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ, Π°Π»ΠΈ ΠΏΠΎΡΠ΅ΡΠ½ΠΈΡΠΈ ΡΠ΅ ΠΌΠΎΡΠΈ Π΄Π° Π½Π°ΡΡΠ΅ Π½Π΅ΡΡΠΎ Π½ΠΎΠ²ΠΎ, Π° ΡΠ²Π°ΠΊΠΎ ΠΊΠΎ ΡΠ΅ Π΄ΡΠ³ΠΎ ΡΠ°ΡΠ°ΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π°ΡΠ΅Π±Π½Ρ Π±Π΅Π»Π΅ΠΆΠ½ΠΈΡΡ Π·Π° Π±ΡΠ·Ρ ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Ρ ΠΎΠ±ΡΠ°Π΄Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΡΠΈ ΠΊΠΎΠ΄ ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΡΠΈ Π³Π° Π·Π° ΡΠ΅Π±Π΅, ΠΈΠ»ΠΈ
ΠΠΎΠ±ΠΈΠ»ΠΈ ΡΠΌΠΎ ΡΠΊΡΠΏ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°. Π¨ΡΠ° Π΄Π°ΡΠ΅?
ΠΠ°ΠΊΠ»Π΅, ΡΡΠ°Π½Π΄Π°ΡΠ΄: ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π·ΡΠΌΠ΅ΠΌΠΎ ΡΠ° ΡΠΈΠΌΠ΅ ΠΈΠΌΠ°ΠΌΠΎ ΠΏΠΎΡΠ»Π°, ΡΠ΅Π»ΠΎΠΊΡΠΏΠ½Ρ ΡΠ»ΠΈΠΊΡ. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΏΠ°Π½Π΄Π΅ Π΄Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ΠΌΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.
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() #ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΠ»ΠΎΠ½Π°:
- ΠΠ° Π»ΠΈ Π±ΡΠΎΡ ΡΠ΅Π΄ΠΎΠ²Π° Ρ ΡΠ²Π°ΠΊΠΎΡ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° ΡΠΊΡΠΏΠ½ΠΎΠΌ Π±ΡΠΎΡΡ ΡΠ΅Π΄ΠΎΠ²Π°?
- Π¨ΡΠ° ΡΠ΅ ΡΡΡΡΠΈΠ½Π° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ ΡΠ²Π°ΠΊΠΎΡ ΠΊΠΎΠ»ΠΎΠ½ΠΈ?
- ΠΠΎΡΡ ΠΊΠΎΠ»ΠΎΠ½Ρ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΡΠΈΡΠ°ΠΌΠΎ Π΄Π° Π±ΠΈΡΠΌΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΡΠ°ΡΠ° Π·Π° ΡΡ?
ΠΠ΄Π³ΠΎΠ²ΠΎΡΠΈ Π½Π° ΠΎΠ²Π° ΠΏΠΈΡΠ°ΡΠ° ΡΠ΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠΊΡΠΏ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈ Π³ΡΡΠ±ΠΎ Π½Π°ΡΡΡΠ°ΡΠ΅ ΠΏΠ»Π°Π½ Π·Π° ΡΠ²ΠΎΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π°ΠΊΡΠΈΡΠ΅.
Π’Π°ΠΊΠΎΡΠ΅, Π·Π° Π΄ΡΠ±ΡΠΈ ΠΏΠΎΠ³Π»Π΅Π΄ Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Ρ ΡΠ²Π°ΠΊΠΎΡ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΏΠ°Π½Π΄Π°Ρ Π΄Π΅ΡΡΡΠΈΠ±Π΅(). ΠΠ΅ΡΡΡΠΈΠΌ, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ°ΠΊ ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΡΠ΅ ΡΡΠΎ Π½Π΅ Π΄Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ ΠΊΠΎΠ»ΠΎΠ½Π°ΠΌΠ° ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΠΌΠ° Π½ΠΈΠ·Π°. ΠΠΎΠ·Π°Π±Π°Π²ΠΈΡΠ΅ΠΌΠΎ ΡΠ΅ ΡΠΈΠΌΠ° ΠΊΠ°ΡΠ½ΠΈΡΠ΅.
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']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΠΎΠ½Π°ΡΠ½ΠΎ, ΠΏΠΎΡΠΏΡΠ½ΠΎ ΡΠΌΠΎ ΡΠ°Π·Π΄Π²ΠΎΡΠΈΠ»ΠΈ ΠΊΠ²Π°Π½ΡΠΈΡΠ°ΡΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΎΠ΄ ΠΊΠ²Π°Π»ΠΈΡΠ°ΡΠΈΠ²Π½ΠΈΡ ΠΈ ΡΠ°Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ° ΡΠΈΠΌΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠ΅Π±Π°. ΠΡΠ²Π° ΡΡΠ²Π°Ρ ΡΠ΅ Π΄Π° ΡΡ Π²Π°ΡΠΈΠΌΠΎ Π³Π΄Π΅ ΠΈΠΌΠ°ΠΌΠΎ ΠΏΡΠ°Π·Π½Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ (ΠΠ°Π, Π°Ρ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ° 0 ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠΈΡ Π²Π°ΡΠ΅Π½ΠΎ ΠΊΠ°ΠΎ ΠΏΡΠ°Π·Π½Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ).
for i in df_numerical.columns:
print(i, df[i][df[i]==0].count())
Π£ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ, Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ ΡΠ°Π·ΡΠΌΠ΅ΡΠΈ Ρ ΠΊΠΎΡΠΈΠΌ ΠΊΠΎΠ»ΠΎΠ½Π°ΠΌΠ° Π½ΡΠ»Π΅ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·ΠΈΠ²Π°ΡΠΈ Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡ: Π΄Π° Π»ΠΈ ΡΠ΅ ΡΠΎ Π·Π±ΠΎΠ³ Π½Π°ΡΠΈΠ½Π° Π½Π° ΠΊΠΎΡΠΈ ΡΡ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΏΡΠΈΠΊΡΠΏΡΠ΅Π½ΠΈ? ΠΠ»ΠΈ Π±ΠΈ ΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±ΠΈΡΠΈ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΎ ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΠΌΠ° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°? ΠΠ° ΠΎΠ²Π° ΠΏΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΌΠΎΡΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ ΠΎΠ΄ ΡΠ»ΡΡΠ°ΡΠ° Π΄ΠΎ ΡΠ»ΡΡΠ°ΡΠ°.
ΠΠ°ΠΊΠ»Π΅, Π°ΠΊΠΎ ΠΈΠΏΠ°ΠΊ ΠΎΠ΄Π»ΡΡΠΈΠΌΠΎ Π΄Π° Π½Π°ΠΌ ΠΌΠΎΠΆΠ΄Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡ ΠΏΠΎΠ΄Π°ΡΠΈ Π³Π΄Π΅ ΠΏΠΎΡΡΠΎΡΠ΅ Π½ΡΠ»Π΅, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎ Π½ΡΠ»Π΅ ΡΠ° ΠΠ°Π Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΊΠ°ΡΠ½ΠΈΡΠ΅ ΠΎΠ»Π°ΠΊΡΠ°Π»ΠΈ ΡΠ°Π΄ ΡΠ° ΠΎΠ²ΠΈΠΌ ΠΈΠ·Π³ΡΠ±ΡΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ°:
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. Π£Π½Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈΠ·ΡΠ°ΡΡΠ½Π°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΎΠΌ
ΠΠΎΠ½Π΅ΠΊΠ°Π΄ ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΌΠΎΠ³Ρ ΠΈΠ·ΡΠ°ΡΡΠ½Π°ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ ΡΠ΅Π³ΡΠ΅ΡΠΈΠΎΠ½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ ΠΈΠ· ΡΠΊΠ»Π΅Π°ΡΠ½ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠ°Ρ ΡΠΈΠΌ ΡΠ΅ ΠΏΠΎΡΠ²Π΅ΡΠΈΡΠΈ ΠΏΠΎΡΠ΅Π±Π°Π½ ΡΠ»Π°Π½Π°ΠΊ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠΎ ΠΌΠΎΠΆΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ Ρ Π±Π»ΠΈΡΠΊΠΎΡ Π±ΡΠ΄ΡΡΠ½ΠΎΡΡΠΈ.
ΠΠ°ΠΊΠ»Π΅, Π·Π° ΡΠ°Π΄Π° ΡΠ΅ Π½Π°ΡΠ°ΡΠΈΠ² ΠΎ ΠΊΠ²Π°Π½ΡΠΈΡΠ°ΡΠΈΠ²Π½ΠΈΠΌ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ° Π±ΠΈΡΠΈ ΠΏΡΠ΅ΠΊΠΈΠ½ΡΡ, ΡΠ΅Ρ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ Π½ΠΈΡΠ°Π½ΡΠΈ ΠΊΠ°ΠΊΠΎ Π±ΠΎΡΠ΅ ΠΎΠ±Π°Π²ΠΈΡΠΈ ΠΏΡΠΈΠΏΡΠ΅ΠΌΡ ΠΈ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Ρ ΠΎΠ±ΡΠ°Π΄Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΊΠ΅, Π° ΠΎΡΠ½ΠΎΠ²Π½Π΅ ΡΡΠ²Π°ΡΠΈ Π·Π° ΠΊΠ²Π°Π½ΡΠΈΡΠ°ΡΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΡΠ·Π΅ΡΠ΅ ΡΡ Ρ ΠΎΠ±Π·ΠΈΡ Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ, Π° ΡΠ°Π΄Π° ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠΎ Π½Π° ΠΊΠ²Π°Π»ΠΈΡΠ°ΡΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠΌΠΎ ΠΎΠ΄Π²ΠΎΡΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠΎΡΠ°ΠΊΠ° ΡΠ½Π°Π·Π°Π΄ ΠΎΠ΄ ΠΊΠ²Π°Π½ΡΠΈΡΠ°ΡΠΈΠ²Π½ΠΈΡ . ΠΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ΅ΡΠ°ΡΠΈ ΠΎΠ²Ρ Π±Π΅Π»Π΅ΠΆΠ½ΠΈΡΡ ΠΊΠ°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅, ΠΏΡΠΈΠ»Π°Π³ΠΎΡΠ°Π²Π°ΡΡΡΠΈ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ Π·Π°Π΄Π°ΡΠΈΠΌΠ°, ΡΠ°ΠΊΠΎ Π΄Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Π° ΠΎΠ±ΡΠ°Π΄Π° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈΠ΄Π΅ Π²Π΅ΠΎΠΌΠ° Π±ΡΠ·ΠΎ!
ΠΠ²Π°Π»ΠΈΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ
Π£ ΠΎΡΠ½ΠΎΠ²ΠΈ, Π·Π° ΠΊΠ²Π°Π»ΠΈΡΠ°ΡΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅, ΠΌΠ΅ΡΠΎΠ΄Π° ΠΠ½Π΅-Ρ ΠΎΡ-Π΅Π½ΡΠΎΠ΄ΠΈΠ½Π³ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π΄Π° Π±ΠΈ ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΠΎ ΠΈΠ· ΡΡΡΠΈΠ½Π³Π° (ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°) Ρ Π±ΡΠΎΡ. ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΡΠ΅ΡΠ΅ΠΌΠΎ Π½Π° ΠΎΠ²Ρ ΡΠ°ΡΠΊΡ, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ ΠΈ ΠΊΠΎΠ΄ ΠΈΠ·Π½Π°Π΄ Π΄Π° Π±ΠΈΡΠΌΠΎ ΡΠ΅ ΠΏΠΎΠ·Π°Π±Π°Π²ΠΈΠ»ΠΈ ΠΏΡΠ°Π·Π½ΠΈΠΌ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΠΌΠ°.
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)
ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠΌΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π»ΠΈ ΡΠΊΡΠΏΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ ΡΠ΅Π΄Π°Π½, ΠΊΠΎΠ½Π°ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡΡ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΈΠ½ΠΠ°ΠΊΠ‘ΡΠ°Π»Π΅Ρ ΠΈΠ· ΡΠΊΠ»Π΅Π°ΡΠ½ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠ²ΠΎ ΡΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ Π½Π°ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΡ 0 ΠΈ 1, ΡΡΠΎ ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΎΠ±ΡΠΊΠ΅ ΠΌΠΎΠ΄Π΅Π»Π° Ρ Π±ΡΠ΄ΡΡΠ½ΠΎΡΡΠΈ.
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
new_df = min_max_scaler.fit_transform(new_df)
ΠΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ ΡΡ ΡΠ°Π΄Π° ΡΠΏΡΠ΅ΠΌΠ½ΠΈ Π·Π° ΡΠ²Π΅ - Π½Π΅ΡΡΠΎΠ½ΡΠΊΠ΅ ΠΌΡΠ΅ΠΆΠ΅, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π΅ ΠΠ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅, ΠΈΡΠ΄.!
Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ Π½ΠΈΡΠΌΠΎ ΡΠ·Π΅Π»ΠΈ Ρ ΠΎΠ±Π·ΠΈΡ ΡΠ°Π΄ ΡΠ° ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ° ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΡΠ΅ΡΠΈΡΠ°ΠΌΠ°, ΡΠ΅Ρ Π·Π° ΡΠ°ΠΊΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΡΡΠ΅Π±Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π½Π΅ΡΡΠΎ Π΄ΡΡΠ³Π°ΡΠΈΡΠ΅ ΡΠ΅Ρ
Π½ΠΈΠΊΠ΅ ΠΎΠ±ΡΠ°Π΄Π΅, Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ Π²Π°ΡΠ΅Π³ Π·Π°Π΄Π°ΡΠΊΠ°. Π£Π±ΡΠ΄ΡΡΠ΅, Π½Π°Ρ ΡΠΈΠΌ ΡΠ΅ ΠΎΠ²ΠΎΡ ΡΠ΅ΠΌΠΈ ΠΏΠΎΡΠ²Π΅ΡΠΈΡΠΈ ΠΏΠΎΡΠ΅Π±Π°Π½ ΡΠ»Π°Π½Π°ΠΊ ΠΈ Π½Π°Π΄Π°ΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΌΠΎΡΠΈ Π΄Π° ΡΠ½Π΅ΡΠ΅ Π½Π΅ΡΡΠΎ Π·Π°Π½ΠΈΠΌΡΠΈΠ²ΠΎ, Π½ΠΎΠ²ΠΎ ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΎ Ρ Π²Π°Ρ ΠΆΠΈΠ²ΠΎΡ, Π±Π°Ρ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΎΠ²Π°Ρ.
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ
Π°Π±Ρ.ΡΠΎΠΌ