Pandy Převést kategorické hodnoty na mezinárodní hodnoty

Pandy Prevest Kategoricke Hodnoty Na Mezinarodni Hodnoty



Datové sady pro provádění strojového učení zahrnují numerické i kategorické proměnné. Kategorické proměnné jsou data typu řetězců, kterým lidé snadno porozumí. Na druhé straně stroje nemohou kategorickým vstupům přímo porozumět. V důsledku toho musí být kategorický obsah přeměněn na číselné hodnoty, které mohou stroje interpretovat.

Metody pro převod kategorických na mezinár

Techniky dostupné v „pandách“ pro převod kategorických hodnot DataFrame na int jsou uvedeny zde:

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

Tyto metody využijeme v tomto článku a podrobně vysvětlíme, jak využít obě metody v „pandách“.







Příklad č. 1: Využití metody Pandas Replace()

Kategorické hodnoty v DataFrame lze převést na int pomocí metody pandas “DataFrame.replace()”. Zde se naučíme používat tuto metodu.



K optimálnímu provedení této techniky v Pythonu jsme použili nástroj „Spyder“. Chcete-li začít psát skript, otevřete nový soubor Python v nástroji „Spyder“. Nejdůležitějším požadavkem pro psaní skriptu je import příslušných knihoven. Protože musíme implementovat metodu „pandas“, budeme mít „import pandas as pd“ pro přístup k funkcím „pandy“. Poté spustíme náš základní kód Pythonu. Vytvořili jsme DataFrame pomocí metody „pd.DataFrame()“. DataFrame je inicializován třemi sloupci „Jméno“, „Stupeň“ a „Příjem“. Všechny sloupce DataFrame ukládají stejnou délku hodnot.



První sloupec „Name“ má osm hodnot, které jsou „bush“, „albert“, „harry“, „peter“, „emma“, „newton“, „smith“ a „elsa“. Druhý sloupec „Stupeň“ také ukládá osm kategoriálních hodnot, které jsou „BS“, „MS“, „MS“, „BS“, „BS“, „BS“, „MS“ a „MS“. Poslední sloupec „Příjem“ má osm celočíselných hodnot „60000“, „80000“, „75000“, „45000“, „56000“, „65000“, „55000“ a „70000“. Vytvořili jsme objekt DataFrame „staff“ pro uložení výstupu vyvolání funkce „pd.DataFrame()“. K zobrazení našeho počátečního DataFrame jsme použili metodu „print()“ s názvem DataFrame „staff“ jako parametrem na posledním řádku skriptu.






Chcete-li zobrazit výstup na terminálu, použijte tlačítko „Spustit soubor“ na nástroji „Spyder“ nebo stiskněte klávesy „Shift+Enter“. Výstup zobrazený na terminálu ukazuje DataFrame se třemi sloupci, které byly úspěšně vygenerovány.


Nyní je náš DataFrame vytvořen, musíme na něj aplikovat požadovanou techniku. Metoda pandas “DataFrame.replace()” bude použita k převodu kategoriálních hodnot zadaného sloupce na celočíselné hodnoty, aby je mohly stroje učinit čitelné.



Poskytli jsme název DataFrame s konkrétním názvem sloupce, jehož hodnoty musíme nahradit, což je „staff[‘degree‘]“. Chceme, aby byly hodnoty ve sloupci „Stupeň“, který má kategorické hodnoty, nahrazeny celočíselnými hodnotami. Poté je vyvolána metoda „.replace()“. Rozdělili jsme to do dvou sad; první obsahuje dvě kategorické hodnoty „[‘BS‘, ‚MS‘]“, které jsme extrahovali ze sloupce „Stupeň“. Jak vidíte, sloupec „Stupeň“ opakovaně používá tyto dvě hodnoty. Pokud bychom měli třetí hodnotu, museli jsme to také zmínit. Druhá sada má dvě vnitřní hodnoty „[0, 1]“, které nahradí hodnoty první sady. Druhý parametr „inplace“ je nastaven jako „True“ a umožňuje nahrazování hodnot. Pokud je nastaveno na „False“, výměna bude zakázána. Nakonec jsme použili metodu „print()“ k zobrazení aktualizovaného „pracovního“ DataFrame.


Výsledný DataFrame má ve sloupci „Stupeň“ celočíselné hodnoty. Hodnota „BS“ je nahrazena „0s“ a „MS“ je nahrazena „1s“.


Můžete dokonce ověřit datový typ pro každý sloupec pomocí vlastnosti „dataframe.dtype“. Tím získáme datové typy všech sloupců v zadaném DataFrame.


Zde máme datové typy našeho DataFrame. Vidíme, že datový typ sloupce „Stupeň“ se změnil na „int64“.

Příklad č. 2: Využití metody Pandas apply()

Další metodou, kterou nám pandas poskytl, je funkce „DataFrame.apply()“ pro převod kategorických hodnot na celá čísla. V předchozím příkladu jsme se naučili převést jeden kategorický sloupec na celé číslo. Nyní uvidíme, jak převést všechny kategorické sloupce v DataFrame na int.

Počínaje praktickou implementací musíme importovat základní knihovnu pro tuto metodu, kterou jsou pandy. Použili jsme skript „import pandas as pd“ k importu pand do našeho souboru Python v nástroji „Spyder“, který nám umožní přístup k modulům pandas pomocí „pd“. Ke konstrukci DataFrame jsme použili funkci „pd.DataFrame()“.

Tento DataFrame má čtyři sloupce „skupina“, „pozice“, „skóre“ a „pomáhá“. Každý sloupec obsahuje 9 hodnot. Hodnoty sloupce „skupina“ jsou „X“, „X“, „Y“, „X“, „Y“, „Y“, „Y“, „X“ a „Y“. Sloupec „position“ má 9 hodnot, které jsou „A“, „C“, „D“, „A“, „C“, „B“, „B“, „D“ a „B“. Sloupec „skóre“ má celočíselné hodnoty jako „4“, „8“, „7“, „10“, „9“, „5“, „7“, „3“ a „23“. Poslední sloupec „asistuje“ má hodnoty „10“, „2“, „3“, „9“, „3“, „7“, „4“, „2“ a „9“.

Vytvořili jsme objekt DataFrame „prog“ a přiřadili jsme mu výstup vyvolání metody „pd.DataFrame()“. Takže výsledný rámec DataFrame vygenerovaný z „pd.DataFrame()“ bude uložen v „prog“. Nyní můžeme přistupovat k DataFrame pomocí tohoto objektu. Pro zobrazení tohoto DataFrame jsme použili metodu „print()“ s objektem DataFrame „prog“ jako jejím parametrem.


Když je spuštěn předchozí program Python, na terminálu se zobrazí DataFrame se čtyřmi sloupci.


Chcete-li převést více kategorických sloupců na celá čísla, použili jsme tuto techniku. Nejprve musíme vybrat všechny sloupce, které obsahují datový typ objektu, pomocí metody pandas “DataFrame.select_dtypes().columns”. Když jej použijeme v našem skriptu podle potřeby, bude to „prog.select_dtypes([‘object’]).columns“. Vybere všechny sloupce s datovým typem „object“ v „prog“ DataFrame. Vytvořili jsme proměnnou „concate_col“ pro uložení výstupu této metody. Nyní můžeme přistupovat ke sloupcům datových typů „object“ jednoduše pomocí této proměnné „concat_col“.

Nyní, abychom převedli tyto sloupce na celá čísla, jsme použili pandy „DataFrame.apply()“ s metodou „pd.factorize()“. Použili jsme proměnnou „concat_col“ s názvem DataFrame, poté je vyvolána metoda „.apply()“. Mezi závorkami metody „.apply“ jsme nazvali metodu „pd.factorize()“, kde „x“ může být jakákoli hodnota z „prog“ DataFrame s datovým typem „object“. Celý tento řádek kódu je tedy zapsán jako „prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])“. Metoda faktorizace bude mít hodnotu s datový typ „object“ a převést jej na „int“. Konečný výstup lze zobrazit voláním funkce „print()“ předáním proměnné „prog“ jako jejího parametru.


V aktualizovaném DataFrame můžeme pozorovat, že hodnoty sloupců „group“ a „position“ byly původně kategorické, tedy objekt. Stále v aktualizovaném výstupu DataFrame mají oba sloupce celočíselné hodnoty. Ve sloupci „skupina“ se „X“ nahrazuje „0“ a „Y“ je „1“. Zatímco „pozice“ ve sloupci „A“ je nahrazena „0“, „C“ za „1“, „D“ za „2“ a „B“ za „3“.


Nyní ověříme aktualizované datové typy.


Všechny následující sloupce mají datový typ „int64“.

Závěr

Náš průvodce se točí kolem převodu kategorických hodnot na číselné hodnoty tak, aby byly pro stroje srozumitelné, protože datový typ objektu jimi nelze zpracovat. Představili jsme vám dva přístupy, které nabízí knihovna „pandy“, abyste získali požadovaný datový typ. Také s praktickou implementací ukázkových kódů spuštěných na nástroji „Spyder“ jsme sdíleli výsledek každého příkladu. Nakonec jsme propracovali každý krok k dosažení požadovaného výsledku.