αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

αž‡αžΆαžšαžΏαž™αŸ—αž˜αž“αž»αžŸαŸ’αžŸαžŠαŸ‚αž›αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαž·αžŸαŸαž™αžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αžΆαž“αžαž·αž…αž‡αžΆαž„αž€αžΆαžšαžšαŸ†αž–αžΉαž„αž‘αž»αž€αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αŸƒαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžšαž„αŸ‹αž…αžΆαŸ†αž–αž½αž€αž‚αŸαŸ” αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž‚αž·αžαžαžΆαž₯αž‘αžΌαžœαž“αŸαŸ‡αž–αž½αž€αž‚αŸαž“αžΉαž„αžŸαžšαžŸαŸαžšαž”αžŽαŸ’αžαžΆαž‰αžŸαžšαžŸαŸƒαž”αŸ’αžšαžŸαžΆαž‘αžαŸ’αžšαž‡αžΆαž€αŸ‹ αž”αž„αŸ’αž€αžΎαžαž‡αŸ†αž“αž½αž™αž€αžΆαžšαžŸαŸ†αž‘αŸαž„αž–αžΈ Iron Man αž¬αžœαžΆαž™αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΈαž•αŸ’αžŸαžΆαžšαž αž·αžšαž‰αŸ’αž‰αžœαžαŸ’αžαž»αŸ”
αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αžœαžΎαž€αžΆαžš αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž’αŸ’αž“αž€αžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αžšαž»αž‰αžŠαŸ„αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž αžΎαž™αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αž αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αŸαž›αžœαŸαž›αžΆαž˜αž½αž™αž‚αžΊαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž»αž“αž–αŸαž›αž”αž‰αŸ’αž…αžΌαž›αžœαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαžΆαž‰αžŸαžšαžŸαŸƒαž”αŸ’αžšαžŸαžΆαž‘ αž¬αžœαž·αž—αžΆαž‚αžœαžΆαžαžΆαž˜αžœαž·αž’αžΈαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž€αŸ’αžšαž»αž˜αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžΆαž“αž™αŸ‰αžΆαž„αžšαž αŸαžŸ αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† αž“αž·αž„αž›αŸαžαž€αžΌαžŠαž‡αžΆαž‡αŸ†αž αžΆαž“αŸ—αŸ” αž™αžΎαž„αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΌαžŠαž˜αžΆαž“αž—αžΆαž–αž”αžαŸ‹αž”αŸ‚αž“ αž“αž·αž„αž’αžΆαž…αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ”

αž’αŸ’αž“αž€αž‡αŸ†αž“αžΆαž‰αž‡αžΆαž…αŸ’αžšαžΎαž“αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αžšαž€αžƒαžΎαž‰αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αž·αž“αž’αž˜αŸ’αž˜αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αž”αžΌαž„αž“αžΉαž„αž’αžΆαž…αžšαŸ€αž“αž’αŸ’αžœαžΈαžαŸ’αž˜αžΈ αž αžΎαž™αž’αŸ’αž“αž€αžŽαžΆαžŠαŸ‚αž›αžŸαž»αž”αž·αž“αž…αž„αŸ‹αž”αž„αŸ’αž€αžΎαžαžŸαŸ€αžœαž—αŸ…αž€αžαŸ‹αžαŸ’αžšαžΆαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“ αž“αž·αž„αž˜αžΆαž“αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αžΆαž…αž…αž˜αŸ’αž›αž„αž€αžΌαžŠ αž“αž·αž„αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž›αž½αž“αž‚αŸ ឬ αž‘αžΆαž‰αž™αž€αžŸαŸ€αžœαž—αŸ…αž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž–αžΈ Github αŸ”

αž™αžΎαž„αž”αžΆαž“αž‘αž‘αž½αž›αžŸαŸ†αžŽαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž”αž“αŸ’αž‘αžΆαž”αŸ‹?

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ– αž™αžΎαž„αžαŸ’αžšαžΌαžœαž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž‡αžΆαžšαžΌαž”αž—αžΆαž–αžšαž½αž˜αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž™αžΎαž„αž”αŸ’αžšαžΎαž•αŸαž“αžŠαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž”αŸ’αžšαž—αŸαž‘αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ”

import pandas as pd #ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ pandas
import numpy as np  #ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ numpy
df = pd.read_csv("AB_NYC_2019.csv") #Ρ‡ΠΈΡ‚Π°Π΅ΠΌ датасСт ΠΈ записываСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ df

df.head(3) #смотрим Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 3 строчки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ выглядят значСния

αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

df.info() #ДСмонстрируСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ…

αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

αžαŸ„αŸ‡αž˜αžΎαž›αžαž˜αŸ’αž›αŸƒαž‡αž½αžšαžˆαžšαŸ–

  1. αžαžΎβ€‹αž…αŸ†αž“αž½αž“β€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αž‡αž½αžšβ€‹αžˆαžšβ€‹αž“αžΈαž˜αž½αž™αŸ—β€‹αžαŸ’αžšαžΌαžœβ€‹αž“αžΉαž„β€‹αž…αŸ†αž“αž½αž“β€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αžŸαžšαž»αž”β€‹αžŠαŸ‚αžšβ€‹αž¬β€‹αž‘αŸ?
  2. αžαžΎαž’αŸ’αžœαžΈαž‡αžΆαžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαžˆαžšαž“αžΈαž˜αž½αž™αŸ—?
  3. αžαžΎαž‡αž½αžšαžˆαžšαž˜αž½αž™αžŽαžΆαžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž€αŸ†αžŽαžαŸ‹αž‚αŸ„αž›αžŠαŸ… αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž–αŸ’αž™αžΆαž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆ?

αž…αž˜αŸ’αž›αžΎαž™αž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαž½αžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αžŸαŸ†αžŽαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„αž‚αžΌαžšαž•αŸ‚αž“αž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸŠαžΈαž‡αž˜αŸ’αžšαŸ…αž’αŸ†αž–αžΈαžαž˜αŸ’αž›αŸƒαž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαžˆαžšαž“αžΈαž˜αž½αž™αŸ— αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžš pandas describe() αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž“αŸƒαž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αž‚αžΊαžαžΆαžœαžΆαž˜αž·αž“αž•αŸ’αžαž›αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž‘αŸαŸ” αž™αžΎαž„αž“αžΉαž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αŸ”

df.describe()

αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

αž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αžœαŸαž‘αž˜αž“αŸ’αž

αžαŸ„αŸ‡αž˜αžΎαž›αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž™αžΎαž„αž‚αŸ’αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαŸ–

import seaborn as sns
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')

αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

αž“αŸαŸ‡αž‡αžΆαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αžαŸ’αž›αžΈαŸ—αž–αžΈαžαžΆαž„αž›αžΎ αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž“αŸ’αžαž‘αŸ…αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž

αž…αžΌαžšαž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αžŸαžΌαž˜αžŠαž€αž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžαŸ‚αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž…αŸαž‰ (αž–αž½αž€αžœαžΆαž“αžΉαž„αž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž›αž‘αŸ’αž’αž•αž›αžαžΆαž˜αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŽαžΆαž˜αž½αž™αž‘αžΎαž™)αŸ–

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()

αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αž”αžΆαžαŸ‹αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž–αžŽαŸŒαž›αžΏαž„αŸ” αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž—αžΆαž–αžŸαž”αŸ’αž”αžΆαž™αžšαžΈαž€αžšαžΆαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ - αžšαž”αŸ€αž”αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡? αžαžΎαžαŸ’αž‰αž»αŸ†αž‚αž½αžšαž›αž»αž”αž‡αž½αžšαžŠαŸαž€αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒ αž¬αž‡αž½αžšαžˆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‘αŸ? αž¬αž”αŸ†αž–αŸαž‰αžαž˜αŸ’αž›αŸƒαž‘αž‘αŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž•αŸ’αžŸαŸαž„αž‘αŸ€αž?

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž›αžŠαŸ‚αž›αž’αžΆαž…αž‡αž½αž™αž’αŸ’αž“αž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžαžΆαž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž‘αž‘αŸαŸ–

αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

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')

αžŸαž“αŸ’αž›αžΉαž€αž”αž“αŸ’αž›αŸ† Notepad αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αžΏαž“

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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹