[PYTHON] Feature-Generierung mit Pandas gruppieren nach

Ich möchte eine Feature-Menge mit pandas group by erstellen

Wenn Sie einem Feature Statistiken für jedes Spaltenattribut hinzufügen möchten, müssen Sie in vielen Fällen kein Diktat mit Sammlungen erstellen oder nach Gruppen gruppieren und diese zusammenführen. Es ist einfach, wenn Sie nur Statistiken veröffentlichen, aber es fiel mir schwer, pandas.DataFrame.groupby zu verwenden, als ich es als Feature zum Datensatz hinzufügen wollte, sodass ich es als Memo belassen werde.

Was ich sagen möchte ist, dass groupby.transform praktisch ist.

Beispieldaten

import pandas as pd
df = pd.DataFrame({
     "site":["A","A","A","B","B","C"],
     "dat":[15,30,30,30,10,50]
})
site dat
0 A 15
1 A 30
2 A 30
3 B 30
4 B 10
5 C 50

Grundlegende Statistiken wie Durchschnitt, Maximum und Minimum für jedes Attribut

Features können direkt generiert werden, indem das Transformationsargument in np.max oder np.min geändert wird. Gleiches gilt für Median, Var usw. Der Code zur Berechnung des Durchschnittswerts für jede Site ist unten dargestellt.

import numpy as np
df["site_mean"] = df.groupby("site").transform(np.mean)
site dat site_mean
0 A 15 25
1 A 30 25
2 A 30 25
3 B 30 20
4 B 10 20
5 C 50 50

Count Encoding Die Methode, die Anzahl der Auftritte von (Kategorie-) Features einer bestimmten Spalte zu einem neuen Feature zu machen, wird als Zählcodierung bezeichnet. Durch die Kombination mit groupby ist es möglich, so etwas wie eine Seltenheit innerhalb eines bestimmten Attributs zu charakterisieren. Sie können dies mit Sammlungen tun. Counter, dies endet jedoch auch mit der Transformation.

Der Code, der in die Anzahl der Vorkommen des Site- und Datenpaars konvertiert werden soll, wird angezeigt. (30 Auftritte auf Seite A sind 2 Mal)

df["count_site_dat"] = df.groupby(["site","dat"]).transform(np.size)
site dat site_mean count_size_dat
0 A 15 25 1
1 A 30 25 2
2 A 30 25 2
3 B 30 20 1
4 B 10 20 1
5 C 50 50 1

Rangfolge

Berechnen Sie die größten Daten eines bestimmten Merkmals unter den Daten mit einem bestimmten Merkmal.

df["site_rank"] = df.groupby("site")["dat"].rank(method="dense")
site dat site_mean count_size_dat site_rank
0 A 15 25 1 1
1 A 30 25 2 2
2 A 30 25 2 2
3 B 30 20 1 2
4 B 10 20 1 1
5 C 50 50 1 1

Durch Ändern des Rangarguments wird hauptsächlich die Ausdrucksmethode mit demselben Wert (gleichem Rang) geändert. Weitere Informationen finden Sie in der Methode von Rank Rank Pandas.DataFrame, Series.

Recommended Posts

Feature-Generierung mit Pandas gruppieren nach
Standardisieren Sie nach Gruppen mit Pandas
Bearbeiten von Strings mit Pandas gruppieren nach
Erstellen Sie eine Altersgruppe mit Pandas
Pandas: groupby (), um den Wert nach Gruppe zu vervollständigen
Geschwindigkeitsvergleich beim Umschalten nach Gruppen nach Pandas
Nach Pandas sortieren
Zeichnen Sie ein Diagramm, indem Sie es mit Pandas groupby verarbeiten
Mit Pandas schnell visualisieren
Bootstrap-Sampling mit Pandas
Datensätze mit Pandas verarbeiten (2)
Zusammenführen von Datensätzen mit Pandas
Extrahieren Sie mit Pandas DataFrame N Proben für jede Gruppe
Pandas lernen mit Chemoinfomatik
Notiz zur Generierung von Datumsmerkmalen
Datenvisualisierung mit Pandas
07. Anweisungsgenerierung nach Vorlage
Datenmanipulation mit Pandas!
Funktionsauswahl durch sklearn.feature_selection
Daten mit Pandas mischen
JPEG-Bilderzeugung durch Angabe der Qualität mit Python + OpenCV
Automatische Quizgenerierung mit COTOHA
pandas Matplotlib Zusammenfassung nach Verwendung
Lesen Sie CSV mit Python-Pandas
Laden Sie verschachtelten Json mit Pandas
Künstliche Datengenerierung mit Numpy
Merkmalsauswahl durch genetischen Algorithmus
Satzerzeugung mit GRU (Keras)
Memorandum (Pseudo-Vlookup von Pandas)
[Python] Ändere den Typ mit Pandas
Funktionsauswahl durch Null-Wichtigkeiten
Bildunterschriftengenerierung mit Chainer
Verhindern Sie Auslassungen mit Pandas Print
Datenverarbeitungstipps mit Pandas