Heim > Artikel > Backend-Entwicklung > Wie zählt man mit Pandas eindeutige Werte in Gruppen?
Eindeutige Werte in Gruppen mit Pandas zählen
Bei der Arbeit mit Datensätzen, die mehrere in Kategorien gruppierte Variablen enthalten, ist es oft notwendig, die Anzahl zu bestimmen einzigartiger Werte, die jeder Gruppe zugeordnet sind. Pandas, eine weit verbreitete Python-Bibliothek zur Datenbearbeitung, bietet mehrere Methoden zum Zählen eindeutiger Werte innerhalb von Gruppen.
Eine häufige Anforderung besteht darin, die Anzahl eindeutiger Bezeichner innerhalb jeder Domäne zu zählen. Anhand eines Datenrahmens mit Spalten für ID und Domäne möchten wir ein Ergebnis erhalten, das die Anzahl der eindeutigen IDs für jede Domäne anzeigt.
Insbesondere unter Berücksichtigung der Daten:
ID domain 0 123 vk.com 1 123 vk.com 2 123 twitter.com 3 456 vk.com 4 456 facebook.com 5 456 vk.com 6 456 google.com 7 789 twitter.com 8 789 vk.com
Wir Ziel ist es, die folgende Ausgabe zu erzielen:
domain count vk.com 3 twitter.com 2 facebook.com 1 google.com 1
Um dies zu erreichen, können wir die Funktion nunique() innerhalb der Pandas-Groupby-Operation verwenden. Indem wir den Datenrahmen nach der Domänenspalte gruppieren und anschließend die Funktion nunique() auf die ID-Spalte anwenden, erhalten wir die Anzahl der eindeutigen Werte für jede Domäne. Der resultierende Datenrahmen enthält das gewünschte Ergebnis:
df = df.groupby(['domain', 'ID']).nunique() print(df)
In bestimmten Szenarien können die Daten jedoch Zeichen wie einfache Anführungszeichen innerhalb der Domänennamen enthalten. Um solche Fälle zu behandeln, können wir die Funktion str.strip("'") verwenden, um die einfachen Anführungszeichen vor dem Gruppieren und Zählen zu entfernen. Dies kann wie folgt implementiert werden:
df = df.ID.groupby([df.domain.str.strip("'")]).nunique() print(df)
Alternativ können wir den Code vereinfachen, indem wir die Funktion str.strip("'") innerhalb der Groupby-Operation verketten:
df.groupby(df.domain.str.strip("'"))['ID'].nunique()
Zur Beibehaltung Für die Domänenspalte im resultierenden Datenrahmen können wir die Funktion agg() mit dem Parameter as_index=False verwenden:
df = df.groupby(by='domain', as_index=False).agg({'ID': pd.Series.nunique}) print(df)
Diese Methode gibt einen Datenrahmen mit sowohl der Domänen- als auch der Anzahlspalte zurück, wobei count stellt die Anzahl der eindeutigen IDs dar, die jeder Domäne zugeordnet sind.
Das obige ist der detaillierte Inhalt vonWie zählt man mit Pandas eindeutige Werte in Gruppen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!