Pandy Konvertujú kategorické hodnoty na medzinárodné hodnoty

Pandy Konvertuju Kategoricke Hodnoty Na Medzinarodne Hodnoty



Súbory údajov na vykonávanie strojového učenia zahŕňajú číselné aj kategorické premenné. Kategorické premenné sú údaje typu reťazec, ktoré ľudia ľahko pochopia. Na druhej strane stroje nedokážu priamo pochopiť kategorické vstupy. V dôsledku toho sa kategorický obsah musí transformovať na číselné hodnoty, ktoré môžu stroje interpretovať.

Metódy prevodu kategorických na medzinár

Techniky dostupné v „pandách“ na konverziu kategorických hodnôt dátového rámca na int sú uvedené tu:

    • Metóda DataFrame.replace().
    • DataFrame.apply(factorize()).

Tieto metódy použijeme v tomto článku a podrobne vysvetlíme, ako použiť obe metódy v „pandách“.







Príklad č. 1: Použitie metódy Pandas Replace().

Kategorické hodnoty v DataFrame možno previesť na int pomocou metódy pandas “DataFrame.replace()”. Tu sa naučíme používať túto metódu.



Na optimálne vykonanie tejto techniky v Pythone sme použili nástroj „Spyder“. Ak chcete začať písať skript, otvorte nový súbor Python v nástroji „Spyder“. Najdôležitejšou požiadavkou na písanie skriptu je import príslušných knižníc. Keďže musíme implementovať metódu „pandy“, budeme mať „importovať pandy ako pd“, aby sme získali prístup k funkciám „pandy“. Potom spustíme náš základný kód Pythonu. Vytvorili sme DataFrame pomocou metódy „pd.DataFrame()“. DataFrame je inicializovaný tromi stĺpcami „Názov“, „Stupeň“ a „Príjem“. Všetky stĺpce DataFrame ukladajú rovnakú dĺžku hodnôt.



Prvý stĺpec „Name“ má osem hodnôt, ktoré sú „bush“, „albert“, „harry“, „peter“, „emma“, „newton“, „smith“ a „elsa“. Druhý stĺpec „Stupeň“ tiež obsahuje osem kategorických hodnôt, ktoré sú „BS“, „MS“, „MS“, „BS“, „BS“, „BS“, „MS“ a „MS“. Posledný stĺpec „Príjem“ má osem celočíselných hodnôt „60000“, „80000“, „75000“, „45000“, „56000“, „65000“, „55000“ a „70000“. Vytvorili sme objekt DataFrame „staff“ na uloženie výstupu vyvolania funkcie „pd.DataFrame()“. Na zobrazenie nášho počiatočného DataFrame sme použili metódu „print()“ s názvom DataFrame „staff“ ako parametrom v poslednom riadku skriptu.






Ak chcete zobraziť výstup na termináli, použite tlačidlo „Spustiť súbor“ na nástroji „Spyder“ alebo stlačte klávesy „Shift+Enter“. Výstup zobrazený na termináli zobrazuje DataFrame s tromi stĺpcami, ktoré boli úspešne vygenerované.


Teraz je náš DataFrame skonštruovaný, musíme naň aplikovať požadovanú techniku. Metóda pandas “DataFrame.replace()” sa použije na konverziu kategorických hodnôt zadaného stĺpca na celočíselné hodnoty, aby ich počítače mohli sprístupniť.



Poskytli sme názov DataFrame s konkrétnym názvom stĺpca, ktorého hodnoty musíme nahradiť, čo je „personál[‚stupeň‘]“. Chceme, aby hodnoty stĺpca „Stupeň“, ktorý má kategorické hodnoty, boli nahradené celočíselnými hodnotami. Potom sa vyvolá metóda „.replace()“. Rozdelili sme to do dvoch sád; prvá obsahuje dve kategorické hodnoty „[‘BS‘, ‚MS‘]“, ktoré sme extrahovali zo stĺpca „Stupeň“. Ako vidíte, stĺpec „Stupeň“ opakovane používa tieto dve hodnoty. Ak by sme mali tretiu hodnotu, museli sme to spomenúť tiež. Druhá sada má dve hodnoty „[0, 1]“, ktoré nahradia hodnoty prvej sady. Druhý parameter „inplace“ je nastavený ako „True“ a umožňuje nahradenie hodnôt. Ak je nastavené na „False“, nahradenie sa deaktivuje. Nakoniec sme použili metódu „print()“ na zobrazenie aktualizovaného „pracovného“ DataFrame.


Výsledný DataFrame má v stĺpci „Stupeň“ celočíselné hodnoty. Hodnota „BS“ sa nahrádza „0s“ a „MS“ sa nahrádza „1s“.


Dátový typ pre každý stĺpec môžete dokonca overiť pomocou vlastnosti „dataframe.dtype“. Získame tak dátové typy všetkých stĺpcov v zadanom DataFrame.


Tu máme dátové typy nášho DataFrame. Vidíme, že dátový typ stĺpca „Stupeň“ sa zmenil na „int64“.

Príklad č. 2: Použitie metódy Pandas apply()

Ďalšou metódou, ktorú nám pandy poskytli, je funkcia „DataFrame.apply()“ na konverziu kategorických hodnôt na celé čísla. V predchádzajúcom príklade sme sa naučili previesť jeden kategorický stĺpec na celé číslo. Teraz uvidíme, ako previesť všetky kategorické stĺpce v DataFrame na int.

Počnúc praktickou implementáciou musíme importovať základnú knižnicu pre túto metódu, ktorou sú pandy. Skript „import pandas as pd“ sme použili na import pandy do nášho súboru Python v nástroji „Spyder“, ktorý nám umožní prístup k modulom pandy pomocou „pd“. Na vytvorenie DataFrame sme použili funkciu „pd.DataFrame()“.

Tento DataFrame má štyri stĺpce „skupina“, „pozícia“, „skóre“ a „asistuje“. Každý stĺpec obsahuje 9 hodnôt. Hodnoty stĺpca „skupina“ sú „X“, „X“, „Y“, „X“, „Y“, „Y“, „Y“, „X“ a „Y“. Stĺpec „position“ má 9 hodnôt, ktoré sú „A“, „C“, „D“, „A“, „C“, „B“, „B“, „D“ a „B“. Stĺpec „skóre“ má celočíselné hodnoty ako „4“, „8“, „7“, „10“, „9“, „5“, „7“, „3“ a „23“. Posledný stĺpec „asistuje“ má hodnoty „10“, „2“, „3“, „9“, „3“, „7“, „4“, „2“ a „9“.

Vytvorili sme objekt DataFrame „prog“ a priradili sme mu výstup vyvolania metódy „pd.DataFrame()“. Takže výsledný rámec DataFrame vygenerovaný z „pd.DataFrame()“ bude uložený v „prog“. Teraz môžeme pristupovať k DataFrame pomocou tohto objektu. Na zobrazenie tohto DataFrame sme použili metódu „print()“ s objektom DataFrame „prog“ ako jej parametrom.


Keď sa spustí predchádzajúci program Python, na termináli sa zobrazí DataFrame so štyrmi stĺpcami.


Na prevod viacerých kategorických stĺpcov na celé čísla sme použili túto techniku. Najprv musíme vybrať všetky stĺpce, ktoré obsahujú dátový typ objektu použitím metódy pandy “DataFrame.select_dtypes().columns”. Keď ho použijeme v našom skripte podľa potreby, bude to „prog.select_dtypes([‘object’]).columns“. Vyberie všetky stĺpce s dátovým typom „object“ v „prog“ DataFrame. Vytvorili sme premennú „concate_col“ na uloženie výstupu tejto metódy. Teraz máme prístup k stĺpcom údajových typov „object“ jednoducho pomocou tejto premennej „concat_col“.

Teraz, aby sme previedli tieto stĺpce na celé čísla, použili sme pandy “DataFrame.apply()” s metódou “pd.factorize()”. Použili sme premennú „concat_col“ s názvom DataFrame, potom sa vyvolá metóda „.apply()“. Medzi zátvorkami metódy „.apply“ sme nazvali metódu „pd.factorize()“, kde „x“ môže byť ľubovoľná hodnota z dátového rámca „prog“ s dátovým typom „object“. Celý tento riadok kódu je teda napísaný ako „prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])“. Metóda faktorizácie nadobudne hodnotu s dátový typ „object“ a previesť ho na „int“. Konečný výstup je možné zobraziť volaním funkcie „print()“ zadaním premennej „prog“ ako jej parametra.


V aktualizovanom DataFrame môžeme pozorovať, že hodnoty stĺpcov „group“ a „position“ boli pôvodne kategorické, teda objekt. Stále v aktualizovanom výstupe DataFrame majú oba stĺpce celočíselné hodnoty. V stĺpci „skupina“ sa „X“ nahrádza „0“ a „Y“ sa nahrádza „1“. Zatiaľ čo stĺpec „pozícia“ „A“ sa nahrádza „0“, „C“ sa nahrádza „1“, „D“ sa nahrádza „2“ a „B“ sa nahrádza „3“.


Teraz overme aktualizované dátové typy.


Všetky nasledujúce stĺpce majú typ údajov „int64“.

Záver

Náš sprievodca sa točí okolo prevodu kategorických hodnôt na číselné hodnoty tak, aby boli zrozumiteľné pre stroje, pretože údajový typ objektu nie je možné spracovať. Predstavili sme vám dva prístupy, ktoré ponúka knižnica „pandy“, aby ste získali požadovaný typ údajov. Vďaka praktickej implementácii vzorových kódov spustených na nástroji „Spyder“ sme zdieľali výsledok každého príkladu. Nakoniec sme rozpracovali každý krok, aby sme dosiahli požadovaný výsledok.