Pandas : Comment supprimer MultiIndex dans un tableau croisé dynamique



Pour supprimer un multiIndex d’un tableau croisé dynamique pandas, vous pouvez utiliser l’argument valeurs avec la fonction reset_index() :

pd.pivot_table(df, index='col1', columns='col2', values='col3').reset_index()

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : supprimer MultiIndex dans le tableau croisé dynamique Pandas

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'],
                   'position': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
                   'points': [4, 4, 6, 8, 9, 5, 5, 12]})

#view DataFrame
print(df)

  team position  points
0    A        G       4
1    A        G       4
2    A        F       6
3    A        F       8
4    B        G       9
5    B        F       5
6    B        F       5
7    B        F      12

Supposons maintenant que nous créions le tableau croisé dynamique suivant pour résumer la valeur moyenne des points par équipe et par poste :

#create pivot table to summarize mean points by team and position
pd.pivot_table(df, index='team', columns='position')

	        points
position	F    G
team		
A	7.000000   4.0
B	7.333333   9.0

Le tableau croisé dynamique résultant résume la valeur moyenne des points par équipe et par position , mais contient un multiIndex.

Pour supprimer le multiIndex, nous pouvons utiliser l’argument values dans la fonction pivot_table() et ajouter reset_index() à la fin :

#create pivot table to summarize mean points by team and position
pd.pivot_table(df, index='team', columns='position', values='points').reset_index()

position  team	F	  G
0	  A	7.000000  4.0
1	  B	7.333333  9.0

Le tableau croisé dynamique résultant résume la valeur moyenne des points par équipe et par position et n’a plus de multiIndex.

Notez que la fonction pivot_table() calcule la valeur moyenne par défaut.

Pour calculer une autre métrique, telle que la somme, utilisez l’argument aggfunc comme suit :

#create pivot table to summarize sum of points by team and position
pd.pivot_table(df, index='team', columns='position', values='points',
               aggfunc='sum').reset_index()

position  team	F   G
0	  A	14  8
1	  B	22  9

Le tableau croisé dynamique résultant résume la somme des valeurs des points par équipe et par position et n’a pas non plus de multiIndex.

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 opérations courantes dans les pandas :

Pandas : Comment ajouter un filtre au tableau croisé dynamique
Pandas : Comment trier le tableau croisé dynamique par valeurs dans la colonne
Pandas : Comment ajouter des sous-totaux au tableau croisé dynamique

Ajouter un commentaire

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