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

Ajouter un commentaire

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