Réorganiser les données avec pivot()
La méthode pivot() permet de réorganiser les données d’un DataFrame en convertissant des colonnes spécifiques en index ou en colonnes de manière à obtenir un tableau plus lisible ou mieux adapté pour l’analyse.
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()
-
Warning: Trying to access array offset on value of type bool in /home/datacrt/www/wp-content/themes/knowledge-base-lite/single-sous-section.php on line 59