Pandas Pretvorite kategoričke vrijednosti u unutarnje vrijednosti

Pandas Pretvorite Kategoricke Vrijednosti U Unutarnje Vrijednosti



Skupovi podataka za izvođenje strojnog učenja uključuju i numeričke i kategoričke varijable. Kategorijalne varijable su podaci tipa niza koje ljudi lako razumiju. Strojevi, s druge strane, ne mogu izravno razumjeti kategoričke ulaze. Posljedično, kategorički sadržaj mora se transformirati u numeričke vrijednosti koje strojevi mogu interpretirati.

Metode za pretvaranje kategoričkih u int

Tehnike dostupne u 'pandama' za pretvaranje kategoričkih u int vrijednosti DataFramea navedene su ovdje:

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

Iskoristit ćemo te metode u ovom članku i detaljno objasniti kako koristiti obje metode u 'pandama'.







Primjer # 1: Korištenje metode Pandas Replace().

Kategoričke vrijednosti u DataFrameu mogu se pretvoriti u int pomoću pandas metode “DataFrame.replace()”. Ovdje ćemo naučiti koristiti ovu metodu.



Koristili smo alat 'Spyder' za optimalno izvođenje ove tehnike u Pythonu. Za početak pisanja skripte otvorite novu Python datoteku u alatu 'Spyder'. Najvažniji zahtjev za pisanje skripte je uvoz odgovarajućih biblioteka. Budući da moramo implementirati metodu 'pande', imat ćemo 'uvezi pande kao pd' za pristup značajkama 'pandi'. Zatim pokrećemo naš osnovni Python kod. Stvorili smo DataFrame pomoću metode “pd.DataFrame()”. DataFrame se inicijalizira s tri stupca 'Ime', 'Stupanj' i 'Prihod'. Svi stupci DataFramea pohranjuju vrijednosti iste duljine.



Prvi stupac, 'Ime', ima osam vrijednosti koje su 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' i 'elsa'. Drugi stupac, 'Stupanj', također pohranjuje osam kategoričkih vrijednosti, a to su 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' i 'MS'. Zadnji stupac 'Prihod' ima osam cjelobrojnih vrijednosti '60000', '80000', '75000', '45000', '56000', '65000', '55000' i '70000'. Stvorili smo objekt DataFrame “staff” za pohranjivanje rezultata pozivanja funkcije “pd.DataFrame()”. Za prikaz našeg početnog DataFramea upotrijebili smo metodu 'print()' s imenom DataFramea 'staff' kao parametrom u završnom retku skripte.






Da biste vidjeli izlaz na terminalu, upotrijebite gumb 'Pokreni datoteku' na alatu 'Spyder' ili pritisnite tipke 'Shift+Enter'. Izlaz prikazan na terminalu prikazuje DataFrame s tri stupca koji su uspješno generirani.


Sada, naš DataFrame je konstruiran, moramo primijeniti potrebnu tehniku ​​na njega. Metoda pandas “DataFrame.replace()” koristit će se za pretvaranje kategoričkih vrijednosti određenog stupca u cjelobrojne vrijednosti kako bi ih strojevi mogli učiniti čitljivima.



Dali smo naziv DataFrame-a s određenim nazivom stupca čije vrijednosti trebamo zamijeniti, a to je 'osoblje ['diploma']'. Želimo da se vrijednosti stupca 'Stupanj', koji ima kategoričke vrijednosti, zamijene cjelobrojnim vrijednostima. Zatim se poziva metoda “.replace()”. Podijelili smo ga u dva skupa; prvi sadrži dvije kategoričke vrijednosti '['BS', 'MS']' koje smo izdvojili iz stupca 'Stupanj'. Kao što vidite, stupac 'Stupanj' više puta koristi ove dvije vrijednosti. Ako imamo treću vrijednost, sigurno smo i to spomenuli. Drugi skup ima dvije int vrijednosti “[0, 1]”, koje će zauzeti mjesto vrijednosti prvog skupa. Drugi parametar, 'inplace', postavljen je na 'True', omogućujući zamjenu vrijednosti. Ako je postavljeno na 'False', onemogućit će zamjenu. Konačno, upotrijebili smo metodu 'print()' za prikaz ažuriranog DataFramea 'osoblja'.


Rezultirajući DataFrame ima cjelobrojne vrijednosti u stupcu 'Stupanj'. Vrijednost “BS” zamijenjena je s “0s”, a “MS” je zamijenjena s “1s”.


Možete čak provjeriti vrstu podataka za svaki stupac pomoću svojstva “dataframe.dtype”. Time ćemo dobiti tipove podataka svih stupaca u navedenom DataFrameu.


Evo, dobili smo tipove podataka našeg DataFramea. Vidimo da je tip podataka stupca 'Stupanj' promijenjen u 'int64'.

Primjer # 2: Korištenje Pandas apply() metode

Druga metoda koju nam je pružio pandas je funkcija “DataFrame.apply()” za pretvaranje kategoričkih vrijednosti u cijele brojeve. U prethodnom primjeru smo naučili pretvoriti jedan kategorički stupac u cijeli broj. Sada ćemo vidjeti kako pretvoriti sve kategoričke stupce u DataFrameu u int.

Započinjući s praktičnom implementacijom, moramo uvesti osnovnu knjižnicu za ovu metodu, a to su pande. Koristili smo skriptu “import pandas as pd” za uvoz pandi u našu Python datoteku u alatu “Spyder”, koji će nam omogućiti pristup modulima pandas pomoću “pd”. Koristili smo funkciju 'pd.DataFrame()' za konstruiranje DataFramea.

Ovaj DataFrame ima četiri stupca 'grupa', 'pozicija', 'rezultati' i 'pomoći'. Svaki stupac pohranjuje 9 vrijednosti. Vrijednosti stupca 'grupe' su 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' i 'Y'. Stupac 'pozicija' ima 9 vrijednosti koje su 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' i 'B'. Stupac 'rezultati' ima cjelobrojne vrijednosti kao što su '4', '8', '7', '10', '9', '5', '7', '3' i '23'. Posljednji stupac, 'pomoći', ima vrijednosti '10', '2', '3', '9', '3', '7', '4', '2' i '9'.

Stvorili smo DataFrame objekt “prog” i dodijelili mu izlaz pozivanja metode “pd.DataFrame()”. Dakle, rezultirajući okvir DataFrame generiran iz 'pd.DataFrame()' bit će pohranjen u 'prog'. Sada možemo pristupiti DataFrameu pomoću ovog objekta. Da bismo vidjeli ovaj DataFrame, upotrijebili smo metodu 'print()' s objektom DataFrame 'prog' kao parametrom.


Kada se izvrši prethodni Python program, na terminalu će se prikazati DataFrame s četiri stupca.


Za pretvaranje više kategoričkih stupaca u cijele brojeve, slijedili smo ovu tehniku. Prvo moramo odabrati sve stupce koji sadrže vrstu podataka objekta koristeći pandas metodu “DataFrame.select_dtypes().columns”. Kada ga upotrijebimo u našoj skripti prema potrebi, to će biti 'prog.select_dtypes(['object']).columns'. Odabrat će sve stupce koji imaju tip podataka 'object' u 'prog' DataFrame. Stvorili smo varijablu “concate_col” za pohranu izlaza ove metode. Sada možemo pristupiti stupcima tipa podataka “object” jednostavnim korištenjem ove varijable “concat_col”.

Sada, za pretvaranje ovih stupaca u cijele brojeve, koristili smo pande “DataFrame.apply()” s metodom “pd.factorize()”. Koristili smo varijablu “concat_col” s nazivom DataFrame, a zatim se poziva metoda “.apply()”. Između zagrada metode “.apply” nazvali smo metodu “pd.factorize()” gdje “x” može biti bilo koja vrijednost iz “prog” DataFramea s tipom podataka “object”. Stoga je cijeli ovaj redak koda napisan kao 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. Metoda faktoriziranja će uzeti vrijednost s tip podataka “object” i pretvoriti ga u “int”. Konačni izlaz može se prikazati pozivanjem funkcije 'print()' prosljeđivanjem varijable 'prog' kao parametra.


U ažuriranom DataFrameu možemo uočiti da su vrijednosti stupaca 'group' i 'position' u početku bile kategoričke, tj. objektne. I dalje u ažuriranom izlaznom DataFrameu oba stupca imaju cjelobrojne vrijednosti. U stupcu 'grupa' 'X' se zamjenjuje s '0', a 'Y' s '1'. Dok se stupac 'položaj' 'A' zamjenjuje s '0', 'C' s '1', 'D' s '2' i 'B' s '3'.


Sada provjerimo ažurirane tipove podataka.


Svi sljedeći stupci imaju tip podataka 'int64'.

Zaključak

Naš se vodič vrti oko pretvaranja kategoričkih vrijednosti u numeričke vrijednosti kako bi ih strojevi mogli učiniti razumljivima budući da oni ne mogu obraditi tip podataka objekta. Upoznali smo vas s dva pristupa koje nudi biblioteka 'pandas' za dobivanje potrebnog tipa podataka. Također, uz praktičnu implementaciju primjera kodova pokrenutih na alatu 'Spyder', podijelili smo ishod svakog primjera. Na kraju, razradili smo svaki korak kako bismo postigli željeni rezultat.