Fonction df.pivot() de Pandas
df.pivot()est une méthode membre de DataFrame, utilisée pourcréer des tableaux croisés dynamiques. Elle peut remodeler les données dans une nouvelle disposition en fonction de l'index de ligne, de l'index de colonne et des colonnes de valeurs spécifiés.
etpivot_table()Contrairement àpivot()ne prend pas en charge les opérations d'agrégation et exige que la combinaison de l'index de ligne et de l'index de colonne soit unique ; sinon, une erreur sera levée.
Définition du mot: pivotSignifie « tourner, pivoter ». Ici, il fait référence au remodelage « rotationnel » des données, permettant de permuter dynamiquement les dimensions de lignes et de colonnes comme dans un tableau croisé dynamique.
Syntaxe de base et paramètres
df.pivot()est une méthode d’instance de DataFrame, appelée via l’opérateur point.
Format de syntaxe
DataFrame.pivot(index=None, columns, values=None)
Description du paramètre
- Paramètre:
index- Type : nom de colonne, étiquette, liste d'étiquettes ou None.
- Description : la colonne utilisée comme index de ligne du nouveau DataFrame. Si None, l'index de ligne existant est utilisé.
- Paramètre:
columns- Type : nom de colonne ou libellé.
- Description :Paramètre requis. La colonne utilisée comme index de colonne du nouveau DataFrame, servant à transformer les valeurs uniques en noms de colonnes.
- Paramètre:
values- Type : nom de colonne, étiquette, liste d'étiquettes ou None.
- Description : La colonne de données utilisée pour remplir le DataFrame. Si elle n'est pas spécifiée, toutes les colonnes sauf index et columns sont utilisées.
Description de la fonction
- Valeur de retour: Renvoie un nouveau DataFrame, c'est-à-dire le tableau croisé dynamique.
- Limitation: Si la combinaison de index et columns contient des valeurs dupliquées, une ValueError sera levée. Dans ce cas, vous devez utiliser
pivot_table(), qui effectue automatiquement une agrégation.
Exemples
Maîtrisons en profondeur, à travers une série d'exemples du simple au complexe,df.pivot()l'utilisation de
Exemple 1 : Utilisation de base - Création d'un tableau croisé dynamique simple
Exemples
# 1. Créer des données de ventes (chaque ligne contient une combinaison produit-région-ventes)
sales = pd.DataFrame({
'product': ['A', 'A', 'B', 'B', 'C', 'C'],
'region': ['North', 'South', 'North', 'South', 'North', 'South'],
'sales': [100, 150, 200, 180, 220, 250]
})
print("=== Données de ventes originales ===")
print(sales)
# 2. Utilisez df.pivot() pour créer un tableau croisé dynamique
# Index de ligne : product, index de colonne : region, valeur : sales
pivot_result = sales.pivot(index='product', columns='region', values='sales')
print("n=== df.pivot() Tableau croisé dynamique ===")
print(pivot_result)
Sortie attendue :
=== 原始销售数据 === product region sales 0 A North 100 1 A South 150 2 B North 200 3 B South 180 4 C North 220 5 C South 250 === df.pivot() 透视表 === region North South product A 100 150 B 200 180 C 220 250
Explication du code :
- Les données d'origine sont au format long, chaque ligne enregistrant les ventes d'un produit dans une certaine région.
pivot()Utilisez la colonne product comme index de ligne, la colonne region comme index de colonne, et sales comme valeurs.- Le résultat est un tableau bidimensionnel clair qui permet une comparaison intuitive des ventes de différents produits dans différentes régions.
Exemple 2 : plusieurs colonnes de valeurs - Pivoter plusieurs métriques simultanément
Vous pouvez pivoter plusieurs colonnes numériques en même temps pour obtenir une vue de données plus riche.
Exemples
# 1. Créez des données contenant sales et quantity
sales = pd.DataFrame({
'product': ['A', 'A', 'B', 'B', 'A', 'A', 'B', 'B'],
'region': ['North', 'South', 'North', 'Sud', 'Est', 'Ouest', 'Est', 'Ouest'],
'sales': [100, 150, 200, 180, 120, 130, 190, 210],
'quantity': [10, 15, 20, 18, 12, 13, 19, 21]
})
print("=== Données originales ===")
print(sales)
# 2. Pivoter uniquement les ventes
print("n=== Tableau croisé dynamique des ventes ===")
sales_pivot = sales.pivot(index='product', columns='region', values='sales')
print(sales_pivot)
# 3. Pivoter les ventes et les quantités (sans préciser de valeurs, utiliser toutes les colonnes numériques)
print("n=== Pivot multi-métrique ===")
multi_pivot = sales.pivot(index='product', columns='region')
print(multi_pivot)
Sortie attendue :
=== 原始数据 ===
product region sales quantity
0 A North 100 10
1 A South 150 15
2 B North 200 20
3 B South 180 18
4 A East 120 12
5 A West 130 13
6 B East 190 19
7 B West 210 21
=== 销售额透视表 ===
region East North South West
product
A 120 100 150 130
B 190 200 180 210
=== 多指标透视 ===
sales quantity
region East North South West East North South West
product
A 120 100 150 130 12 10 15 13
B 190 200 180 210 19 20 18 21
Explication du code :
- Lorsque vous ne spécifiez pas
valuesle paramètre, toutes les colonnes sauf index et columns seront utilisées. - Le pivotement multicolonne produit un index de colonnes à plusieurs niveaux, le premier niveau étant les noms de colonnes d'origine et le second niveau étant les valeurs du paramètre columns.
- Cette approche facilite la comparaison simultanée des performances de plusieurs métriques selon différentes dimensions.
Exemple 3 : Index à plusieurs niveaux - Utilisation de plusieurs colonnes comme index de lignes
Vous pouvez utiliser plusieurs colonnes pour créer un tableau croisé dynamique avec un index hiérarchique.
Exemples
# 1. Créer des données contenant des informations sur l'année, le trimestre et le produit
data = pd.DataFrame({
'year': [2023, 2023, 2023, 2023, 2024, 2024, 2024, 2024],
'quarter': ['Q1', 'Q1', 'Q2', 'Q2', 'Q1', 'Q1', 'Q2', 'Q2'],
'product': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
'sales': [100, 150, 200, 180, 220, 250, 230, 270]
})
print("=== Données originales ===")
print(data)
# 2. Utiliser plusieurs colonnes comme index de lignes (sous forme de liste)
print("n=== Pivot d'index de lignes à plusieurs niveaux ===")
pivot_multi = data.pivot(index=['year', 'quarter'], columns='product', values='sales')
print(pivot_multi)
# 3. Réinitialiser l'index, convertir en DataFrame standard
print("n=== Après réinitialisation de l'index ===")
pivot_reset = pivot_multi.reset_index()
print(pivot_reset)
Sortie attendue :
=== 原始数据 === year quarter product sales 0 2023 Q1 A 100 1 2023 Q1 B 150 值会抛出错误 - 这是 pivot() 和 pivot_table() 的关键区别:pivot() 要求数据唯一性,pivot_table() 会自动聚合重复值
Explication du code :
- En utilisant
index=['year', 'quarter']vous pouvez créer un tableau croisé dynamique avec un index de lignes à plusieurs niveaux. - Ce format facilite l'analyse des performances de différents produits selon la dimension temporelle.
- Utiliser
reset_index()pour reconvertir l'index hiérarchique en colonnes normales.
Autres extensionsRemarque :Si les données d'origine contiennent la même combinaison index + columns,
pivot()lèveraValueError: Index contains duplicate entries. Dans de tels cas, vous devez utiliserpivot_table(), qui agrège automatiquement les valeurs dupliquées.
Fonctions courantes de Pandas