Comment compter les observations par groupe chez les pandas



Souvent, vous pourriez être intéressé à compter le nombre d’ observations par groupe dans un DataFrame pandas.

Heureusement, cela est facile à faire en utilisant les fonctions groupby() et size() avec la syntaxe suivante :

df.groupby('column_name').size()

Ce tutoriel explique plusieurs exemples d’utilisation pratique de cette fonction à l’aide du bloc de données suivant :

import numpy as np
import pandas as pd

#create pandas DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
                   'division':['E', 'W', 'E', 'E', 'W', 'W', 'E'],
                   'rebounds': [11, 8, 7, 6, 6, 5, 12]})

#display DataFrame
print(df)

  team division  rebounds
0    A        E        11
1    A        W         8
2    B        E         7
3    B        E         6
4    B        W         6
5    C        W         5
6    C        E        12

Exemple 1 : compter par une variable

Le code suivant montre comment compter le nombre total d’observations par équipe :

#count total observations by variable 'team'
df.groupby('team').size()

team
A    2
B    3
C    2
dtype: int64

D’après le résultat, nous pouvons voir que :

  • L’équipe A a 2 observations
  • L’équipe B a 3 observations
  • L’équipe C a 2 observations

Notez que le code précédent produit une série. Dans la plupart des cas, nous souhaitons travailler avec un DataFrame, nous pouvons donc utiliser la fonction reset_index() pour produire un DataFrame à la place :

df.groupby('team').size().reset_index(name='obs')

        team	obs
0	A	2
1	B	3
2	C	2

Exemple 2 : compter et trier par une variable

Nous pouvons également utiliser la fonction sort_values() pour trier le nombre de groupes.

Nous pouvons spécifier ascending=False pour trier le nombre de groupes du plus grand au plus petit ou ascending=True pour trier du plus petit au plus grand :

df.groupby('team').size().reset_index(name='obs').sort_values(['obs'], ascending=True)

        team	obs
0	A	2
2	C	2
1	B	3

Exemple 3 : Comptage par plusieurs variables

On peut également compter le nombre d’observations regroupées par plusieurs variables dans un DataFrame pandas :

#count observations grouped by team and division
df.groupby(['team', 'division']).size().reset_index(name='obs')

        team	division  obs
0	A	E	  1
1	A	W	  1
2	B	E	  2
3	B	W	  1
4	C	E	  1
5	C	W	  1

D’après le résultat, nous pouvons voir que :

  • 1 observation appartient à l’équipe A et à la division E
  • 1 observation appartient à l’équipe A et à la division W
  • 2 observations appartiennent à l’équipe B et à la division E
  • 1 observation appartient à l’équipe B et à la division W
  • 1 observation appartient à l’équipe C et à la division E
  • 1 observation appartient à l’équipe C et à la division W

Ressources additionnelles

Comment calculer la somme des colonnes dans Pandas
Comment calculer la moyenne des colonnes dans Pandas
Comment trouver la valeur maximale des colonnes dans Pandas

Ajouter un commentaire

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