Zählen Sie eindeutige Werte pro Gruppe(n) in Pandas
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
Verwandter Artikel - Pandas DataFrame
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- Wie konvertiert man eine Fließkommazahl in eine Ganzzahl in Pandas DataFrame
- Wie man Pandas-DataFrame nach den Werten einer Spalte sortiert
- Wie erhält man das Aggregat der Pandas gruppenweise und sum