Réorganiser les données avec pivot()
La fonction pivot()
permet de réorganiser un tableau de données en restructurant ses lignes et colonnes selon des valeurs spécifiques d’une ou plusieurs colonnes. Cette opération transforme les données d’un format « long » à un format « large », facilitant ainsi l’analyse en mettant en évidence les relations entre variables et en simplifiant la visualisation des données. Le pivotage est particulièrement utile pour créer des tableaux plus lisibles et structurés à partir de données brutes.
Fonctions :
-
df.pivot(index='col1', columns='col2', values='col3')
Crée un nouveau DataFrame en réorganisant les données selon une structure de tableau croisé. On passe : Une colonne pour l'index. Une colonne pour les en-têtes de colonnes. Une colonne pour les valeurs. Cela permet de transformer un DataFrame en format long (tidy) en format large (wide). C'est idéal pour restructurer les données avant une analyse ou une visualisation.
Importation :
import pandas as pd
Attributs :
Paramètre Description index
Colonne(s) à utiliser comme index du DataFrame résultant. columns
Colonne(s) à utiliser pour créer les noms de colonnes. values
Colonne(s) contenant les valeurs à remplir dans les cellules du tableau résultant. Exemple de code :
import pandas as pd # DataFrame exemple df = pd.DataFrame({ 'Date': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02'], 'Produit': ['A', 'B', 'A', 'B'], 'Vente': [100, 150, 120, 130] }) # Réorganisation avec pivot pivot_df = df.pivot(index='Date', columns='Produit', values='Vente') print(pivot_df)
Explication du code :
🔹 Explication du code
On applique un pivot :
-
index='Date'
➡️ Les dates deviennent l'index des lignes.columns='Produit'
➡️ Les produits deviennent les en-têtes de colonnes.values='Vente'
➡️ Les ventes remplissent les cellules du tableau.
🔸 Remarques pratiques
-
pivot()
fonctionne si chaque combinaisonindex/columns
est unique.
➡️ Si ce n'est pas le cas, il lèvera une erreurValueError: Index contains duplicate entries
.
➡️ Pour les cas avec doublons, il faut utiliserpivot_table()
qui peut agréger (aggfunc
). -
Si besoin, on peut remettre à plat un DataFrame pivoté avec
.reset_index()
-