Pandas konvertieren kategoriale Werte in Int-Werte

Pandas Konvertieren Kategoriale Werte In Int Werte



Die Datensätze für die Ausführung des maschinellen Lernens umfassen sowohl numerische als auch kategoriale Variablen. Kategoriale Variablen sind Zeichenfolgendaten, die Menschen leicht verstehen können. Maschinen hingegen können kategoriale Eingaben nicht direkt verstehen. Folglich müssen kategoriale Inhalte in numerische Werte transformiert werden, die von Maschinen interpretiert werden können.

Methoden zum Konvertieren von kategorial nach int

Die in „Pandas“ verfügbaren Techniken zum Konvertieren der kategorialen in int-Werte eines DataFrame werden hier bereitgestellt:

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

Wir werden diese Methoden in diesem Artikel anwenden und im Detail erklären, wie man beide Methoden in „Pandas“ verwendet.







Beispiel Nr. 1: Verwenden der Pandas Replace()-Methode

Kategoriale Werte in einem DataFrame können mithilfe der pandas-Methode „DataFrame.replace()“ in int konvertiert werden. Wir werden hier lernen, diese Methode anzuwenden.



Wir haben das Tool „Spyder“ verwendet, um diese Technik optimal in Python auszuführen. Um mit dem Schreiben des Skripts zu beginnen, öffnen Sie eine neue Python-Datei im „Spyder“-Tool. Die wichtigste Voraussetzung zum Schreiben des Skripts ist das Importieren geeigneter Bibliotheken. Da wir eine „Pandas“-Methode implementieren müssen, haben wir „Pandas als pd importieren“, um auf die Funktionen von „Pandas“ zuzugreifen. Dann starten wir unseren Kern-Python-Code. Wir haben einen DataFrame mit der Methode „pd.DataFrame()“ erstellt. Der DataFrame wird durch drei Spalten „Name“, „Abschluss“ und „Einkommen“ initialisiert. Alle Spalten des DataFrames speichern die gleiche Länge von Werten.



Die erste Spalte „Name“ hat acht Werte, nämlich „bush“, „albert“, „harry“, „peter“, „emma“, „newton“, „smith“ und „elsa“. Die zweite Spalte „Grad“ speichert auch acht kategoriale Werte, nämlich „BS“, „MS“, „MS“, „BS“, „BS“, „BS“, „MS“ und „MS“. Die letzte Spalte „Einkommen“ hat acht ganzzahlige Werte „60000“, „80000“, „75000“, „45000“, „56000“, „65000“, „55000“ und „70000“. Wir haben ein DataFrame-Objekt „staff“ erstellt, um die Ausgabe des Aufrufs der Funktion „pd.DataFrame()“ zu speichern. Um unseren anfänglichen DataFrame anzuzeigen, haben wir die Methode „print()“ mit dem Namen „staff“ des DataFrame als Parameter in der letzten Zeile des Skripts verwendet.






Um die Ausgabe auf dem Terminal anzuzeigen, verwenden Sie die Schaltfläche „Datei ausführen“ im Tool „Spyder“ oder drücken Sie die Tasten „Umschalt+Eingabe“. Die auf dem Terminal angezeigte Ausgabe zeigt einen DataFrame mit drei Spalten, die erfolgreich generiert wurden.


Jetzt, da unser DataFrame erstellt ist, müssen wir die erforderliche Technik darauf anwenden. Die Pandas-Methode „DataFrame.replace()“ wird verwendet, um die kategorialen Werte einer bestimmten Spalte in ganzzahlige Werte umzuwandeln, damit die Maschinen sie lesbar machen können.



Wir haben den Namen des DataFrames mit dem jeweiligen Spaltennamen versehen, dessen Werte wir ersetzen müssen, nämlich „staff[‚graduate‘]“. Wir möchten, dass die Werte der Spalte „Grad“, die kategoriale Werte enthält, durch ganzzahlige Werte ersetzt werden. Dann wird die Methode „.replace()“ aufgerufen. Wir haben es in zwei Sätze geteilt; der erste enthält die beiden kategorialen Werte „[‚BS‘, ‚MS‘]“, die wir aus der Spalte „Grad“ extrahiert haben. Wie Sie sehen können, verwendet die Spalte „Grad“ diese beiden Werte wiederholt. Wenn wir einen dritten Wert hatten, müssen wir das auch erwähnt haben. Der zweite Satz hat zwei Int-Werte „[0, 1]“, die jeweils den Platz der Werte des ersten Satzes einnehmen. Der andere Parameter „inplace“ wird auf „True“ gesetzt, was das Ersetzen von Werten ermöglicht. Wenn auf „False“ gesetzt, wird die Ersetzung deaktiviert. Schließlich haben wir die „print()“-Methode verwendet, um den aktualisierten „staff“-DataFrame anzuzeigen.


Der resultierende DataFrame hat ganzzahlige Werte in der Spalte „Grad“. Der Wert „BS“ wird durch „0“ ersetzt und „MS“ wird durch die „1“ ersetzt.


Sie können sogar den Datentyp für jede Spalte überprüfen, indem Sie die Eigenschaft „dataframe.dtype“ verwenden. Dadurch erhalten wir Datentypen aller Spalten im angegebenen DataFrame.


Hier haben wir die Datentypen unseres DataFrames erhalten. Wir können sehen, dass der Datentyp der Spalte „Grad“ in „int64“ geändert wurde.

Beispiel Nr. 2: Verwenden der Methode apply() von Pandas

Die andere Methode, die Pandas uns zur Verfügung gestellt hat, ist die Funktion „DataFrame.apply()“ zum Konvertieren von kategorialen Werten in Ganzzahlen. Im vorherigen Beispiel haben wir gelernt, eine kategoriale Spalte in eine ganze Zahl umzuwandeln. Wir werden nun sehen, wie alle kategorialen Spalten im DataFrame in ein int konvertiert werden.

Beginnend mit der praktischen Implementierung müssen wir die wesentliche Bibliothek für diese Methode importieren, nämlich Pandas. Wir haben das Skript „import pandas as pd“ verwendet, um Pandas in unsere Python-Datei im „Spyder“-Tool zu importieren, wodurch wir mit „pd“ auf Pandas-Module zugreifen können. Wir haben die Funktion „pd.DataFrame()“ verwendet, um einen DataFrame zu erstellen.

Dieser DataFrame hat vier Spalten „Gruppe“, „Position“, „Ergebnisse“ und „Assists“. Jede Spalte speichert 9 Werte. Die Werte der Spalte „Gruppe“ sind „X“, „X“, „Y“, „X“, „Y“, „Y“, „Y“, „X“ und „Y“. Die Spalte „Position“ hat 9 Werte, nämlich „A“, „C“, „D“, „A“, „C“, „B“, „B“, „D“ und „B“. Die Spalte „Ergebnisse“ enthält ganzzahlige Werte wie „4“, „8“, „7“, „10“, „9“, „5“, „7“, „3“ und „23“. Die letzte Spalte „Assists“ hat die Werte „10“, „2“, „3“, „9“, „3“, „7“, „4“, „2“ und „9“.

Wir haben ein DataFrame-Objekt „prog“ erstellt und ihm die Ausgabe des Aufrufs der Methode „pd.DataFrame()“ zugewiesen. Der aus „pd.DataFrame()“ generierte resultierende DataFrame-Frame wird also in „prog“ gespeichert. Jetzt können wir mit diesem Objekt auf den DataFrame zugreifen. Um diesen DataFrame anzuzeigen, haben wir die Methode „print()“ mit dem DataFrame-Objekt „prog“ als Parameter verwendet.


Wenn das vorherige Python-Programm ausgeführt wird, wird ein DataFrame mit vier Spalten auf dem Terminal angezeigt.


Um mehrere kategoriale Spalten in Ganzzahlen umzuwandeln, haben wir diese Technik befolgt. Wir müssen zuerst alle Spalten auswählen, die den Objektdatentyp enthalten, indem wir die Pandas-Methode „DataFrame.select_dtypes().columns“ verwenden. Wenn wir es wie erforderlich in unserem Skript verwenden, lautet es „prog.select_dtypes([‘object’]).columns“. Es werden alle Spalten mit dem Datentyp „object“ im „prog“ DataFrame ausgewählt. Wir haben eine Variable „concate_col“ erstellt, um die Ausgabe dieser Methode zu speichern. Wir können jetzt auf die Spalten des Datentyps „object“ zugreifen, indem wir einfach diese Variable „concat_col“ verwenden.

Um diese Spalten nun in Ganzzahlen umzuwandeln, haben wir die Pandas „DataFrame.apply()“ mit der Methode „pd.factorize()“ verwendet. Wir haben die Variable „concat_col“ mit dem DataFrame-Namen verwendet, dann wird die Methode „.apply()“ aufgerufen. Zwischen den Klammern der Methode „.apply“ haben wir die Methode „pd.factorize()“ aufgerufen, wobei „x“ ein beliebiger Wert aus dem DataFrame „prog“ mit dem Datentyp „object“ sein kann. Daher wird diese ganze Codezeile als „prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])“ geschrieben. Die Faktorisierungsmethode nimmt einen Wert mit an einen „object“-Datentyp und wandeln ihn in „int“ um. Die endgültige Ausgabe kann angezeigt werden, indem die Funktion „print()“ aufgerufen wird, indem die Variable „prog“ als Parameter übergeben wird.


Im aktualisierten DataFrame können wir beobachten, dass die Werte der Spalten „Gruppe“ und „Position“ anfänglich kategorial waren, d. h. Objekt. Noch im aktualisierten Ausgabe-DataFrame haben beide Spalten ganzzahlige Werte. In der Spalte „Gruppe“ wird „X“ durch „0“ und „Y“ durch „1“ ersetzt. Wohingegen die Spalte „Position“ „A“ durch „0“, „C“ durch „1“, „D“ durch „2“ und „B“ durch „3“ ersetzt wird.


Lassen Sie uns nun die aktualisierten Datentypen überprüfen.


Alle folgenden Spalten haben den Datentyp „int64“.

Fazit

Unser Leitfaden dreht sich darum, kategoriale Werte in numerische Werte umzuwandeln, damit sie von den Maschinen verständlich gemacht werden können, da der Objektdatentyp von ihnen nicht verarbeitet werden kann. Wir haben Ihnen die beiden Ansätze vorgestellt, die die Bibliothek „pandas“ bietet, um den erforderlichen Datentyp zu erhalten. Außerdem haben wir bei der praktischen Implementierung von Beispielcodes, die auf dem „Spyder“-Tool ausgeführt werden, das Ergebnis jedes Beispiels geteilt. Zuletzt haben wir jeden Schritt ausgearbeitet, um das gewünschte Ergebnis zu erzielen.