Pandaer Konverter kategoriske værdier til Int-værdier

Pandaer Konverter Kategoriske Vaerdier Til Int Vaerdier



Datasættene til udførelse af maskinlæring omfatter både numeriske og kategoriske variabler. Kategoriske variabler er data af strengtype, som mennesker let kan forstå. Maskiner kan på den anden side ikke forstå kategoriske input direkte. Kategorisk indhold skal derfor transformeres til numeriske værdier, som maskiner kan fortolke.

Metoder til konvertering af kategori til Int

De tilgængelige teknikker i 'pandas' til at konvertere de kategoriske til int-værdier af en DataFrame er angivet her:

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

Vi vil bruge disse metoder i denne artikel og forklare i detaljer, hvordan man bruger begge metoder i 'pandaer'.







Eksempel # 1: Brug af Pandas Replace()-metoden

Kategoriske værdier i en DataFrame kan konverteres til int ved at bruge pandas 'DataFrame.replace()'-metoden. Vi vil her lære at bruge denne metode.



Vi brugte 'Spyder'-værktøjet til at udføre denne teknik optimalt i Python. For at begynde at skrive scriptet skal du åbne en ny Python-fil i 'Spyder'-værktøjet. Det vigtigste krav for at skrive scriptet er at importere passende biblioteker. Da vi skal implementere en 'pandas'-metode, vil vi have 'import pandaer som pd' for at få adgang til funktionerne i 'pandas'. Så starter vi vores kerne Python-kode. Vi har oprettet en DataFrame ved hjælp af 'pd.DataFrame()' metoden. DataFrame initialiseres af tre kolonner 'Navn', 'Grad' og 'Indkomst'. Alle DataFrames kolonner gemmer den samme længde af værdier.



Den første kolonne, 'Navn', har otte værdier, som er 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' og 'elsa'. Den anden kolonne, 'Degree', gemmer også otte kategoriske værdier, som er 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' og 'MS'. Den sidste kolonne 'Indkomst' har otte heltalsværdier '60000', '80000', '75000', '45000', '56000', '65000', '55000' og '70000'. Vi har oprettet et DataFrame-objekt 'staff' til at gemme outputtet ved påkaldelse af 'pd.DataFrame()'-funktionen. For at vise vores oprindelige DataFrame brugte vi 'print()'-metoden med DataFrames navn 'staff' som parameter i scriptets sidste linje.






For at se outputtet på terminalen skal du bruge knappen 'Kør fil' på 'Spyder'-værktøjet eller trykke på 'Shift+Enter'-tasterne. Det output, der vises på terminalen, viser en DataFrame med tre kolonner, der er blevet genereret.


Nu, vores DataFrame er konstrueret, skal vi anvende den nødvendige teknik til det. Panda-metoden 'DataFrame.replace()' vil blive brugt til at konvertere de kategoriske værdier af en specificeret kolonne til heltalsværdier, så maskinerne kan gøre dem læsbare.



Vi har givet navnet på DataFrame det særlige kolonnenavn, hvis værdier vi skal erstatte, som er 'personale['grad']'. Vi ønsker, at værdierne i kolonnen 'Grad', som har kategoriske værdier, skal erstattes af heltalsværdier. Derefter aktiveres '.replace()'-metoden. Vi har delt det op i to sæt; den første indeholder de to kategoriske værdier '['BS', 'MS']', som vi udtog fra kolonnen 'Degree'. Som du kan se, bruger kolonnen 'Grad' disse to værdier gentagne gange. Hvis vi havde en tredje værdi, må vi også have nævnt det. Det andet sæt har to int-værdier '[0, 1]', som træder i stedet for henholdsvis de første sæt-værdier. Den anden parameter, 'inplace', er indstillet til 'True', hvilket muliggør udskiftning af værdier. Hvis indstillet til 'False', vil det deaktivere erstatningen. Endelig har vi brugt 'print()'-metoden til at vise den opdaterede 'personale' DataFrame.


Den resulterende DataFrame har heltalsværdier i kolonnen 'Degree'. Værdien 'BS' erstattes af '0s', og 'MS' erstattes af '1s'.


Du kan endda verificere datatypen for hver kolonne ved at bruge egenskaben 'dataframe.dtype'. Dette vil give os datatyper af alle kolonnerne i den angivne DataFrame.


Her har vi vores DataFrames datatyper. Vi kan se datatypen for kolonnen 'Grad' er ændret til 'int64'.

Eksempel # 2: Brug af Pandas apply() metoden

Den anden metode, pandaer gav os, er funktionen 'DataFrame.apply()' til at konvertere kategoriske værdier til heltal. I det foregående eksempel har vi lært at konvertere en kategorisk kolonne til et heltal. Vi vil nu se, hvordan man konverterer alle kategoriske kolonner i DataFrame til en int.

Begyndende med den praktiske implementering skal vi importere det væsentlige bibliotek til denne metode, som er pandaer. Vi har brugt scriptet 'importer pandaer som pd' til at importere pandaer til vores Python-fil i 'Spyder'-værktøjet, som giver os adgang til panda-moduler ved hjælp af 'pd'. Vi brugte funktionen 'pd.DataFrame()' til at konstruere en DataFrame.

Denne DataFrame har fire kolonner 'gruppe', 'position', 'score' og 'assist'. Hver kolonne gemmer 9 værdier. 'Gruppe' kolonneværdierne er 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' og 'Y'. 'Position'-kolonnen har 9 værdier, som er 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' og 'B'. Kolonnen 'score' har heltalværdier som '4', '8', '7', '10', '9', '5', '7', '3' og '23'. Den sidste kolonne, 'assists', har værdierne '10', '2', '3', '9', '3', '7', '4', '2' og '9'.

Vi har oprettet et DataFrame-objekt 'prog' og tildelt det outputtet for at påkalde 'pd.DataFrame()'-metoden. Så den resulterende DataFrame-ramme genereret fra 'pd.DataFrame()' vil blive gemt i 'prog'. Nu kan vi få adgang til DataFrame ved at bruge dette objekt. For at se denne DataFrame har vi brugt 'print()'-metoden med DataFrame-objektet 'prog' som parameter.


Når det forrige Python-program er afviklet, vil en DataFrame med fire kolonner blive vist på terminalen.


For at konvertere flere kategoriske kolonner til heltal har vi fulgt denne teknik. Vi skal først vælge alle de kolonner, der indeholder objektdatatype, ved at bruge pandas 'DataFrame.select_dtypes().columns'-metoden. Når vi bruger det i vores script efter behov, vil det være 'prog.select_dtypes(['objekt']).kolonner'. Det vil vælge alle kolonner med datatypen 'objekt' i 'prog' DataFrame. Vi har oprettet en variabel 'concate_col' for at gemme output fra denne metode. Vi kan nu få adgang til 'objekt' datatypekolonnerne blot ved at bruge denne variabel 'concat_col'.

For nu at konvertere disse kolonner til heltal, har vi brugt pandaerne “DataFrame.apply()” med metoden “pd.factorize()”. Vi har brugt 'concat_col'-variablen med DataFrame-navnet, hvorefter '.apply()'-metoden påkaldes. Mellem parentesen af ​​'.apply'-metoden har vi kaldt 'pd.factorize()'-metoden, hvor 'x' kan være en hvilken som helst værdi fra 'prog' DataFrame med 'objekt' datatype. Således skrives hele denne kodelinje som 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. Faktoriseringsmetoden vil tage en værdi med en 'objekt' datatype og konverter den til 'int'. Det endelige output kan vises ved at kalde 'print()'-funktionen ved at overføre 'prog'-variablen som dens parameter.


I den opdaterede DataFrame kan vi observere, at værdierne af kolonnerne 'gruppe' og 'position' oprindeligt var kategoriske, dvs. objekter. Stadig i det opdaterede output DataFrame har begge kolonner heltalsværdier. I kolonnen 'gruppe' er 'X' erstattet af '0' og 'Y' med '1'. Mens 'position'-kolonnen 'A' erstattes af '0', 'C' med '1', 'D' med '2' og 'B' med '3'.


Lad os nu verificere de opdaterede datatyper.


Alle følgende kolonner har 'int64' datatype.

Konklusion

Vores guide kredser om at konvertere kategoriske værdier til numeriske værdier, så de kan gøres forståelige af maskinerne, da objektets datatype ikke kan behandles af dem. Vi har introduceret dig til de to tilgange, som 'pandas'-biblioteket indeholder for at få den nødvendige datatype. Med den praktiske implementering af eksempelkoder kørt på 'Spyder'-værktøjet delte vi også resultatet af hvert eksempel. Til sidst uddybede vi hvert trin for at opnå det ønskede resultat.