Comment compter les valeurs uniques à l’aide de Pandas GroupBy
Vous pouvez utiliser la syntaxe de base suivante pour compter le nombre de valeurs uniques par groupe dans un DataFrame pandas :
df.groupby('group_column')['count_column'].nunique()
Les exemples suivants montrent comment utiliser cette syntaxe avec le DataFrame suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'G', 'F', 'F', 'G', 'G', 'F', 'F', 'F'], 'points': [5, 7, 7, 9, 12, 9, 9, 4, 7, 7], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12, 13, 15]}) #view DataFrame df team position points rebounds 0 A G 5 11 1 A G 7 8 2 A G 7 10 3 A F 9 6 4 A F 12 6 5 B G 9 5 6 B G 9 9 7 B F 4 12 8 B F 7 13 9 B F 7 15
Exemple 1 : regrouper par une colonne et compter les valeurs uniques
Le code suivant montre comment compter le nombre de valeurs uniques dans la colonne « points » pour chaque équipe :
#count number of unique values in 'points' column grouped by 'team' column
df.groupby('team')['points'].nunique()
team
A 4
B 3
Name: points, dtype: int64
À partir du résultat, nous pouvons voir :
- Il existe 4 valeurs de « points » uniques pour l’équipe A.
- Il existe 3 valeurs de « points » uniques pour l’équipe B.
Notez que nous pouvons également utiliser la fonction unique() pour afficher chaque valeur de « points » unique par équipe :
#display unique values in 'points' column grouped by 'team'
df.groupby('team')['points'].unique()
team
A [5, 7, 9, 12]
B [9, 4, 7]
Name: points, dtype: object
Exemple 2 : regrouper par plusieurs colonnes et compter les valeurs uniques
Le code suivant montre comment compter le nombre de valeurs uniques dans la colonne « points », regroupées par équipe et par position :
#count number of unique values in 'points' column grouped by 'team' and 'position'
df.groupby(['team', 'position'])['points'].nunique()
team position
A F 2
G 2
B F 2
G 1
Name: points, dtype: int64
À partir du résultat, nous pouvons voir :
- Il existe 2 valeurs de « points » uniques pour les joueurs en position « F » dans l’équipe A.
- Il existe 2 valeurs de « points » uniques pour les joueurs en position « G » dans l’équipe A.
- Il existe 2 valeurs de « points » uniques pour les joueurs en position « F » dans l’équipe B.
- Il y a 1 valeur de « points » unique pour les joueurs en position « G » dans l’équipe B.
Encore une fois, nous pouvons utiliser la fonction unique() pour afficher chaque valeur de « points » unique par équipe et par position :
#display unique values in 'points' column grouped by 'team' and 'position'
df.groupby(['team', 'position'])['points'].unique()
team position
A F [9, 12]
G [5, 7]
B F [4, 7]
G [9]
Name: points, dtype: object
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Pandas : Comment trouver des valeurs uniques dans une colonne
Pandas : comment trouver des valeurs uniques dans plusieurs colonnes
Pandas : comment compter les occurrences de valeur spécifique dans une colonne