Pandas ist eine leistungsstarke Bibliothek zur Datenmanipulation in Python. Eine häufige Aufgabe besteht darin, die Anzahl der eindeutigen Werte innerhalb verschiedener Gruppen Ihres Datensatzes zu bestimmen. Dieser Artikel beschreibt drei effiziente Pandas-Methoden, um dies zu erreichen: groupby().nunique()
, groupby().agg()
und groupby().unique()
. Jede Methode wird mit klaren Beispielen demonstriert.
Inhaltsverzeichnis
groupby().nunique()
Methode
Die nunique()
Methode, verwendet nach einer groupby()
Operation, liefert direkt die Anzahl der eindeutigen Werte für jede Gruppe. Dies ist oft der effizienteste und prägnanteste Ansatz.
Betrachten Sie diesen Beispiel-DataFrame:
import pandas as pd
data = {'Group': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C'],
'Value': ['X', 'Y', 'X', 'Z', 'Z', 'X', 'Y', 'Z', 'X']}
df = pd.DataFrame(data)
print(df)
Dies erzeugt:
Group Value
0 A X
1 A Y
2 A X
3 B Z
4 B Z
5 C X
6 C Y
7 C Z
8 C X
Um eindeutige ‚Value‘-Einträge pro ‚Group‘ zu zählen, verwenden Sie:
unique_counts = df.groupby('Group')['Value'].nunique()
print(unique_counts)
Die Ausgabe:
Group
A 2
B 1
C 3
Name: Value, dtype: int64
Dies zeigt, dass Gruppe ‚A‘ 2 eindeutige Werte hat, ‚B‘ 1 und ‚C‘ 3.
groupby().agg()
Methode
Die agg()
Methode bietet mehr Flexibilität und ermöglicht die Anwendung mehrerer Aggregationsfunktionen gleichzeitig. Wir können sie mit nunique()
verwenden, um eindeutige Werte zu zählen, zusammen mit anderen Funktionen, falls nötig.
Mit dem gleichen DataFrame:
aggregated_data = df.groupby('Group')['Value'].agg(['nunique', 'count'])
print(aggregated_data)
Ausgabe:
nunique count
Group
A 2 3
B 1 2
C 3 4
Dies zeigt sowohl die Anzahl der eindeutigen Werte (nunique
) als auch die Gesamtzahl der Werte (count
) für jede Gruppe. Dies ist für eine umfassendere Analyse von Vorteil.
groupby().unique()
Methode
Die unique()
Methode gibt die eindeutigen Werte selbst für jede Gruppe zurück, nicht deren Anzahl. Obwohl sie nicht direkt die Anzahl liefert, ist sie nützlich, wenn Sie die tatsächlichen eindeutigen Werte sehen müssen.
unique_values = df.groupby('Group')['Value'].unique()
print(unique_values)
Ausgabe:
Group
A [X, Y]
B [Z]
C [X, Y, Z]
Name: Value, dtype: object
Um die Anzahl zu erhalten, ist ein zusätzlicher Schritt erforderlich:
unique_value_counts = unique_values.apply(len)
print(unique_value_counts)
Dies liefert das gleiche Ergebnis wie nunique()
:
Group
A 2
B 1
C 3
Name: Value, dtype: int64
Dies ist jedoch weniger effizient als die direkte Verwendung von nunique()
.
Fazit: Zum einfachen Zählen eindeutiger Werte pro Gruppe ist groupby().nunique()
die direkteste und effizienteste Methode. groupby().agg()
bietet mehr Flexibilität, um nunique()
mit anderen Aggregationen zu kombinieren, während groupby().unique()
nützlich ist, wenn Sie die eindeutigen Werte sehen müssen. Wählen Sie die Methode, die am besten zu Ihren analytischen Bedürfnissen passt.