Fonction df.pivot() de Pandas

Pandas 常用函数Fonctions courantes 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 utiliserpivot_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

import pandas as pd

# 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 :

  1. Les données d'origine sont au format long, chaque ligne enregistrant les ventes d'un produit dans une certaine région.
  2. pivot()Utilisez la colonne product comme index de ligne, la colonne region comme index de colonne, et sales comme valeurs.
  3. 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

import pandas as pd

# 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 pasvaluesle 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

import pandas as pd

# 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 utilisantindex=['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.
  • Utiliserreset_index()pour reconvertir l'index hiérarchique en colonnes normales.

Remarque :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.

Pandas 常用函数Fonctions courantes de Pandas

Autres extensions