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.
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 |
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 |
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