Π§Π΅ΡΡΠΎ Π»ΡΡΠ΅ΡΠΎ ΠΊΠΎΠΈ Π²Π»Π΅Π³ΡΠ²Π°Π°Ρ Π²ΠΎ ΠΏΠΎΠ»Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΊΠ°ΡΠ° Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈΠΌΠ°Π°Ρ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΠΎΠ΄ ΡΠ΅Π°Π»Π½ΠΈ ΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ° Π·Π° ΡΠΎΠ° ΡΡΠΎ Π³ΠΈ ΡΠ΅ΠΊΠ°. ΠΠ½ΠΎΠ³Ρ Π»ΡΡΠ΅ ΠΌΠΈΡΠ»Π°Ρ Π΄Π΅ΠΊΠ° ΡΠ΅Π³Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ ΠΊΡΠ» Π½Π΅Π²ΡΠΎΠ½ΡΠΊΠΈ ΠΌΡΠ΅ΠΆΠΈ, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π°Ρ Π³Π»Π°ΡΠΎΠ²Π΅Π½ Π°ΡΠΈΡΡΠ΅Π½Ρ ΠΎΠ΄ 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)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
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 ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎΠ΄ Π½ΠΈΠ·Π° (ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ) Π²ΠΎ Π±ΡΠΎΡ. ΠΡΠ΅Π΄ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ Π΄ΠΎ ΠΎΠ²Π°Π° ΡΠΎΡΠΊΠ°, Π°ΡΠ΄Π΅ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌΠΎΡ ΠΈ ΠΊΠΎΠ΄ΠΎΡ ΠΏΠΎΠ³ΠΎΡΠ΅ Π·Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠΎ ΠΏΡΠ°Π·Π½ΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ.
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