Pandas pārvērš kategoriskās vērtības uz iekšējām vērtībām

Pandas Parvers Kategoriskas Vertibas Uz Ieksejam Vertibam



Mašīnmācīšanās izpildes datu kopas ietver gan skaitliskos, gan kategoriskos mainīgos. Kategoriskie mainīgie ir virknes tipa dati, kurus cilvēki viegli uztver. No otras puses, mašīnas nevar tieši saprast kategoriskos ievades datus. Līdz ar to kategorisks saturs ir jāpārveido skaitliskās vērtībās, kuras mašīnas var interpretēt.

Metodes kategorisku pārvēršanai par Int

Šeit ir sniegtas “pandas” pieejamās metodes DataFrame kategorisko vērtību konvertēšanai int vērtībās:

    • DataFrame.replace() metode
    • DataFrame.apply(factorize()) metode

Mēs izmantosim šīs metodes šajā rakstā un detalizēti paskaidrosim, kā izmantot abas metodes “pandās”.







1. piemērs: Pandas Replace() metodes izmantošana

Kategoriskās vērtības DataFrame var pārvērst par int, izmantojot pandas metodi “DataFrame.replace()”. Šeit mēs iemācīsimies izmantot šo metodi.



Mēs izmantojām rīku “Spyder”, lai optimāli izpildītu šo paņēmienu Python. Lai sāktu rakstīt skriptu, atveriet jaunu Python failu rīkā “Spyder”. Būtiskākā prasība skripta rakstīšanai ir atbilstošu bibliotēku importēšana. Tā kā mums ir jāievieš “pandas” metode, mums būs iespēja “importēt pandas kā pd”, lai piekļūtu “pandu” funkcijām. Pēc tam mēs sākam savu Python galveno kodu. Mēs esam izveidojuši DataFrame, izmantojot metodi “pd.DataFrame()”. DataFrame inicializē trīs kolonnas “Nosaukums”, “Gāds” un “Ienākumi”. Visās DataFrame kolonnās ir vienāda garuma vērtības.



Pirmajā kolonnā “Vārds” ir astoņas vērtības, kas ir “bush”, “albert”, “harijs”, “Pēteris”, “emma”, “ņūtons”, “smits” un “elza”. Otrajā kolonnā “Grādi” tiek saglabātas arī astoņas kategoriskas vērtības, kas ir “BS”, “MS”, “MS”, “BS”, “BS”, “BS”, “MS” un “MS”. Pēdējā kolonnā “Ienākumi” ir astoņas veselas vērtības “60000”, “80000”, “75000”, “45000”, “56000”, “65000”, “55000” un “70000”. Mēs esam izveidojuši DataFrame objektu “staff”, lai saglabātu funkcijas “pd.DataFrame()” izsaukšanas izvadi. Lai parādītu sākotnējo DataFrame, mēs izmantojām metodi “print()” ar DataFrame nosaukumu “staff” kā parametru skripta pēdējā rindā.






Lai skatītu izvadi terminālī, izmantojiet pogu “Palaist failu” rīkā “Spyder” vai nospiediet taustiņus “Shift+Enter”. Terminālī parādītajā izvadē tiek parādīts DataFrame ar trim kolonnām, kas ir veiksmīgi ģenerētas.


Tagad mūsu DataFrame ir izveidots, mums ir jāpiemēro tam nepieciešamā tehnika. Pandas metode “DataFrame.replace()” tiks izmantota, lai konvertētu noteiktas kolonnas kategoriskās vērtības veselos skaitļos, lai mašīnas varētu tās padarīt lasāmas.



Mēs esam norādījuši DataFrame nosaukumu ar konkrēto kolonnas nosaukumu, kuras vērtības mums ir jāaizstāj, kas ir “personāls['gree']”. Mēs vēlamies, lai kolonnas “Grādi” vērtības, kurām ir kategoriskas vērtības, tiktu aizstātas ar veselām vērtībām. Pēc tam tiek izsaukta metode “.replace()”. Mēs to esam sadalījuši divos komplektos; pirmajā ir divas kategoriskas vērtības “['BS', 'MS']”, kuras mēs izvilkām no kolonnas 'Grādi'. Kā redzat, slejā “Grādi” šīs divas vērtības tiek izmantotas atkārtoti. Ja mums būtu trešā vērtība, noteikti arī to būtu pieminējuši. Otrajai kopai ir divas iekšējās vērtības “[0, 1]”, kas attiecīgi aizstās pirmās kopas vērtības. Otrs parametrs “inplace” ir iestatīts kā “True”, kas ļauj aizstāt vērtības. Ja iestatīts uz “False”, aizstāšana tiks atspējota. Visbeidzot, mēs esam izmantojuši metodi “print()”, lai parādītu atjaunināto “personāla” DataFrame.


Iegūtā DataFrame kolonnā “Grāds” ir veselu skaitļu vērtības. Vērtība “BS” tiek aizstāta ar “0s”, bet “MS” tiek aizstāta ar “1s”.


Varat pat pārbaudīt katras kolonnas datu tipu, izmantojot rekvizītu “dataframe.dtype”. Tādējādi mēs iegūsim visu norādītā DataFrame kolonnu datu tipus.


Šeit mēs ieguvām mūsu DataFrame datu tipus. Mēs redzam, ka kolonnas “Grādi” datu tips ir mainīts uz “int64”.

2. piemērs: Pandas apply() metodes izmantošana

Otra metode, ko mums sniedza pandas, ir funkcija “DataFrame.apply()”, lai kategoriskas vērtības pārvērstu veselos skaitļos. Iepriekšējā piemērā mēs esam iemācījušies pārvērst vienu kategorisko kolonnu par veselu skaitli. Tagad mēs redzēsim, kā pārveidot visas DataFrame kategoriskās kolonnas par int.

Sākot ar praktisko ieviešanu, mums ir jāimportē šīs metodes būtiskā bibliotēka, kas ir pandas. Mēs esam izmantojuši skriptu “import pandas as pd”, lai importētu pandas mūsu Python failā rīkā “Spyder”, kas ļaus mums piekļūt pandu moduļiem, izmantojot “pd”. Mēs izmantojām funkciju “pd.DataFrame()”, lai izveidotu DataFrame.

Šajā DataFrame ir četras kolonnas “grupa”, “pozīcija”, “novērtējumi” un “palīdzība”. Katrā kolonnā tiek saglabātas 9 vērtības. Kolonnas “Grupa” vērtības ir “X”, “X”, “Y”, “X”, “Y”, “Y”, “Y”, “X” un “Y”. Kolonnā “pozīcija” ir 9 vērtības, kas ir “A”, “C”, “D”, “A”, “C”, “B”, “B”, “D” un “B”. Kolonnā “Scores” ir veseli skaitļi: “4”, “8”, “7”, “10”, “9”, “5”, “7”, “3” un “23”. Pēdējā kolonnā “palīdz” ir vērtības “10”, “2”, “3”, “9”, “3”, “7”, “4”, “2” un “9”.

Mēs esam izveidojuši DataFrame objektu “prog” un piešķīruši tam izvadi, izsaucot metodi “pd.DataFrame()”. Tādējādi iegūtais DataFrame rāmis, kas ģenerēts no “pd.DataFrame()”, tiks saglabāts mapē “prog”. Tagad mēs varam piekļūt DataFrame, izmantojot šo objektu. Lai skatītu šo DataFrame, mēs esam izmantojuši metodi “print()” ar DataFrame objektu “prog” kā parametru.


Kad tiek izpildīta iepriekšējā Python programma, terminālī tiks parādīts DataFrame ar četrām kolonnām.


Lai pārvērstu vairākas kategoriskas kolonnas veselos skaitļos, mēs izmantojām šo metodi. Vispirms ir jāatlasa visas kolonnas, kurās ir objekta datu tips, izmantojot pandas metodi “DataFrame.select_dtypes().columns”. Ja mēs to izmantosim savā skriptā, kā nepieciešams, tas būs “prog.select_dtypes(['object']).columns”. Tas atlasīs visas kolonnas, kuru datu tips ir “object” “prog” DataFrame. Mēs esam izveidojuši mainīgo “concate_col”, lai saglabātu šīs metodes izvadi. Tagad mēs varam piekļūt datu tipa kolonnām “objekts”, vienkārši izmantojot šo mainīgo “concat_col”.

Tagad, lai pārvērstu šīs kolonnas veselos skaitļos, mēs esam izmantojuši pandas “DataFrame.apply()” ar metodi “pd.factorize()”. Mēs esam izmantojuši mainīgo “concat_col” ar DataFrame nosaukumu, pēc tam tiek izsaukta metode “.apply()”. Starp metodes “.apply” iekavām mēs esam izsaukuši metodi “pd.factorize()”, kur “x” var būt jebkura vērtība no “prog” DataFrame ar “object” datu tipu. Tādējādi visa šī koda rindiņa ir rakstīta kā “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. Faktorizācijas metodei tiks izmantota vērtība ar “objekta” datu tipu un pārvērst to par “int”. Galīgo izvadi var parādīt, izsaucot funkciju “print()”, kā parametru nododot mainīgo “prog”.


Atjauninātajā DataFrame varam novērot, ka kolonnu “grupa” un “pozīcija” vērtības sākotnēji bija kategoriskas, t.i., objekts. Joprojām atjauninātajā izvades DataFrame abās kolonnās ir veselas vērtības. Slejā “Grupa” “X” aizstāj ar “0” un “Y” ar “1”. Turpretī kolonna “pozīcija” “A” tiek aizstāta ar “0”, “C” ar “1”, “D” ar “2” un “B” ar “3”.


Tagad pārbaudīsim atjauninātos datu tipus.


Visām šīm kolonnām ir datu tips “int64”.

Secinājums

Mūsu rokasgrāmata ir veltīta kategorisko vērtību konvertēšanai skaitliskās vērtībās, lai mašīnas tās varētu padarīt saprotamas, jo tās nevar apstrādāt objekta datu tipu. Mēs esam iepazīstinājuši jūs ar divām pieejām, ko piedāvā “pandas” bibliotēka, lai iegūtu nepieciešamo datu tipu. Turklāt, praktiski ieviešot piemēru kodus, kas tiek darbināti rīkā “Spyder”, mēs kopīgojām katra piemēra rezultātus. Visbeidzot, mēs izstrādājām katru soli, lai sasniegtu vēlamo rezultātu.