Pandas pretvori kategorične vrednosti v int vrednosti

Pandas Pretvori Kategoricne Vrednosti V Int Vrednosti



Nabori podatkov za izvajanje strojnega učenja vključujejo numerične in kategorične spremenljivke. Kategorične spremenljivke so nizni podatki, ki jih ljudje zlahka razumemo. Po drugi strani pa stroji ne morejo neposredno razumeti kategoričnih vnosov. Posledično je treba kategorično vsebino pretvoriti v numerične vrednosti, ki jih stroji lahko interpretirajo.

Metode za pretvorbo kategoričnih v medn

Tehnike, ki so na voljo v »pandah« za pretvorbo kategoričnih v int vrednosti DataFrame, so na voljo tukaj:

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

Te metode bomo uporabili v tem članku in podrobno razložili, kako uporabiti obe metodi v »pandah«.







Primer # 1: Uporaba metode Pandas Replace().

Kategorične vrednosti v DataFrame je mogoče pretvoriti v int z uporabo pandasove metode »DataFrame.replace()«. Tukaj se bomo naučili uporabljati to metodo.



Za optimalno izvedbo te tehnike v Pythonu smo uporabili orodje »Spyder«. Če želite začeti pisati skript, odprite novo datoteko Python v orodju »Spyder«. Najpomembnejša zahteva za pisanje skripta je uvoz ustreznih knjižnic. Ker moramo implementirati metodo »pand«, bomo imeli »uvozi pande kot pd« za dostop do funkcij »pand«. Nato zaženemo našo osnovno kodo Python. Ustvarili smo DataFrame z uporabo metode “pd.DataFrame()”. DataFrame je inicializiran s tremi stolpci »Ime«, »Stopnja« in »Dohodek«. Vsi stolpci DataFrame hranijo enako dolžino vrednosti.



Prvi stolpec, »Ime«, ima osem vrednosti, ki so »bush«, »albert«, »harry«, »peter«, »emma«, »newton«, »smith« in »elsa«. Drugi stolpec, »Stopnja«, prav tako hrani osem kategoričnih vrednosti, ki so »BS«, »MS«, »MS«, »BS«, »BS«, »BS«, »MS« in »MS«. Zadnji stolpec »Dohodek« ima osem celih vrednosti »60000«, »80000«, »75000«, »45000«, »56000«, »65000«, »55000« in »70000«. Ustvarili smo objekt DataFrame »staff« za shranjevanje rezultatov priklica funkcije »pd.DataFrame()«. Za prikaz našega začetnega DataFrame smo uporabili metodo »print()« z imenom DataFrame »staff« kot parametrom v zadnji vrstici skripta.






Za ogled izhoda na terminalu uporabite gumb »Zaženi datoteko« na orodju »Spyder« ali pritisnite tipki »Shift+Enter«. Izhod, prikazan na terminalu, prikazuje DataFrame s tremi stolpci, ki so bili uspešno ustvarjeni.


Zdaj, ko je naš DataFrame izdelan, moramo zanj uporabiti zahtevano tehniko. Metoda pandas “DataFrame.replace()” bo uporabljena za pretvorbo kategoričnih vrednosti določenega stolpca v celoštevilske vrednosti, tako da jih stroji lahko naredijo berljive.



Ime DataFrame smo zagotovili z imenom določenega stolpca, katerega vrednosti moramo zamenjati, kar je »osebje ['stopnja']«. Želimo, da se vrednosti stolpca »Stopnja«, ki ima kategorične vrednosti, nadomestijo s celimi vrednostmi. Nato se prikliče metoda “.replace()”. Razdelili smo ga v dva sklopa; prvi vsebuje dve kategorični vrednosti »['BS', 'MS']«, ki smo ju izluščili iz stolpca »Stopnja«. Kot lahko vidite, stolpec »Stopnja« večkrat uporablja ti dve vrednosti. Če bi imeli tretjo vrednost, bi morali omeniti tudi to. Drugi niz ima dve int vrednosti '[0, 1]', ki bosta nadomestili vrednosti prvega niza. Drugi parameter, »inplace«, je nastavljen na »True«, kar omogoča zamenjavo vrednosti. Če je nastavljeno na »False«, bo zamenjava onemogočena. Nazadnje smo uporabili metodo »print()« za prikaz posodobljenega DataFrame »osebja«.


Nastali DataFrame ima celoštevilske vrednosti v stolpcu »Stopnja«. Vrednost »BS« se nadomesti z »0s«, »MS« pa z »1s«.


Podatkovni tip za vsak stolpec lahko celo preverite z uporabo lastnosti »dataframe.dtype«. Tako bomo pridobili podatkovne tipe vseh stolpcev v podanem DataFrame.


Tukaj imamo podatkovne tipe našega DataFrame. Vidimo lahko, da se podatkovni tip stolpca »Stopnja« spremeni v »int64«.

Primer # 2: Uporaba metode Panda apply().

Druga metoda, ki nam jo je ponudil pandas, je funkcija »DataFrame.apply()« za pretvorbo kategoričnih vrednosti v cela števila. V prejšnjem primeru smo se naučili pretvoriti en kategorični stolpec v celo število. Zdaj bomo videli, kako pretvoriti vse kategorične stolpce v DataFrame v int.

Začenši s praktično implementacijo, moramo uvoziti osnovno knjižnico za to metodo, ki je pande. Uporabili smo skript »import pandas as pd« za uvoz pand v našo datoteko Python v orodju »Spyder«, ki nam bo omogočil dostop do modulov pandas z uporabo »pd«. Uporabili smo funkcijo 'pd.DataFrame()' za izdelavo DataFrame.

Ta DataFrame ima štiri stolpce »skupina«, »položaj«, »rezultati« in »pomoči«. Vsak stolpec hrani 9 vrednosti. Vrednosti stolpca »skupine« so »X«, »X«, »Y«, »X«, »Y«, »Y«, »Y«, »X« in »Y«. Stolpec 'položaj' ima 9 vrednosti, ki so 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' in 'B'. Stolpec »rezultati« ima celoštevilske vrednosti kot so »4«, »8«, »7«, »10«, »9«, »5«, »7«, »3« in »23«. Zadnji stolpec, 'pomoči', ima vrednosti '10', '2', '3', '9', '3', '7', '4', '2' in '9'.

Ustvarili smo objekt DataFrame »prog« in mu dodelili izhod priklica metode »pd.DataFrame()«. Tako bo nastali okvir DataFrame, ustvarjen iz »pd.DataFrame()«, shranjen v »prog«. Zdaj lahko dostopamo do DataFrame z uporabo tega predmeta. Za ogled tega DataFrame smo uporabili metodo »print()« z objektom DataFrame »prog« kot parametrom.


Ko se izvede prejšnji program Python, se na terminalu prikaže DataFrame s štirimi stolpci.


Za pretvorbo več kategoričnih stolpcev v cela števila smo uporabili to tehniko. Najprej moramo izbrati vse stolpce, ki vsebujejo podatkovni tip objekta, z uporabo metode pandas “DataFrame.select_dtypes().columns”. Ko ga po potrebi uporabimo v našem skriptu, bo to »prog.select_dtypes(['object']).columns«. Izbral bo vse stolpce s podatkovnim tipom 'object' v 'prog' DataFrame. Ustvarili smo spremenljivko »concate_col« za shranjevanje izhoda te metode. Zdaj lahko preprosto dostopamo do stolpcev podatkovnega tipa »object« s to spremenljivko »concat_col«.

Za pretvorbo teh stolpcev v cela števila smo uporabili pande »DataFrame.apply()« z metodo »pd.factorize()«. Uporabili smo spremenljivko »concat_col« z imenom DataFrame, nato pa se prikliče metoda ».apply()«. V oklepaju metode ».apply« smo imenovali metodo »pd.factorize()«, kjer je »x« lahko katera koli vrednost iz podatkovnega okvira »prog« s podatkovnim tipom »object«. Tako je ta celotna vrstica kode zapisana kot “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. Metoda faktorizacije bo prevzela vrednost z podatkovni tip 'object' in ga pretvorite v 'int'. Končni izhod je mogoče prikazati s klicem funkcije »print()« s posredovanjem spremenljivke »prog« kot parametra.


V posodobljenem DataFrame lahko opazimo, da so bile vrednosti stolpcev »skupina« in »pozicija« sprva kategorične, tj. objektne. Še vedno v posodobljenem izhodnem DataFrame imata oba stolpca celoštevilske vrednosti. V stolpcu »skupina« se »X« nadomesti z »0« in »Y« z »1«. Medtem ko se stolpec »položaj« »A« nadomesti z »0«, »C« z »1«, »D« z »2« in »B« z »3«.


Zdaj pa preverimo posodobljene vrste podatkov.


Vsi naslednji stolpci imajo podatkovni tip »int64«.

Zaključek

Naš vodnik se vrti okoli pretvorbe kategoričnih vrednosti v številske vrednosti, tako da jih lahko stroji naredijo razumljive, saj podatkovnega tipa objekta ne morejo obdelati. Predstavili smo vam dva pristopa, ki ju predstavlja knjižnica »pandas« za pridobitev zahtevanega podatkovnega tipa. Poleg tega smo s praktično implementacijo primerov kod, ki se izvajajo na orodju »Spyder«, delili rezultate vsakega primera. Nazadnje smo razložili vsak korak, da bi dosegli želeni rezultat.