Kasagaran ang mga tawo nga mosulod sa natad sa Data Science adunay dili kaayo realistiko nga mga gilauman kung unsa ang naghulat kanila. Daghang mga tawo ang naghunahuna nga karon magsulat sila mga cool nga neural network, maghimo usa ka voice assistant gikan sa Iron Man, o mapildi ang tanan sa mga merkado sa pinansya.
Apan trabaho Data Ang siyentista gipatuyok sa datos, ug usa sa labing importante ug makagugol sa panahon nga mga aspeto mao ang pagproseso sa datos sa dili pa kini ipakaon ngadto sa neural network o pag-analisar niini sa usa ka paagi.
Niini nga artikulo, ihulagway sa among team kung giunsa nimo maproseso ang datos nga dali ug dali gamit ang sunod-sunod nga mga panudlo ug code. Gisulayan namo nga himoong flexible ang code ug mahimong magamit sa lain-laing mga dataset.
Daghang mga propesyonal dili tingali makakita og bisan unsa nga talagsaon niini nga artikulo, apan ang mga nagsugod makakat-on og bag-o nga butang, ug bisan kinsa nga dugay nang nagdamgo sa paghimo og bulag nga notebook alang sa paspas ug structured nga pagproseso sa datos mahimong kopyahon ang code ug i-format kini alang sa ilang kaugalingon, o
Nadawat namo ang dataset. Unsay sunod buhaton?
Busa, ang sumbanan: kinahanglan natong masabtan kung unsa ang atong giatubang, ang kinatibuk-ang hulagway. Aron mahimo kini, gigamit namon ang mga panda aron mahibal-an ra ang lainlaing mga tipo sa datos.
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() #ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ
Atong tan-awon ang mga kantidad sa kolum:
- Ang gidaghanon ba sa mga linya sa matag kolum katumbas sa kinatibuk-ang gidaghanon sa mga linya?
- Unsa ang esensya sa datos sa matag kolum?
- Unsa nga kolum ang gusto natong ipunting aron makahimo mga panagna alang niini?
Ang mga tubag sa kini nga mga pangutana magtugot kanimo sa pag-analisar sa mga datos ug pagdrowing og plano alang sa imong sunod nga mga aksyon.
Usab, alang sa mas lawom nga pagtan-aw sa mga kantidad sa matag kolum, mahimo natong gamiton ang pandas describe() function. Bisan pa, ang disbentaha sa kini nga function mao nga wala kini maghatag kasayuran bahin sa mga kolum nga adunay mga kantidad sa string. Ato silang atubangon unya.
df.describe()
Magic visualization
Atong tan-awon kung diin kita walaβy mga kantidad:
import seaborn as sns
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')
Kini usa ka mubo nga pagtan-aw gikan sa itaas, karon kita magpadayon sa labi ka makapaikag nga mga butang
Atong sulayan pagpangita ug, kung mahimo, tangtangon ang mga kolum nga adunay usa ra ka kantidad sa tanan nga mga laray (dili kini makaapekto sa resulta sa bisan unsang paagi):
df = df[[c for c
in list(df)
if len(df[c].unique()) > 1]] #ΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π΄Π°ΡΠ°ΡΠ΅Ρ, ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Karon among gipanalipdan ang among kaugalingon ug ang kalampusan sa among proyekto gikan sa mga doble nga linya (mga linya nga adunay parehas nga kasayuran sa parehas nga pagkasunod-sunod sa usa sa mga linya karon):
df.drop_duplicates(inplace=True) #ΠΠ΅Π»Π°Π΅ΠΌ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΈΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΌ.
#Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
ΡΠ΄Π°Π»ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Π½Π΅ ΡΡΠΎΠΈΡ.
Gibahin namo ang dataset ngadto sa duha: ang usa adunay qualitative values, ug ang usa nga quantitative
Dinhi kinahanglan namon nga maghimo usa ka gamay nga pagpatin-aw: kung ang mga linya nga adunay nawala nga datos sa kwalitatibo ug quantitative nga datos dili kaayo magkadugtong sa usag usa, nan kinahanglan namon nga magdesisyon kung unsa ang among gisakripisyo - ang tanan nga mga linya nga adunay nawala nga datos, bahin ra niini, o pipila ka mga kolum. Kung ang mga linya adunay kalabotan, nan kita adunay katungod nga bahinon ang dataset sa duha. Kung dili, kinahanglan nimo una nga atubangon ang mga linya nga wala mag-correlate sa nawala nga datos sa kwalitatibo ug quantitative, ug dayon bahinon ang dataset sa duha.
df_numerical = df.select_dtypes(include = [np.number])
df_categorical = df.select_dtypes(exclude = [np.number])
Gibuhat namo kini aron mas sayon ββββalang kanamo ang pagproseso niining duha ka lain-laing mga matang sa datos - sa ulahi among masabtan kung unsa ka sayon ββββniini ang among kinabuhi.
Nagtrabaho kami sa quantitative data
Ang unang butang nga kinahanglan natong buhaton mao ang pagtino kung adunay "mga kolum sa espiya" sa quantitative data. Gitawag namo kini nga mga kolum tungod kay gipresentar nila ang ilang kaugalingon isip quantitative data, apan naglihok isip qualitative data.
Sa unsang paagi nato mailhan sila? Siyempre, kini tanan nagdepende sa kinaiya sa datos nga imong gisusi, apan sa kinatibuk-an ang maong mga kolum mahimong adunay gamay nga talagsaon nga datos (sa rehiyon sa 3-10 nga talagsaon nga mga bili).
print(df_numerical.nunique())
Kung nahibal-an na namon ang mga kolum sa espiya, ibalhin namon sila gikan sa quantitative data ngadto sa qualitative data:
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']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
Sa katapusan, bug-os namong gibulag ang quantitative data gikan sa qualitative data ug karon mahimo na namong magtrabaho uban niini sa hustong paagi. Ang una nga butang mao ang pagsabut kung diin kita adunay walay sulod nga mga kantidad (NaN, ug sa pipila ka mga kaso 0 ang dawaton ingon nga walay sulod nga mga kantidad).
for i in df_numerical.columns:
print(i, df[i][df[i]==0].count())
Niini nga punto, importante nga masabtan kung diin ang mga kolum nga mga sero mahimong magpakita sa nawala nga mga kantidad: tungod ba kini kung giunsa ang pagkolekta sa datos? O mahimo ba kini nga may kalabutan sa mga kantidad sa datos? Kini nga mga pangutana kinahanglang tubagon sa matag kaso.
Mao nga, kung magdesisyon gihapon kita nga mahimoβg nawala ang datos kung adunay mga sero, kinahanglan naton ilisan ang mga sero sa NaN aron mas dali ang pagtrabaho sa nawala nga datos sa ulahi:
df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]] = df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]].replace(0, nan)
Karon atong tan-awon kung diin kita kulang sa datos:
sns.heatmap(df_numerical.isnull(),yticklabels=False,cbar=False,cmap='viridis') # ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ df_numerical.info()
Dinhi ang mga kantidad sa sulod sa mga kolum nga nawala kinahanglan markahan sa dilaw. Ug karon nagsugod na ang kalingawan - unsaon pag-atubang niini nga mga mithi? Kinahanglan ba nako nga tangtangon ang mga laray nga adunay kini nga mga kantidad o kolum? O pun-a kini nga mga walay sulod nga mga kantidad sa uban pa?
Ania ang usa ka gibanabana nga diagram nga makatabang kanimo sa pagdesisyon kung unsa ang mahimo, sa prinsipyo, buhaton sa walay sulod nga mga kantidad:
0. Kuhaa ang wala kinahanglana nga mga kolum
df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)
1. Ang gidaghanon ba sa walay sulod nga mga bili niini nga kolum labaw pa sa 50%?
print(df_numerical.isnull().sum() / df_numerical.shape[0] * 100)
df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 50 ΠΏΡΡΡΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
2. Pagtangtang sa mga linya nga adunay walay sulod nga mga kantidad
df_numerical.dropna(inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
3.1. Pagsulud sa usa ka random nga kantidad
import random #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ random
df_numerical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True) #Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΡΡΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ
3.2. Pagsal-ot sa usa ka kanunay nga bili
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. Isulud ang kasagaran o labing kanunay nga kantidad
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. Isulod ang bili nga kalkulado sa laing modelo
Usahay ang mga kantidad mahimong makalkula gamit ang mga modelo sa regression gamit ang mga modelo gikan sa librarya sa sklearn o uban pang parehas nga mga librarya. Ang among team maggahin ug usa ka bulag nga artikulo kung giunsa kini mahimo sa umaabot nga umaabot.
Busa, sa pagkakaron, ang asoy mahitungod sa quantitative data mabalda, tungod kay adunay daghang uban nga mga nuances mahitungod sa kon sa unsang paagi nga mas maayo sa pagbuhat sa data pag-andam ug preprocessing alang sa lain-laing mga buluhaton, ug ang mga nag-unang mga butang alang sa quantitative data nga gikuha ngadto sa asoy niini nga artikulo, ug Karon na ang panahon sa pagbalik sa kwalitatibo nga datos, nga atong gibulag ang pipila ka mga lakang pabalik gikan sa mga quantitative. Mahimo nimong usbon kini nga notebook kung gusto nimo, ipahiangay kini sa lainlaing mga buluhaton, aron ang preprocessing sa datos dali kaayo!
Kwalitatibo nga datos
Kasagaran, alang sa qualitative data, ang One-hot-encoding nga pamaagi gigamit aron ma-format kini gikan sa usa ka string (o butang) ngadto sa usa ka numero. Sa dili pa mopadayon niining puntoha, atong gamiton ang dayagram ug kodigo sa ibabaw aron atubangon ang walay sulod nga mga bili.
df_categorical.nunique()
sns.heatmap(df_categorical.isnull(),yticklabels=False,cbar=False,cmap='viridis')
0. Kuhaa ang wala kinahanglana nga mga kolum
df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)
1. Ang gidaghanon ba sa walay sulod nga mga bili niini nga kolum labaw pa sa 50%?
print(df_categorical.isnull().sum() / df_numerical.shape[0] * 100)
df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True) #Π£Π΄Π°Π»ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°
#ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 50% ΠΏΡΡΡΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
2. Pagtangtang sa mga linya nga adunay walay sulod nga mga kantidad
df_categorical.dropna(inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ,
#Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
3.1. Pagsulud sa usa ka random nga kantidad
import random
df_categorical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True)
3.2. Pagsal-ot sa usa ka kanunay nga bili
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)
Mao nga, sa katapusan nakakuha na kami usa ka pagdumala sa mga null sa kwalitatibo nga datos. Karon na ang panahon sa paghimo sa usa ka mainit nga pag-encode sa mga kantidad nga naa sa imong database. Kini nga pamaagi kanunay nga gigamit aron masiguro nga ang imong algorithm makakat-on gikan sa taas nga kalidad nga datos.
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))
Mao nga, nahuman na namon ang pagproseso sa bulag nga kwalitatibo ug quantitative nga datos - oras aron makombinar sila pagbalik
new_df = pd.concat([df_numerical,df_categorical], axis=1)
Human nato makombinar ang mga dataset ngadto sa usa, mahimo na natong gamiton ang pagbag-o sa datos gamit ang MinMaxScaler gikan sa sklearn library. Kini maghimo sa atong mga mithi tali sa 0 ug 1, nga makatabang sa pagbansay sa modelo sa umaabot.
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
new_df = min_max_scaler.fit_transform(new_df)
Andam na kini nga datos alang sa bisan unsang butang - neural network, standard ML algorithm, ug uban pa!
Niini nga artikulo, wala namo tagda ang pagtrabaho sa mga datos sa serye sa panahon, tungod kay alang sa maong mga datos kinahanglan nimo nga gamiton ang gamay nga lainlaing mga pamaagi sa pagproseso, depende sa imong buluhaton. Sa umaabot, ang among team maggahin ug lahi nga artikulo sa kini nga hilisgutan, ug kami nanghinaut nga kini makahatag usa ka butang nga makapaikag, bag-o ug mapuslanon sa imong kinabuhi, sama niini.
Source: www.habr.com