Compter des valeurs uniques par groupe(s) dans Pandas
Lorsque nous travaillons avec de grands ensembles de données, nous devons parfois appliquer une fonction à un groupe spécifique de données. Par exemple, nous avons un ensemble de données de pays
et le code
privé qu’ils utilisent pour les affaires privées. Nous voulons compter le nombre de codes utilisés par un pays. Voici les différentes manières de compter des valeurs uniques.
Nous utiliserons le même DataFrame
dans les sections suivantes comme suit,
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)
Ce qui suit sera la sortie.
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
Méthode df.groupby().nunique()
Voyons comment la fonction df.groupby().nunique()
va groupby
nos pays.
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)
Les éléments suivants seront sortis.
Countries
Canada 1
Germany 2
Japan 2
Switzerland 3
Name: code, dtype: int64
Cela montre que le Canada utilise un seul code, l’Allemagne utilise deux codes, etc.
Méthode df.groupby().agg()
Cette méthode fonctionne de la même manière que df.groupby().nunique()
. Nous devons passer la fonction nunique()
à la fonction agg()
.
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)
Production:
Countries code
0 Canada 1
1 Germany 2
2 Japan 2
3 Switzerland 3
.agg({'code': pd.Series.nunique})
Il regroupe en utilisant la fonction pd.Series.nunique
sur la colonne code
.
Méthode df.groupby().unique()
Cette méthode est utile lorsque vous souhaitez voir quel pays utilise quels codes.
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)
Les éléments suivants seront sortis.
Countries
Canada [113]
Germany [100, 115]
Japan [112, 114]
Switzerland [999, 113, 112]
Name: code, dtype: object
Article connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment trier le DataFrame de Pandas par les valeurs d'une colonne
- Comment obtenir l'agrégat des Pandas par groupe et par somme