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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *