HOWTO · Pandas
Zählen Sie eindeutige Werte pro Gruppe(n) in Pandas
Zählen von Werten durch Gruppieren von Spalten in DataFrame unter Verwendung der Methoden df.groupby().nunique(), df.groupby().agg() und df.groupby().unique() in der Pandas-Bibliothek
Wenn wir mit großen Datensätzen arbeiten, müssen wir manchmal eine Funktion auf eine bestimmte Gruppe von Daten anwenden. Zum Beispiel haben wir einen Datensatz von Ländern und den privaten Code, den sie für private Angelegenheiten verwenden. Wir wollen die Anzahl der Codes zählen, die ein Land benutzt. Nachstehend sind die verschiedenen Möglichkeiten zur Zählung eindeutiger Werte aufgelistet.
In den nächsten Abschnitten werden wir denselben DataFrame wie folgt verwenden,
import pandas as pd
data = [
[999, "Switzerland"],
[113, "Switzerland"],
[112, "Japan"],
[112, "Switzerland"],
[113, "Canada"],
[114, "Japan"],
[100, "Germany"],
[114, "Japan"],
[115, "Germany"],
]
df = pd.DataFrame(data, columns=["code", "Countries"])
print(df)
Das Folgende wird die Ausgabe sein.
code Countries
0 999 Switzerland
1 113 Switzerland
2 112 Japan
3 112 Switzerland
4 113 Canada
5 114 Japan
6 100 Germany
7 114 Japan
8 115 Germany
Methode df.groupby().nunique()
Lassen Sie uns sehen, wie df.groupby().nunique() funktionieren wird, um unsere Länder zu groupby.
import pandas as pd
data = [
[999, "Switzerland"],
[113, "Switzerland"],
[112, "Japan"],
[112, "Switzerland"],
[113, "Canada"],
[114, "Japan"],
[100, "Germany"],
[114, "Japan"],
[115, "Germany"],
]
df = pd.DataFrame(data, columns=["code", "Countries"])
result = df.groupby("Countries")["code"].nunique()
print(result)
Folgendes wird ausgegeben.
Countries
Canada 1
Germany 2
Japan 2
Switzerland 3
Name: code, dtype: int64
Dies zeigt, dass Kanada einen Code verwendet, Deutschland verwendet zwei Codes und so weiter.
Methode df.groupby().agg()
Diese Methode funktioniert genauso wie df.groupby().nunique(). Wir müssen die nunique() Funktion an die agg() Funktion übergeben.
import pandas as pd
data = [
[999, "Switzerland"],
[113, "Switzerland"],
[112, "Japan"],
[112, "Switzerland"],
[113, "Canada"],
[114, "Japan"],
[100, "Germany"],
[114, "Japan"],
[115, "Germany"],
]
df = pd.DataFrame(data, columns=["code", "Countries"])
result = df.groupby(by="Countries", as_index=False).agg({"code": pd.Series.nunique})
print(result)
Ausgabe:
Countries code
0 Canada 1
1 Germany 2
2 Japan 2
3 Switzerland 3
.agg({'code': pd.Series.nunique})
Sie aggregiert mit der Funktion pd.Series.nunique über die Spalte code.
df.groupby().unique() Methode
Diese Methode ist nützlich, wenn Sie sehen möchten, welches Land welche Codes verwendet.
import pandas as pd
data = [
[999, "Switzerland"],
[113, "Switzerland"],
[112, "Japan"],
[112, "Switzerland"],
[113, "Canada"],
[114, "Japan"],
[100, "Germany"],
[114, "Japan"],
[115, "Germany"],
]
result = df.groupby("Countries")["code"].unique()
print(result)
Es wird Folgendes ausgegeben.
Countries
Canada [113]
Germany [100, 115]
Japan [112, 114]
Switzerland [999, 113, 112]
Name: code, dtype: object