เชเชกเชชเซ€ เชกเซ‡เชŸเชพ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชจเซ‹เชŸเชชเซ‡เชก-เชšเซ€เชŸ เชถเซ€เชŸ

เช˜เชฃเซ€ เชตเช–เชค เชกเซ‡เชŸเชพ เชธเชพเชฏเชจเซเชธเชจเชพ เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถเชคเชพ เชฒเซ‹เช•เซ‹ เชคเซ‡เชฎเชจเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ‡ เชคเซ‡เชจเซ€ เชตเชพเชธเซเชคเชตเชฟเช• เช…เชชเซ‡เช•เซเชทเชพเช“ เช•เชฐเชคเชพเช‚ เช“เช›เซ€ เชนเซ‹เชฏ เช›เซ‡. เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เชตเชฟเชšเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชนเชตเซ‡ เชคเซ‡เช“ เชถเชพเชจเชฆเชพเชฐ เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช•เซเชธ เชฒเช–เชถเซ‡, เช†เชฏเชฐเซเชจ เชฎเซ…เชจเชฎเชพเช‚เชฅเซ€ เชตเซ‰เช‡เชธ เชธเชนเชพเชฏเช• เชฌเชจเชพเชตเชถเซ‡ เช…เชฅเชตเชพ เชจเชพเชฃเชพเช•เซ€เชฏ เชฌเชœเชพเชฐเซ‹เชฎเชพเช‚ เชฆเชฐเซ‡เช•เชจเซ‡ เชนเชฐเชพเชตเซ€ เชฆเซ‡เชถเซ‡.
เชชเชฃ เช•เชพเชฎ เชกเซ‡เชŸเชพ เชตเซˆเชœเซเชžเชพเชจเชฟเช• เชกเซ‡เชŸเชพ เช†เชงเชพเชฐเชฟเชค เช›เซ‡, เช…เชจเซ‡ เชเช• เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช…เชจเซ‡ เชธเชฎเชฏ เชฎเชพเช‚เช—เซ€ เชฒเซ‡เชคเซเช‚ เชชเชพเชธเซเช‚ เช เช›เซ‡ เช•เซ‡ เชกเซ‡เชŸเชพเชจเซ‡ เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚ เชซเซ€เชก เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช…เชฅเชตเชพ เชšเซ‹เช•เซเช•เชธ เชฐเซ€เชคเซ‡ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเซ€.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเชพเชฐเซ€ เชŸเซ€เชฎ เชตเชฐเซเชฃเชตเชถเซ‡ เช•เซ‡ เชคเชฎเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเช—เชฒเซเช‚-เชฆเชฐ-เชชเช—เชฒเชพเช‚ เชธเซ‚เชšเชจเซ‹ เช…เชจเซ‡ เช•เซ‹เชก เชตเชกเซ‡ เชเชกเชชเชฅเซ€ เช…เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชกเซ‡เชŸเชพ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชฎเซ‡ เช•เซ‹เชกเชจเซ‡ เชคเชฆเซเชฆเชจ เชฒเชตเชšเซ€เช• เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชตเชฟเชตเชฟเชง เชกเซ‡เชŸเชพเชธเซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡.

เช˜เชฃเชพ เชชเซเชฐเซ‹เชซเซ‡เชถเชจเชฒเซเชธเชจเซ‡ เช† เชฒเซ‡เช–เชฎเชพเช‚ เช…เชธเชพเชงเชพเชฐเชฃ เช•เช‚เชˆ เชฒเชพเช—เชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชจเชตเชพ เชจเชฟเชถเชพเชณเซ€เชฏเชพ เช•เช‚เชˆเช• เชจเชตเซเช‚ เชถเซ€เช–เซ€ เชถเช•เชถเซ‡, เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชœเซ‡เชฃเซ‡ เชเชกเชชเซ€ เช…เชจเซ‡ เชธเช‚เชฐเชšเชฟเชค เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชเช• เช…เชฒเช— เชจเซ‹เชŸเชฌเซเช• เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชธเชชเชจเซเช‚ เชœเซ‹เชฏเซเช‚ เช›เซ‡ เชคเซ‡ เช•เซ‹เชกเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซ‹เชคเชพเชจเซ‡ เชฎเชพเชŸเซ‡ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชฅเชตเชพ เช—เซ€เชฅเชฌเชฎเชพเช‚เชฅเซ€ เชซเชฟเชจเชฟเชถเซเชก เชจเซ‹เชŸเชฌเซเช• เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹.

เช…เชฎเชจเซ‡ เชกเซ‡เชŸเชพเชธเซ‡เชŸ เชฎเชณเซเชฏเซ‹ เช›เซ‡. เช†เช—เชณ เชถเซเช‚ เช•เชฐเชตเซเช‚?

เชคเซ‡เชฅเซ€, เชงเซ‹เชฐเชฃ: เช†เชชเชฃเซ‡ เชธเชฎเชœเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เช†เชชเชฃเซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชเช•เช‚เชฆเชฐ เชšเชฟเชคเซเชฐ. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชตเชฟเชตเชฟเชง เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ‡ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชพเช‚เชกเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช.

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() #ะ”ะตะผะพะฝัั‚ั€ะธั€ัƒะตะผ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพ ะบะพะปะพะฝะบะฐั…

เชเชกเชชเซ€ เชกเซ‡เชŸเชพ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชจเซ‹เชŸเชชเซ‡เชก-เชšเซ€เชŸ เชถเซ€เชŸ

เชšเชพเชฒเซ‹ เช•เซ‰เชฒเชฎเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชœเซ‹เชˆเช:

  1. เชถเซเช‚ เชฆเชฐเซ‡เช• เช•เซ‰เชฒเชฎเชฎเชพเช‚ เชฒเซ€เชŸเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฒเซ€เชŸเซ€เช“เชจเซ€ เช•เซเชฒ เชธเช‚เช–เซเชฏเชพเชจเซ‡ เช…เชจเซเชฐเซ‚เชช เช›เซ‡?
  2. เชฆเชฐเซ‡เช• เช•เซ‰เชฒเชฎเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ‹ เชธเชพเชฐ เชถเซเช‚ เช›เซ‡?
  3. เชคเซ‡เชจเซ€ เช†เช—เชพเชนเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชชเชฃเซ‡ เช•เชˆ เช•เซ‰เชฒเชฎเชจเซ‡ เชฒเช•เซเชทเซเชฏเชพเช‚เช• เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช?

เช† เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเชตเชพเชฌเซ‹ เชคเชฎเชจเซ‡ เชกเซ‡เชŸเชพเชธเซ‡เชŸเชจเซเช‚ เชชเซƒเชฅเซเชฅเช•เชฐเชฃ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเชฎเชพเชฐเซ€ เช†เช—เชพเชฎเซ€ เช•เซเชฐเชฟเชฏเชพเช“ เชฎเชพเชŸเซ‡ เช…เช‚เชฆเชพเชœเซ‡ เชเช• เชฏเซ‹เชœเชจเชพ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡.

เช‰เชชเชฐเชพเช‚เชค, เชฆเชฐเซ‡เช• เช•เซ‰เชฒเชฎเชฎเชพเช‚เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชชเชฐ เชŠเช‚เชกเชพเชฃเชชเซ‚เชฐเซเชตเช• เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ 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. เช…เชจเซเชฏ เชฎเซ‹เชกเซ‡เชฒ เชฆเซเชตเชพเชฐเชพ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡เชฒ เชฎเซ‚เชฒเซเชฏ เชฆเชพเช–เชฒ เช•เชฐเซ‹

เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชธเซเช•เซเชฒเซ‡เชฐเซเชจ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช…เชฅเชตเชพ เช…เชจเซเชฏ เชธเชฎเชพเชจ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเชพ เชฎเซ‹เชกเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฐเซ€เช—เซเชฐเซ‡เชถเชจ เชฎเซ‹เชกเชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช…เชฎเชพเชฐเซ€ เชŸเซ€เชฎ เชจเชœเซ€เช•เชจเชพ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชจเชพ เชชเชฐ เชเช• เช…เชฒเช— เชฒเซ‡เช– เช†เชชเชถเซ‡.

เชคเซ‡เชฅเซ€, เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡, เชฎเชพเชคเซเชฐเชพเชคเซเชฎเช• เชกเซ‡เชŸเชพ เชตเชฟเชถเซ‡เชจเซ€ เชตเชพเชฐเซเชคเชพเชฎเชพเช‚ เชตเชฟเช•เซเชทเซ‡เชช เช†เชตเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชตเชฟเชตเชฟเชง เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชจเซ€ เชคเซˆเชฏเชพเชฐเซ€ เช…เชจเซ‡ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เช…เชจเซเชฏ เช˜เชฃเซ€ เช˜เซ‹เช‚เช˜เชพเชŸ เช›เซ‡, เช…เชจเซ‡ เช† เชฒเซ‡เช–เชฎเชพเช‚ เชฎเชพเชคเซเชฐเชพเชคเซเชฎเช• เชฎเชพเชนเชฟเชคเซ€ เชฎเชพเชŸเซ‡เชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เช…เชจเซ‡ เชนเชตเซ‡ เช—เซเชฃเชพเชคเซเชฎเช• เชกเซ‡เชŸเชพ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช†เชตเซ€ เช—เชฏเซ‹ เช›เซ‡. เชœเซ‡เชจเซ‡ เช…เชฎเซ‡ เชฎเชพเชคเซเชฐเชพเชคเซเชฎเช• เชกเซ‡เชŸเชพเชฅเซ€ เช˜เชฃเชพ เชชเช—เชฒเชพเช‚ เชชเชพเช›เชณ เช…เชฒเช— เช•เชฐเซเชฏเชพ เช›เซ‡. เชคเชฎเซ‡ เช† เชจเซ‹เชŸเชฌเซเช•เชจเซ‡ เชคเชฎเชพเชฐเซ€ เชˆเชšเซเช›เชพ เชฎเซเชœเชฌ เชฌเชฆเชฒเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซ‡เชจเซ‡ เชตเชฟเชตเชฟเชง เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เช…เชจเซเช•เซ‚เชณ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชฅเซ€ เชกเซ‡เชŸเชพ เชชเซเชฐเซ€เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เช–เซ‚เชฌ เชœ เชเชกเชชเชฅเซ€ เชฅเชˆ เชœเชพเชฏ!

เช—เซเชฃเชพเชคเซเชฎเช• เชกเซ‡เชŸเชพ

เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, เช—เซเชฃเชพเชคเซเชฎเช• เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡, เชตเชจ-เชนเซ‹เชŸ-เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชคเซ‡เชจเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช— (เช…เชฅเชตเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸ) เชฅเซ€ เชจเช‚เชฌเชฐ เชชเชฐ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เช† เชฌเชฟเช‚เชฆเซ เชชเชฐ เช†เช—เชณ เชตเชงเชคเชพ เชชเชนเซ‡เชฒเชพ, เชšเชพเชฒเซ‹ เช–เชพเชฒเซ€ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฐเชจเชพ เชฐเซ‡เช–เชพเช•เซƒเชคเชฟ เช…เชจเซ‡ เช•เซ‹เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช.

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)

เช…เชฎเซ‡ เชกเซ‡เชŸเชพเชธเซ‡เชŸเซเชธเชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชญเซ‡เช—เชพ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เช†เช–เชฐเซ‡ sklearn เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚เชฅเซ€ MinMaxScaler เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเซ‹เชฐเซเชฎเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. เช†เชจเชพเชฅเซ€ เช…เชฎเชพเชฐเชพ เชฎเซ‚เชฒเซเชฏเซ‹ 0 เช…เชจเซ‡ 1 เชจเซ€ เชตเชšเซเชšเซ‡ เชฐเชนเซ‡เชถเซ‡, เชœเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชฎเซ‹เชกเซ‡เชฒเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเชคเซ€ เชตเช–เชคเซ‡ เชฎเชฆเชฆ เช•เชฐเชถเซ‡.

from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
new_df = min_max_scaler.fit_transform(new_df)

เช† เชกเซ‡เชŸเชพ เชนเชตเซ‡ เช•เซ‹เชˆเชชเชฃ เชตเชธเซเชคเซ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‡ - เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช•เซเชธ, เชธเซเชŸเชพเชจเซเชกเชฐเซเชก ML เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเซเชธ, เชตเช—เซ‡เชฐเซ‡.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เชธเชฎเชฏ เชถเซเชฐเซ‡เชฃเซ€เชจเชพ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเซเช‚ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช†เชตเชพ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเชพ เช†เชงเชพเชฐเซ‡ เชฅเซ‹เชกเซ€ เช…เชฒเช— เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชคเช•เชจเซ€เช•เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช. เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚, เช…เชฎเชพเชฐเซ€ เชŸเซ€เชฎ เช† เชตเชฟเชทเชฏ เชชเชฐ เชเช• เช…เชฒเช— เชฒเซ‡เช– เชธเชฎเชฐเซเชชเชฟเชค เช•เชฐเชถเซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เช†เชถเชพ เชฐเชพเช–เซ€เช เช›เซ€เช เช•เซ‡ เชคเซ‡ เช†เชจเซ€ เชœเซ‡เชฎ เชคเชฎเชพเชฐเชพ เชœเซ€เชตเชจเชฎเชพเช‚ เช•เช‚เชˆเช• เชฐเชธเชชเซเชฐเชฆ, เชจเชตเซเช‚ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฒเชพเชตเชตเชพเชฎเชพเช‚ เชธเชฎเชฐเซเชฅ เชนเชถเซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹