Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mehrere Spalten in einem Pandas-DataFrame effizient beschriften und kodieren?

Wie kann ich mehrere Spalten in einem Pandas-DataFrame effizient beschriften und kodieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-21 22:52:13999Durchsuche

How to Efficiently Label Encode Multiple Columns in a Pandas DataFrame?

Beschriftungskodierung über mehrere Spalten hinweg in Scikit-Learn

Der Umgang mit mehreren Spalten kategorialer Daten in einem DataFrame kann mühsam und mühsam sein Es ist ineffizient, für jede Spalte einzelne LabelEncoder-Objekte zu erstellen. Dieses Problem tritt häufig auf, wenn mit Datensätzen gearbeitet wird, die zahlreiche Spalten stringbasierter kategorialer Daten enthalten.

Problembeschreibung:

Versuche, ein einzelnes LabelEncoder-Objekt auf einen gesamten DataFrame anzuwenden Dies führt zu einem Fehler, wie im bereitgestellten Codeausschnitt gezeigt. Die Fehlermeldung „schlechte Eingabeform (6, 3)“ weist darauf hin, dass LabelEncoder ein 1D-Array von Werten erwartet, keinen DataFrame mit mehreren Spalten.

Lösung:

Um dieses Problem zu lösen, wird empfohlen, die apply()-Methode von Pandas zu nutzen. Diese elegante Lösung beinhaltet die Anwendung der fit_transform()-Methode von LabelEncoder auf jede Spalte innerhalb des DataFrame. So geht's:

df.apply(LabelEncoder().fit_transform)

Dieser Ansatz durchläuft jede Spalte, wendet die LabelEncoder-Transformation an und gibt einen neuen DataFrame mit den codierten Werten zurück.

Zusätzliche Überlegungen:

  • Umgekehrte Transformation: Um die codierten Werte zurückzudekodieren zu ihren ursprünglichen Kategorien verwenden Sie die inverse_transform()-Methode für den codierten DataFrame.
  • Mehrere Encoder: Wenn für verschiedene Spalten unterschiedliche LabelEncoder-Parameter erforderlich sind, sollten Sie die Verwendung eines Wörterbuchs zum Speichern der Encoder in Betracht ziehen. wie in der erweiterten Antwort gezeigt.
  • Spaltenauswahl: Für Szenarien, in denen nicht alle Spalten eine Beschriftungscodierung erfordern, Verwenden Sie einen ColumnTransformer, der die Spezifikation einer Teilmenge der zu transformierenden Spalten ermöglicht.

Empfohlene Alternative:

In Scikit-Learn-Versionen 0.20 und höher: Der OneHotEncoder wird als effizientere Alternative zum LabelEncoder für String-Daten empfohlen. Es unterstützt direkt die One-Hot-Kodierung, die oft die bevorzugte Darstellung für kategoriale Daten in Modellen für maschinelles Lernen ist.

OneHotEncoder().fit_transform(df)

Durch die Nutzung dieser Techniken können Praktiker die Etikettenkodierung für mehrere Spalten stringbasierter kategorialer Daten effizient durchführen Daten, was die Vorbereitung von Datensätzen für die maschinelle Lernanalyse erleichtert.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Spalten in einem Pandas-DataFrame effizient beschriften und kodieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn