Gruppierung nach Termanzahl in einem Pandas-Datenrahmen
Problem:
Gegeben ist ein Datenrahmen mit die folgenden Spalten: ID, Gruppe und Begriff. Das Ziel besteht darin, die Häufigkeit des Vorkommens jedes Begriffs innerhalb jeder eindeutigen Kombination aus ID und Gruppe zu bestimmen.
Lösung:
Um die Verwendung von Schleifen zu vermeiden, verwenden Sie groupby und Größenfunktionen in Pandas:
df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)
Die Groupby-Funktion gruppiert den Datenrahmen nach den angegebenen Spalten (ID, Gruppe und Begriff), während die Größenfunktion zählt das Vorkommen jeder Kombination. Die Unstack-Funktion erzeugt eine optisch ansprechendere Tabelle mit den in einer Matrix angeordneten Zählungen.
Das Ergebnis ist eine Tabelle mit Multi-Index-Spalten, wobei die ersten beiden Ebenen die Kombination aus ID und Gruppe darstellen und die dritte Ebene entspricht dem Begriff. Jede Zelle in der Tabelle zeigt an, wie oft ein bestimmter Begriff für die entsprechende ID und Gruppe vorkommt.
Zeitpunkt:
Für große Datensätze (z. B. 1.000.000 Zeilen) , die Leistung ist ausgezeichnet:
df = pd.DataFrame(dict(id=np.random.choice(100, 1000000), group=np.random.choice(20, 1000000), term=np.random.choice(10, 1000000)))
Bei Verwendung des oben genannten Ansatzes beträgt die verstrichene Zeit ungefähr 1 Sekunde.
Das obige ist der detaillierte Inhalt vonWie kann man Termvorkommen innerhalb von Gruppen in einem Pandas-DataFrame effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!