Comment convertir le tableau croisé dynamique Pandas en DataFrame



Vous pouvez utiliser la syntaxe suivante pour convertir un tableau croisé dynamique pandas en DataFrame pandas :

df = pivot_name.reset_index()

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

Exemple : convertir un tableau croisé dynamique en DataFrame

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   'points': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

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

Nous pouvons utiliser le code suivant pour créer un tableau croisé dynamique qui affiche la moyenne des points marqués par équipe et par position :

#create pivot table
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position')

#view pivot table
df_pivot

position	F	  G
team		
A	      8.0	9.5
B	     10.5	5.5

Nous pouvons ensuite utiliser la fonction reset_index() pour convertir ce tableau croisé dynamique en DataFrame pandas :

#convert pivot table to DataFrame
df2 = df_pivot.reset_index()

#view DataFrame
df2

	team	F	G
0	A	8.0	9.5
1	B	10.5	5.5

Le résultat est un DataFrame pandas avec deux lignes et trois colonnes.

On peut également utiliser la syntaxe suivante pour renommer les colonnes du DataFrame :

#convert pivot table to DataFrame
df2.columns = ['team', 'Forward_Pts', 'Guard_Pts']

#view updated DataFrame
df2

        team	Forward_Pts  Guard_Pts
0	A	8.0	     9.5
1	B	10.5	     5.5

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :

Pandas : Comment remodeler le DataFrame de long à large
Pandas : Comment remodeler le DataFrame de large à long
Pandas : comment regrouper et agréger sur plusieurs colonnes

Ajouter un commentaire

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