Pandaer Konverter kategoriske verdier til Int-verdier

Pandaer Konverter Kategoriske Verdier Til Int Verdier



Datasettene for utførelse av maskinlæring inkluderer både numeriske og kategoriske variabler. Kategoriske variabler er data av strengtype som mennesker lett kan forstå. Maskiner kan derimot ikke forstå kategoriske input direkte. Følgelig må kategorisk innhold transformeres til numeriske verdier som maskiner kan tolke.

Metoder for konvertering av kategori til Int

Teknikkene som er tilgjengelige i 'pandas' for å konvertere de kategoriske til int-verdiene til en DataFrame er gitt her:

    • DataFrame.replace()-metoden
    • DataFrame.apply(factorize())-metoden

Vi vil bruke disse metodene i denne artikkelen og forklare i detalj hvordan du kan bruke begge metodene i 'pandaer'.







Eksempel # 1: Bruke Pandas Replace()-metoden

Kategoriske verdier i en DataFrame kan konverteres til int ved å bruke pandas 'DataFrame.replace()'-metoden. Vi vil her lære å bruke denne metoden.



Vi brukte 'Spyder'-verktøyet for å utføre denne teknikken optimalt i Python. For å begynne å skrive skriptet, åpne en ny Python-fil i 'Spyder'-verktøyet. Det viktigste kravet for å skrive skriptet er å importere passende biblioteker. Siden vi må implementere en 'pandaer'-metode, vil vi ha 'importer pandaer som pd' for å få tilgang til funksjonene til 'pandaer'. Deretter starter vi vår kjerne Python-kode. Vi har laget en DataFrame ved å bruke 'pd.DataFrame()'-metoden. DataFrame initialiseres av tre kolonner 'Navn', 'Grad' og 'Inntekt'. Alle kolonnene til DataFrame lagrer samme lengde på verdier.



Den første kolonnen, 'Navn', har åtte verdier som er 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' og 'elsa'. Den andre kolonnen, 'Degree', lagrer også åtte kategoriske verdier, som er 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' og 'MS'. Den siste kolonnen 'Inntekt' har åtte heltallsverdier '60000', '80000', '75000', '45000', '56000', '65000', '55000' og '70000'. Vi har laget et DataFrame-objekt 'staff' for å lagre utdataene fra påkalling av 'pd.DataFrame()'-funksjonen. For å vise vår første DataFrame brukte vi 'print()'-metoden med DataFrames navn 'staff' som parameter i skriptets siste linje.






For å se utdataene på terminalen, bruk 'Kjør fil'-knappen på 'Spyder'-verktøyet eller trykk på 'Shift+Enter'-tastene. Utdataene som vises på terminalen viser en DataFrame med tre kolonner som har blitt generert.


Nå, vår DataFrame er konstruert, må vi bruke den nødvendige teknikken på den. Panda-metoden “DataFrame.replace()” vil bli brukt til å konvertere de kategoriske verdiene til en spesifisert kolonne til heltallsverdier slik at maskinene kan gjøre dem lesbare.



Vi har gitt navnet på DataFrame med det spesielle kolonnenavnet hvis verdier vi må erstatte, som er 'staff['grad']'. Vi vil at verdiene i kolonnen 'Grad', som har kategoriske verdier, skal erstattes med heltallsverdier. Deretter startes '.replace()'-metoden. Vi har delt den inn i to sett; den første inneholder de to kategoriske verdiene '['BS', 'MS']' som vi hentet ut fra 'Degree'-kolonnen. Som du kan se, bruker 'Degree'-kolonnen disse to verdiene gjentatte ganger. Hvis vi hadde en tredje verdi, må vi ha nevnt det også. Det andre settet har to int-verdier '[0, 1]', som vil erstatte henholdsvis de første setteverdiene. Den andre parameteren, 'inplace', er satt til 'True', som muliggjør erstatning av verdier. Hvis satt til 'False', vil det deaktivere erstatningen. Til slutt har vi brukt 'print()'-metoden for å vise den oppdaterte 'staff' DataFrame.


Den resulterende DataFrame har heltallsverdier i 'Degree'-kolonnen. Verdien 'BS' erstattes med '0s', og 'MS' erstattes med '1s'.


Du kan til og med verifisere datatypen for hver kolonne ved å bruke egenskapen 'dataframe.dtype'. Dette vil gi oss datatyper for alle kolonnene i den angitte DataFrame.


Her har vi datatypene til DataFrame. Vi kan se datatypen til 'Degree'-kolonnen er endret til 'int64'.

Eksempel # 2: Bruk av Pandas application()-metoden

Den andre metoden pandaene ga oss er 'DataFrame.apply()'-funksjonen for å konvertere kategoriske verdier til heltall. I forrige eksempel har vi lært å konvertere en kategorisk kolonne til et heltall. Vi skal nå se hvordan du konverterer alle kategoriske kolonner i DataFrame til en int.

Fra og med den praktiske implementeringen, må vi importere det essensielle biblioteket for denne metoden, som er pandaer. Vi har brukt skriptet 'importer pandaer som pd' for å importere pandaer til Python-filen vår i 'Spyder'-verktøyet, som vil tillate oss å få tilgang til pandamoduler ved å bruke 'pd'. Vi brukte funksjonen 'pd.DataFrame()' for å konstruere en DataFrame.

Denne DataFrame har fire kolonner «gruppe», «posisjon», «score» og «assister». Hver kolonne lagrer 9 verdier. 'Gruppe' kolonneverdiene er 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' og 'Y'. 'Posisjon'-kolonnen har 9 verdier som er 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' og 'B'. Kolonnen 'poengsum' har heltallsverdier som '4', '8', '7', '10', '9', '5', '7', '3' og '23'. Den siste kolonnen, 'assisterer', har verdiene '10', '2', '3', '9', '3', '7', '4', '2' og '9'.

Vi har laget et DataFrame-objekt 'prog' og tildelt det utdata for å påkalle 'pd.DataFrame()'-metoden. Så den resulterende DataFrame-rammen generert fra 'pd.DataFrame()' vil bli lagret i 'prog'. Nå kan vi få tilgang til DataFrame ved å bruke dette objektet. For å se denne DataFrame har vi brukt 'print()'-metoden med DataFrame-objektet 'prog' som parameter.


Når det forrige Python-programmet kjøres, vil en DataFrame med fire kolonner vises på terminalen.


For å konvertere flere kategoriske kolonner til heltall, har vi fulgt denne teknikken. Vi må først velge alle kolonnene som inneholder objektdatatype ved å bruke pandas 'DataFrame.select_dtypes().columns'-metoden. Når vi bruker det i skriptet vårt etter behov, vil det være 'prog.select_dtypes(['object']).columns'. Den vil velge alle kolonnene som har datatypen 'objekt' i 'prog' DataFrame. Vi har laget en variabel 'concate_col' for å lagre utdataene fra denne metoden. Vi kan nå få tilgang til 'objekt'-datatypekolonnene ganske enkelt ved å bruke denne variabelen 'concat_col'.

Nå, for å konvertere disse kolonnene til heltall, har vi brukt pandaene “DataFrame.apply()” med “pd.factorize()”-metoden. Vi har brukt «concat_col»-variabelen med DataFrame-navnet og deretter «.apply()»-metoden påkalles. Mellom parentesen til “.apply”-metoden har vi kalt “pd.factorize()”-metoden der “x” kan være en hvilken som helst verdi fra “prog” DataFrame med “object” datatype. Dermed er hele denne kodelinjen skrevet som 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. Faktoriseringsmetoden vil ta en verdi med en 'objekt' datatype og konverter den til 'int'. Den endelige utgangen kan vises ved å kalle 'print()'-funksjonen ved å sende 'prog'-variabelen som parameter.


I den oppdaterte DataFrame kan vi observere at verdiene til kolonnene 'gruppe' og 'posisjon' opprinnelig var kategoriske, dvs. objekt. Fortsatt i den oppdaterte utdata-DataFrame, har begge kolonnene heltallsverdier. I «gruppe»-kolonnen er «X» erstattet med «0» og «Y» med «1». Mens «posisjon»-kolonnen «A» erstattes med «0», «C» med «1», «D» med «2» og «B» med «3».


La oss nå verifisere de oppdaterte datatypene.


Alle følgende kolonner har 'int64' datatype.

Konklusjon

Vår guide dreier seg om å konvertere kategoriske verdier til numeriske verdier slik at de kan gjøres forståelige av maskinene siden objektdatatypen ikke kan behandles av dem. Vi har introdusert deg for de to tilnærmingene som er omtalt av 'pandas'-biblioteket for å få den nødvendige datatypen. Med den praktiske implementeringen av eksempelkoder som kjøres på «Spyder»-verktøyet, delte vi resultatet av hvert eksempel. Til slutt utdypet vi hvert trinn for å oppnå ønsket resultat.