Panda's zetten categorische waarden om in int-waarden

Panda S Zetten Categorische Waarden Om In Int Waarden



De datasets voor de uitvoering van machine learning bevatten zowel numerieke als categorische variabelen. Categorische variabelen zijn gegevens van het type string die mensen gemakkelijk kunnen begrijpen. Machines daarentegen kunnen categorische invoer niet rechtstreeks begrijpen. Bijgevolg moet categorische inhoud worden omgezet in numerieke waarden die machines kunnen interpreteren.

Methoden voor het converteren van categorisch naar Int

De technieken die beschikbaar zijn in 'panda's' voor het converteren van de categorische naar int-waarden van een DataFrame worden hier gegeven:

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

We zullen deze methoden in dit artikel gebruiken en in detail uitleggen hoe u beide methoden in 'panda's' kunt gebruiken.







Voorbeeld # 1: De methode Pandas Replace() gebruiken

Categorische waarden in een DataFrame kunnen worden geconverteerd naar int met behulp van de panda's 'DataFrame.replace()'-methode. We zullen hier leren om deze methode te gebruiken.



We gebruikten de tool “Spyder” om deze techniek optimaal uit te voeren in Python. Om te beginnen met het schrijven van het script, opent u een nieuw Python-bestand in de 'Spyder'-tool. De belangrijkste vereiste voor het schrijven van het script is het importeren van de juiste bibliotheken. Omdat we een 'panda's'-methode moeten implementeren, hebben we de 'panda's importeren als pd' om toegang te krijgen tot de functies van 'panda's'. Dan beginnen we met onze kern Python-code. We hebben een DataFrame gemaakt met behulp van de methode 'pd.DataFrame()'. Het DataFrame wordt geïnitialiseerd door drie kolommen 'Naam', 'Graden' en 'Inkomen'. Alle kolommen van het DataFrame slaan waarden van dezelfde lengte op.



De eerste kolom, 'Naam', heeft acht waarden die 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' en 'elsa' zijn. De tweede kolom, 'Grade', bevat ook acht categorische waarden, namelijk 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' en 'MS'. De laatste kolom 'Inkomen' heeft acht gehele waarden '60000', '80000', '75000', '45000', '56000', '65000', '55000' en '70000'. We hebben een DataFrame-object 'staff' gemaakt om de uitvoer van het aanroepen van de functie 'pd.DataFrame()' op te slaan. Om ons eerste DataFrame weer te geven, hebben we de methode 'print()' gebruikt met de naam 'staff' van DataFrame als parameter in de laatste regel van het script.






Om de uitvoer op de terminal te bekijken, gebruikt u de knop 'Bestand uitvoeren' op de tool 'Spyder' of drukt u op de toetsen 'Shift+Enter'. De uitvoer die op de terminal wordt weergegeven, toont een DataFrame met drie kolommen die met succes zijn gegenereerd.


Nu ons DataFrame is gebouwd, moeten we er de benodigde techniek op toepassen. De panda 'DataFrame.replace()'-methode zal worden gebruikt om de categorische waarden van een opgegeven kolom om te zetten in gehele waarden, zodat de machines ze leesbaar kunnen maken.



We hebben de naam van het DataFrame voorzien van de specifieke kolomnaam waarvan we de waarden moeten vervangen, namelijk 'staff['graad']'. We willen dat de waarden van de kolom 'Grade', die categorische waarden heeft, worden vervangen door gehele waarden. Vervolgens wordt de methode '.replace()' aangeroepen. We hebben het in twee sets doorgegeven; de eerste bevat de twee categorische waarden '['BS', 'MS']' die we hebben geëxtraheerd uit de kolom 'Grade'. Zoals u kunt zien, gebruikt de kolom 'Grade' deze twee waarden herhaaldelijk. Als we een derde waarde hadden, hadden we die ook moeten vermelden. De tweede set heeft twee int-waarden '[0, 1]', die respectievelijk de plaats innemen van de eerste set-waarden. De andere parameter, 'inplace', is ingesteld op 'True', waardoor de waarden kunnen worden vervangen. Indien ingesteld op 'Fals', wordt de vervanging uitgeschakeld. Ten slotte hebben we de methode 'print()' gebruikt om het bijgewerkte 'staff' DataFrame weer te geven.


Het resulterende DataFrame heeft gehele waarden in de kolom 'Graden'. De waarde “BS” wordt vervangen door “0s” en de “MS” wordt vervangen door de “1s”.


U kunt zelfs het gegevenstype voor elke kolom verifiëren door de eigenschap 'dataframe.dtype' te gebruiken. Dit levert ons datatypes op van alle kolommen in het opgegeven DataFrame.


Hier hebben we de datatypes van ons DataFrame. We kunnen zien dat het datatype van de kolom 'Grade' is gewijzigd in 'int64'.

Voorbeeld #2: De Pandas apply() methode gebruiken

De andere methode die panda's ons hebben gegeven, is de functie 'DataFrame.apply()' voor het converteren van categorische waarden naar gehele getallen. In het vorige voorbeeld hebben we geleerd om één categorische kolom om te zetten in een geheel getal. We zullen nu zien hoe we alle categorische kolommen in het DataFrame kunnen converteren naar een int.

Te beginnen met de praktische implementatie, moeten we de essentiële bibliotheek voor deze methode importeren, namelijk panda's. We hebben het script 'panda's importeren als pd' gebruikt om panda's te importeren in ons Python-bestand in de 'Spyder'-tool, waarmee we toegang krijgen tot panda's-modules met behulp van de 'pd'. We hebben de functie 'pd.DataFrame()' gebruikt om een ​​DataFrame te construeren.

Dit DataFrame heeft vier kolommen 'groep', 'positie', 'scores' en 'assisten'. Elke kolom slaat 9 waarden op. De kolomwaarden 'groep' zijn 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' en 'Y'. De kolom 'positie' heeft 9 waarden die 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' en 'B' zijn. De kolom 'scores' heeft gehele waarden als '4', '8', '7', '10', '9', '5', '7', '3' en '23'. De laatste kolom, 'assist', heeft de waarden '10', '2', '3', '9', '3', '7', '4', '2' en '9'.

We hebben een DataFrame-object 'prog' gemaakt en hieraan de uitvoer toegewezen van het aanroepen van de 'pd.DataFrame()'-methode. Het resulterende DataFrame-frame dat wordt gegenereerd uit het 'pd.DataFrame()' wordt dus opgeslagen in 'prog'. Nu hebben we toegang tot het DataFrame door dit object te gebruiken. Om dit DataFrame te bekijken, hebben we de methode “print()” gebruikt met het DataFrame-object “prog” als parameter.


Wanneer het vorige Python-programma wordt uitgevoerd, wordt een DataFrame met vier kolommen op de terminal weergegeven.


Om meerdere categorische kolommen om te zetten in gehele getallen, hebben we deze techniek gevolgd. We moeten eerst alle kolommen selecteren die het objectgegevenstype bevatten door de panda's 'DataFrame.select_dtypes().columns' -methode te gebruiken. Wanneer we het desgewenst in ons script gebruiken, is het 'prog.select_dtypes(['object']).columns'. Het selecteert alle kolommen met het datatype 'object' in het 'prog' DataFrame. We hebben een variabele 'concate_col' gemaakt om de uitvoer van deze methode op te slaan. We hebben nu toegang tot de kolommen van het gegevenstype 'object' door eenvoudigweg deze variabele 'concat_col' te gebruiken.

Om deze kolommen nu naar gehele getallen te converteren, hebben we de panda's 'DataFrame.apply()' gebruikt met de 'pd.factorize()'-methode. We hebben de variabele 'concat_col' met de DataFrame-naam gebruikt en vervolgens wordt de methode '.apply()' aangeroepen. Tussen de haakjes van de '.apply' -methode hebben we de 'pd.factorize()' -methode genoemd, waarbij 'x' elke waarde kan zijn van het 'prog' DataFrame met het gegevenstype 'object'. Deze hele coderegel wordt dus geschreven als 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. De factorize-methode zal een waarde aannemen met een 'object' datatype en converteer het naar 'int'. De uiteindelijke uitvoer kan worden weergegeven door de functie 'print()' aan te roepen door de variabele 'prog' als parameter door te geven.


In het bijgewerkte DataFrame kunnen we zien dat de waarden van de kolommen 'groep' en 'positie' aanvankelijk categorisch waren, d.w.z. object. Nog steeds in het bijgewerkte uitvoer DataFrame hebben beide kolommen gehele waarden. In de kolom 'groep' wordt 'X' vervangen door '0' en 'Y' door '1'. Terwijl de kolom 'positie' 'A' wordt vervangen door '0', 'C' door '1', 'D' door '2' en 'B' door '3'.


Laten we nu de bijgewerkte gegevenstypen verifiëren.


Alle volgende kolommen hebben het gegevenstype 'int64'.

Conclusie

Onze gids draait om het omzetten van categorische waarden in numerieke waarden, zodat ze begrijpelijk kunnen worden gemaakt door de machines, aangezien het objectgegevenstype niet door hen kan worden verwerkt. We hebben u kennis laten maken met de twee benaderingen van de 'panda's' -bibliotheek om het vereiste gegevenstype te krijgen. Met de praktische implementatie van voorbeeldcodes die op de 'Spyder'-tool worden uitgevoerd, hebben we ook de uitkomst van elk voorbeeld gedeeld. Als laatste hebben we elke stap uitgewerkt om tot het gewenste resultaat te komen.