Pandas : Comment utiliser GroupBy avec le nombre de bacs
Vous pouvez utiliser la syntaxe suivante pour calculer le nombre de cases d’une variable regroupée par une autre variable dans pandas :
#define bins groups = df.groupby(['group_var', pd.cut(df.value_var, bins)]) #display bin count by group variable groups.size().unstack()
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : utilisez GroupBy avec le nombre de bacs dans Pandas
Supposons que nous ayons le DataFrame pandas suivant qui montre les points marqués par les basketteurs de différentes équipes :
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'points': [4, 7, 7, 11, 12, 15, 19, 19,
5, 5, 11, 12, 14, 14, 15, 15]})
#view DataFrame
print(df)
team points
0 A 4
1 A 7
2 A 7
3 A 11
4 A 12
5 A 15
6 A 19
7 A 19
8 B 5
9 B 5
10 B 11
11 B 12
12 B 14
13 B 14
14 B 15
15 B 15
On peut utiliser la syntaxe suivante pour calculer la fréquence des points pour chaque équipe, regroupés dans des bacs spécifiques :
#define groups
groups = df.groupby(['team', pd.cut(df.points, [0, 10, 15, 20])])
#display bin count grouped by team
groups.size().unstack()
points (0, 10] (10, 15] (15, 20]
team
A 3 3 2
B 2 6 0
Voici comment interpréter le résultat :
- Au total, 3 joueurs de l’équipe A ont marqué entre 0 et 10 points.
- Au total, 3 joueurs de l’équipe A ont marqué entre 10 et 15 points.
- Au total, 2 joueurs de l’équipe A ont marqué entre 15 et 20 points.
Et ainsi de suite.
Notez que nous pouvons spécifier les bacs que nous souhaitons dans la fonction pd.cut() .
Par exemple, nous pourrions définir seulement deux bacs :
#define groups
groups = df.groupby(['team', pd.cut(df.points, [0, 10, 20])])
#display bin count grouped by team
groups.size().unstack()
points (0, 10] (10, 20]
team
A 3 5
B 2 6
Voici comment interpréter le résultat :
- Au total, 3 joueurs de l’équipe A ont marqué entre 0 et 10 points.
- Au total, 5 joueurs de l’équipe A ont marqué entre 10 et 20 points.
- Au total, 2 joueurs de l’équipe B ont marqué entre 0 et 10 points.
- Au total, 6 joueurs de l’équipe B ont marqué entre 10 et 20 points.
Note 1 : Vous pouvez trouver la documentation complète de la fonction GroupBy ici .
Note 2 : Vous pouvez trouver la documentation complète de la fonction cut ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Pandas : comment calculer la somme cumulée par groupe
Pandas : comment compter les valeurs uniques par groupe
Pandas : comment calculer le mode par groupe
Pandas : comment calculer la corrélation par groupe