Comment calculer les quantiles par groupe dans Pandas
Vous pouvez utiliser la syntaxe de base suivante pour calculer les quantiles par groupe dans Pandas :
df.groupby('grouping_variable').quantile(.5)
Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.
Exemple 1 : calculer le quantile par groupe
Supposons que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2], 'score': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]}) #view first five rows df.head() team score 0 1 3 1 1 4 2 1 4 3 1 5 4 1 5
Le code suivant montre comment calculer le 90e centile des valeurs de la colonne « points », regroupées par la colonne « équipe » :
df.groupby('team').quantile(.90) score team 1 6.5 2 4.0
Voici comment interpréter le résultat :
- Le 90e centile des « points » pour l’équipe 1 est de 6,5 .
- Le 90e centile des « points » pour l’équipe 2 est de 4,0 .
Exemple 2 : Calculer plusieurs quantiles par groupe
Le code suivant montre comment calculer plusieurs quantiles à la fois par groupe :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2], 'score': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]}) #create functions to calculate 1st and 3rd quartiles def q1(x): return x.quantile(0.25) def q3(x): return x.quantile(0.75) #calculate 1st and 3rd quartiles by group vals = {'score': [q1, q3]} df.groupby('team').agg(vals) score q1 q3 team 1 4.0 5.0 2 2.0 3.0
Voici comment interpréter le résultat :
- Les premier et troisième quartiles des scores de l’équipe 1 sont respectivement de 4,0 et 5,0 .
- Les premier et troisième quartiles des scores de l’équipe 2 sont respectivement de 2,0 et 3,0 .
Ressources additionnelles
Les didacticiels suivants expliquent comment exécuter d’autres fonctions courantes dans les pandas :
Comment trouver la valeur maximale par groupe chez Pandas
Comment compter les observations par groupe chez les pandas
Comment calculer la moyenne des colonnes dans Pandas