Pandas : créer un tableau croisé dynamique avec plusieurs aggfunc
Vous pouvez utiliser la syntaxe suivante pour créer un tableau croisé dynamique dans pandas et fournir plusieurs valeurs à l’argument aggfunc :
df.pivot_table(index='col1', values='col2', aggfunc=('sum', 'mean'))
Cet exemple particulier crée un tableau croisé dynamique qui affiche la somme et la moyenne des valeurs dans col2 , regroupées par col1 .
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : créer un tableau croisé dynamique Pandas avec plusieurs aggfunc
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur divers joueurs de basket-ball :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'], 'points': [4, 4, 2, 8, 9, 5, 5, 7, 8, 8, 4, 3], 'assists': [2, 2, 5, 5, 4, 7, 5, 3, 9, 8, 4, 4]}) #view DataFrame print(df) team points assists 0 A 4 2 1 A 4 2 2 A 2 5 3 A 8 5 4 B 9 4 5 B 5 7 6 B 5 5 7 B 7 3 8 C 8 9 9 C 8 8 10 C 4 4 11 C 3 4
Nous pouvons utiliser le code suivant pour créer un tableau croisé dynamique qui résume à la fois la somme et le nombre moyen de points marqués par chaque équipe :
#create pivot table to summarize sum and mean of points by team
df.pivot_table(index='team', values='points', aggfunc=('sum', 'mean'))
mean sum
team
A 4.50 18
B 6.50 26
C 5.75 23
Le tableau croisé dynamique qui en résulte résume la moyenne et la somme des points marqués par chaque équipe.
Par exemple, on peut voir :
- Les joueurs de l’équipe A avaient une valeur moyenne de points de 4,50 et une valeur totale de points de 18 .
- Les joueurs de l’équipe B avaient une valeur moyenne de points de 6,50 et une valeur totale de points de 26 .
- Les joueurs de l’équipe C avaient une valeur moyenne de points de 5,75 et une valeur totale de points de 23 .
Notez que nous avons agrégé en utilisant la somme et la moyenne dans cet exemple, mais nous pourrions également agréger selon d’autres métriques telles que :
- compter
- min
- maximum
- médian
- std (écart type)
L’exemple suivant montre comment agréger les valeurs de la colonne de points en fonction de ces métriques pour chaque équipe :
#create pivot table to summarize several metrics for points by team
df.pivot_table(index='team', values='points',
aggfunc=('count', 'min', 'max', 'median', 'std'))
count max median min std
team
A 4 8 4.0 2 2.516611
B 4 9 6.0 5 1.914854
C 4 8 6.0 3 2.629956
Remarque : Vous pouvez trouver la documentation complète de la fonction pandas pivot_table() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes chez les pandas :
Pandas : Comment trier le tableau croisé dynamique par valeurs dans la colonne
Pandas : Comment créer un tableau croisé dynamique avec une somme de valeurs
Pandas : Comment ajouter des sous-totaux au tableau croisé dynamique
Pandas : Comment modifier les noms de colonnes dans un tableau croisé dynamique