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 Daten vom Typ String-Typ, die Menschen leicht verstehen. Maschinen dagegen können kategoriale Eingaben nicht direkt verstehen. Folglich muss der kategoriale Inhalt in numerische Werte umgewandelt werden, die Maschinen interpretieren können.

In diesem Tutorial diskutieren wir drei verschiedene Möglichkeiten, um kategoriale Werte in numerische Werte in Pandas DataFrame umzuwandeln

Ansatz 1: Verwenden Sie Ersatz ()

In Python wird Ersatz () verwendet, um die angegebenen Werte zu ändern oder in neue Werte umzuwandeln, die wir angegeben haben. Um mehrere Werte zu ersetzen, müssen wir zwei Listen als Parameter übergeben. Die erste Liste speichert die zu ersetzenden tatsächlichen Werte, und die zweite Liste speichert die Werte, die die Werte in der ersten Liste ersetzen.

Syntax

DataFrame_Object ['Spalte'] = DataFrame_Object ['Spalte'].Ersetzen ([Wert 1, Wert2,…], [Wert1, Wert2,…])

Hier ist die Spalte der Name der Spalte, in der wir die Werte ersetzen.

Betrachten Sie den Datenrahmen

Lassen Sie uns den benannten Pandas -Datenfrequer erstellen Sets die 4 Spalten mit 10 Zeilen halten.

# Importieren Sie den Datenrahmen aus dem PANDAS -Modul
Aus Pandas importieren Sie DataFrame
# Erstellen Sie einen Datenrahmen mit 10 Zeilen, die 4 Spalten enthalten
sets = dataFrame ('Code': [1,2,3,4,5,6,7,8,9,0],
"Priorität": ["hoch", "niedrig", "niedrig", "hoch", "mittel", "hoch", "mittel", "niedrig", "hoch", "mittel"],
'Geschlecht': ['m', 'm', 'm', 'f', 'm', 'm', 'f', 'f', 'm', 'f'],
'Alter': [12,23,21,34,21,23,21,34,56,32])
# Tatsächlicher Datenrahmen
drucken (Sets)
# Datentypen jeder Spalte anzeigen
Druck (Sets.DTYPES)

Ausgang

Prioritätsgeschlechtsalter Alter
0 1 High M 12
1 2 niedrig m 23
2 3 niedrig m 21
3 4 High f 34
4 5 Medium M 21
5 6 High M 23
6 7 Medium F 21
7 8 niedrig f 34
8 9 High M 56
9 0 Medium F 32
Code int64
Prioritätsobjekt
Geschlechtsobjekt
Alter int64
DTYPE: Objekt

Wir sehen zwei Spalten mit dem kategorialen Typ (Objekt), ich.e., Priorität und Geschlecht.

Wir müssen diese also in numerische/ganzzahlige Werte konvertieren.

Beispiel 1

Ersetzen wir Werte in der Geschlechtsspalte mit Ersatz () Methode.

# Importieren Sie den Datenrahmen aus dem PANDAS -Modul
Aus Pandas importieren Sie DataFrame
# Erstellen Sie einen Datenrahmen mit 10 Zeilen, die 4 Spalten enthalten
sets = dataFrame ('Code': [1,2,3,4,5,6,7,8,9,0],
"Priorität": ["hoch", "niedrig", "niedrig", "hoch", "mittel", "hoch", "mittel", "niedrig", "hoch", "mittel"],
'Geschlecht': ['m', 'm', 'm', 'f', 'm', 'm', 'f', 'f', 'm', 'f'],
'Alter': [12,23,21,34,21,23,21,34,56,32])
# Kategoriale Werte in numerische Werte in der Geschlechtsspalte konvertieren
setzt ['Geschlecht'] = setzt ['Geschlecht'].ersetzen (['m', 'f'], [1, 2])
drucken (Sets)

Ausgang

Prioritätsgeschlechtsalter Alter
0 1 hoch 1 12
1 2 niedrig 1 23
2 3 niedrig 1 21
3 4 hoch 2 34
4 5 Medium 1 21
5 6 High 1 23
6 7 Medium 2 21
7 8 niedrig 2 34
8 9 High 1 56
9 0 Medium 2 32

Erläuterung

Wir ersetzen 'M' durch 1 und 'f' durch 2 und speichern die Spaltenwerte erneut in der Spalte Geschlecht. Wir können sehen, dass die Geschlechtsspalte Werte innerhalb von 1 oder 2 enthält.

Beispiel 2

Ersetzen wir Werte in der Prioritätsspalte mit Ersatz () -Methode.

# Importieren Sie den Datenrahmen aus dem PANDAS -Modul
Aus Pandas importieren Sie DataFrame
# Erstellen Sie einen Datenrahmen mit 10 Zeilen, die 4 Spalten enthalten
sets = dataFrame ('Code': [1,2,3,4,5,6,7,8,9,0],
"Priorität": ["hoch", "niedrig", "niedrig", "hoch", "mittel", "hoch", "mittel", "niedrig", "hoch", "mittel"],
'Geschlecht': ['m', 'm', 'm', 'f', 'm', 'm', 'f', 'f', 'm', 'f'],
'Alter': [12,23,21,34,21,23,21,34,56,32])
# Konvertieren Sie kategoriale Werte in die Prioritätsspalte in numerische Werte
setzt ['Priority'] = setzt ['Priorität'].ersetzen (['Low', 'Medium', 'High'], [0,1,2])
drucken (Sets)

Ausgang

Prioritätsgeschlechtsalter Alter
0 1 2 m 12
1 2 0 m 23
2 3 0 m 21
3 4 2 F 34
4 5 1 m 21
5 6 2 m 23
6 7 1 F 21
7 8 0 F 34
8 9 2 m 56
9 0 1 F 32

Erläuterung

Es gibt drei Kategorien in der Prioritätsspalte. Sie sind "niedrig", "hoch" und "mittel". Wir ersetzen 'niedrig' durch 0, 'Medium' mit 1 und 'hoch' durch 2 und speichern die Spaltenwerte erneut in der Prioritätsspalte.

Ansatz 2: Verwenden von Anwendung (faktorisieren ())

Die andere Methode, die Pandas uns bereitgestellt hat, ist der Datenrahmen.anwenden () 'Funktion zum Konvertieren aller kategorialen Werte in Ganzzahlen.

Um mehrere kategoriale Spalten in Ganzzahlen umzuwandeln, sind wir dieser Technik verfolgt:

  1. Wir müssen alle Spalten auswählen, die einen Objektdatenatyp enthalten, indem wir den Datenrahmen der Pandas verwenden.select_dtypes ().Methode der Spalten.
  2. Um diese Spalten in Ganzzahlen umzuwandeln, müssen wir den Datenrahmen der Pandas verwenden.anwenden () 'mit den Pandas.faktorisieren Sie () 'Methode.

Die Faktorisierungsmethode nimmt einen Wert mit einem "Objekt" -Datentyp und konvertiert ihn in "int".

Wenn Sie nur die kategorialen Werte einer bestimmten Spalte in Ganzzahlen konvertieren möchten, wird angewendet () nicht verwendet.

Syntax für eine Spalte

DataFrame_Object ['Spalte'] = Pandas.Faktorisieren Sie (DataFrame_Object ['Spalte']) [0]

Syntax für alle Spalten

DataFrame_Object [DataFrame_Object.select_dtypes (['Objekt']).Spalten] = DataFrame_Object [DataFrame_Object.select_dtypes (['Objekt']).Säulen].Bewerben Sie (Lambda X: Pandas.Faktorisieren Sie (x) [0])

Notiz: Der Austausch beginnt von 0.

Beispiel 1: Ersetzen Sie die kategorialen Werte der einzelnen Spalten

Ersetzen wir Werte in der Geschlechtsspalte mithilfe von Faktorize () -Methode.

# Importieren Sie den Datenrahmen aus dem PANDAS -Modul
Aus Pandas importieren Sie DataFrame
Pandas importieren
# Erstellen Sie einen Datenrahmen mit 10 Zeilen, die 4 Spalten enthalten
sets = dataFrame ('Code': [1,2,3,4,5,6,7,8,9,0],
"Priorität": ["hoch", "niedrig", "niedrig", "hoch", "mittel", "hoch", "mittel", "niedrig", "hoch", "mittel"],
'Geschlecht': ['m', 'm', 'm', 'f', 'm', 'm', 'f', 'f', 'm', 'f'],
'Alter': [12,23,21,34,21,23,21,34,56,32])
# Konvertieren Sie kategoriale Werte in Ganzzahlen mithilfe der in der Geschlechtsspalte vorhandenen Faktorize -Methode ()
setzt ['Geschlecht'] = Pandas.Faktorisieren Sie (setzt ['Geschlecht']) [0]
# Tatsächlicher Datenrahmen
drucken (Sets)

Ausgang

Prioritätsgeschlechtsalter Alter
0 1 hoch 0 12
1 2 niedrig 0 23
2 3 niedrig 0 21
3 4 High 1 34
4 5 Medium 0 21
5 6 High 0 23
6 7 Medium 1 21
7 8 niedrig 1 34
8 9 High 0 56
9 0 Medium 1 32

Erläuterung

Wir ersetzen 'M' durch 0 und 'f' durch 1 und speichern die Spaltenwerte erneut in der Spalte Geschlecht. Jetzt können wir sehen, dass die geschlechtsspalte Spalte Werte innerhalb von 0 oder 1 enthält.

Beispiel 2: Ersetzen Sie alle kategorialen Spaltenwerte

Ersetzen wir die Werte in allen Spalten mithilfe der Methode an applanter (faktorisieren ()).

# Importieren Sie den Datenrahmen aus dem PANDAS -Modul
Aus Pandas importieren Sie DataFrame
Pandas importieren
# Erstellen Sie einen Datenrahmen mit 10 Zeilen, die 4 Spalten enthalten
sets = dataFrame ('Code': [1,2,3,4,5,6,7,8,9,0],
"Priorität": ["hoch", "niedrig", "niedrig", "hoch", "mittel", "hoch", "mittel", "niedrig", "hoch", "mittel"],
'Geschlecht': ['m', 'm', 'm', 'f', 'm', 'm', 'f', 'f', 'm', 'f'],
'Alter': [12,23,21,34,21,23,21,34,56,32])
# Ersetzen Sie alle kategorialen Spaltenwerte
Sets [Sätze.select_dtypes (['Objekt']).Spalten] = sets [Sätze.select_dtypes (['Objekt']).Säulen].Bewerben Sie (Lambda X: Pandas.Faktorisieren Sie (x) [0])
drucken (Sets)

Ausgang

Prioritätsgeschlechtsalter Alter
0 1 0 0 12
1 2 1 0 23
2 3 1 0 21
3 4 0 1 34
4 5 2 0 21
5 6 0 0 23
6 7 2 1 21
7 8 1 1 34
8 9 0 0 56
9 0 2 1 32

Erläuterung

Wir können in Follow sehen:

  1. In der Geschlechtsspalte wird 'M' durch 0 ersetzt und 'F' durch 1 ersetzt.
  2. Prioritätsspalte, 'High' wird durch 0 ersetzt, 'niedrig' wird durch 1 ersetzt und 'Medium' durch 2 ersetzt.

Bisher haben wir den Austausch kategorieller Werte durch ganzzahlige Werte in einzelnen oder allen Spalten durch bekannte kategoriale Werte gesehen. Angenommen, es gibt einen riesigen Datensatz mit mehr als einem Lakh -Aufzeichnungen. So ersetzen Sie die kategorialen Werte?

Die Lösung ist die Etikettencodierung.

Lassen Sie uns diesen Ansatz diskutieren.

Ansatz 3: Verwenden von LabelCoding

LAGECODER () ist die Methode, die im Sklearn -Modul vorhanden ist und die kategorialen Werte einer bestimmten Spalte in eine Ganzzahl umwandelt. Wir müssen die kategorialen Werte nicht angeben.

Fit_transform () -Methode wird zusammen mit labelCoder () verwendet, die den transformierten Werten passt.

In dieser Technik beginnen die ersetzten Werte von 0 und der Ersatz erfolgt in alphabetischer Reihenfolge der kategorialen Werte.

Syntax

DataFrame_Object ['Spalte'] = LAGECODER ().FIT_TRANSFORM (DataFrame_Object ['Spalte']))

Hier ist die Spalte der Name der Spalte, in der wir die Werte ersetzen.

Beispiel

Ersetzen wir Werte im Geschlecht, Prioritätsspalten unter Verwendung des folgenden Ansatzes:

# Importieren Sie den Datenrahmen aus dem PANDAS -Modul
Aus Pandas importieren Sie DataFrame
Pandas importieren
# LabelCoder aus dem Sklearn -Modul importieren
von Sklearn.Vorverarbeitung importieren labelCoder
# Erstellen Sie einen Datenrahmen mit 10 Zeilen, die 4 Spalten enthalten
sets = dataFrame ('Code': [1,2,3,4,5,6,7,8,9,0],
"Priorität": ["hoch", "niedrig", "niedrig", "hoch", "mittel", "hoch", "mittel", "niedrig", "hoch", "mittel"],
'Geschlecht': ['m', 'm', 'm', 'f', 'm', 'm', 'f', 'f', 'm', 'f'],
'Alter': [12,23,21,34,21,23,21,34,56,32])
# Konvertieren Sie die kategorialen Werte der Geschlechtsspalte in numerische
setzt ['Geschlecht'] = labelCoder ().fit_transform (setzt ['Geschlecht']))
# Konvertieren Sie die kategorialen Werte der Prioritätsspalte in numerisch
setzt ['Priority'] = labelCoder ().FIT_TRANSFORM (setzt ['Priorität'])
drucken (Sets)

Ausgang

Prioritätsgeschlechtsalter Alter
0 1 0 1 12
1 2 1 1 23
2 3 1 1 21
3 4 0 0 34
4 5 2 1 21
5 6 0 1 23
6 7 2 0 21
7 8 1 0 34
8 9 0 1 56
9 0 2 0 32

Erläuterung

  1. Wir ersetzen 'M' durch 1 und 'f' durch 2 und speichern die Spaltenwerte erneut in der Spalte Geschlecht. Jetzt können wir sehen, dass die Geschlechtsspalte Werte innerhalb von 1 oder 2 enthält.
  2. Es gibt drei Kategorien in der Prioritätsspalte. Sie sind "niedrig", "hoch" und "mittel". Wir ersetzen 'niedrig' durch 0, 'Medium' mit 1 und 'hoch' durch 2 und speichern die Spaltenwerte erneut in der Prioritätsspalte.

Abschluss

Unser Leitfaden dreht sich um die Konvertierung kategoriale Werte in numerische Werte, damit sie von den Maschinen verständlich gemacht werden können, da der Objektdatenatyp nicht von ihnen verarbeitet werden kann. Wir haben Sie in die drei Ansätze der „Pandas“ -Bibliothek vorgestellt, um den erforderlichen Datenatyp zu erhalten. Denken Sie daran, Sie sollten den LabelCoding -Ansatz verwenden, da Sie nicht wissen, wie viele Kategorien in der Spalte des Pandas DataFrame vorhanden sind.