Pandas df.pivot()-Funktion

Pandas 常用函数Pandas Häufige Funktionen


df.pivot()ist eine Member-Methode von DataFrame, die verwendet wird, umPivot-Tabellen zu erstellen. Sie kann Daten in ein neues Layout umformen, basierend auf dem angegebenen Zeilenindex, Spaltenindex und den Wertspalten.

undpivot_table()Im Gegensatz dazupivot()unterstützt es keine Aggregationsoperationen und erfordert, dass die Kombination aus Zeilenindex und Spaltenindex eindeutig ist; andernfalls wird ein Fehler ausgelöst.

Wortdefinition: pivotBedeutet „drehen, pivotieren“. Hier bezieht es sich auf die „rotierende“ Umformung von Daten, wodurch Zeilen- und Spaltendimensionen wie bei einer Pivot-Tabelle dynamisch umgeschaltet werden können.


Grundlegende Syntax und Parameter

df.pivot()ist eine Instanzmethode von DataFrame, die über den Punktoperator aufgerufen wird.

Syntaxformat

DataFrame.pivot(index=None, columns, values=None)

Parameterbeschreibung

  • Parameter: index
    • Typ: Spaltenname, Label, Label-Liste oder None.
    • Beschreibung: Die Spalte, die als Zeilenindex des neuen DataFrame verwendet wird. Wenn None, wird der vorhandene Zeilenindex verwendet.
  • Parameter: columns
    • Typ: Spaltenname oder Beschriftung.
    • Beschreibung:Erforderlicher Parameter. Die Spalte, die als Spaltenindex des neuen DataFrame verwendet wird, um eindeutige Werte in Spaltennamen zu erweitern.
  • Parameter: values
    • Typ: Spaltenname, Label, Label-Liste oder None.
    • Beschreibung: Die Datenspalte, die zum Füllen des DataFrame verwendet wird. Wenn nicht angegeben, werden alle Spalten außer index und columns verwendet.

Funktionsbeschreibung

  • Rückgabewert: Gibt ein neues DataFrame zurück, d. h. die Pivot-Tabelle.
  • Einschränkung: Wenn die Kombination aus index und columns doppelte Werte enthält, wird ein ValueError ausgelöst. In solchen Fällen sollten Siepivot_table()verwenden, was automatisch eine Aggregation durchführt.

Beispiele

Lassen Sie uns anhand einer Reihe von Beispielen von einfach bis komplex gründlich meisterndf.pivot()die Verwendung von

Beispiel 1: Grundlegende Verwendung - Erstellen einer einfachen Pivot-Tabelle

Beispiele

import pandas as pd

# 1. Verkaufsdaten erstellen (jede Zeile enthält eine Produkt-Region-Umsatz-Kombination)
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("=== Ursprüngliche Verkaufsdaten ===")
print(sales)

# 2. Verwende df.pivot(), um eine Pivot-Tabelle zu erstellen
# Zeilenindex: product, Spaltenindex: region, Wert: sales
pivot_result = sales.pivot(index='product', columns='region', values='sales')
print("n=== df.pivot() Pivot-Tabelle ===")
print(pivot_result)

Erwartete Ausgabe:

=== 原始销售数据 ===
  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

Code-Erklärung:

  1. Die ursprünglichen Daten liegen im Long-Format vor, wobei jede Zeile den Umsatz eines Produkts in einer bestimmten Region aufzeichnet.
  2. pivot()Verwende die Spalte product als Zeilenindex, die Spalte region als Spaltenindex und sales als Werte.
  3. Das Ergebnis ist eine übersichtliche zweidimensionale Tabelle, die einen intuitiven Vergleich der Verkäufe verschiedener Produkte in verschiedenen Regionen ermöglicht.

Beispiel 2: Mehrere Wertspalten - Mehrere Metriken gleichzeitig pivotieren

Du kannst mehrere numerische Spalten gleichzeitig pivotieren, um eine reichhaltigere Datenansicht zu erhalten.

Beispiele

import pandas as pd

# 1. Daten mit sales und quantity erstellen
sales = pd.DataFrame({
    'product': ['A', 'A', 'B', 'B', 'A', 'A', 'B', 'B'],
    'region': ['North', 'South', 'North', 'South', 'East', 'West', 'East', 'West'],
    'sales': [100, 150, 200, 180, 120, 130, 190, 210],
    'quantity': [10, 15, 20, 18, 12, 13, 19, 21]
})

print("=== Originaldaten ===")
print(sales)

# 2. Nur sales pivotieren
print("n=== Sales Pivot Table ===")
sales_pivot = sales.pivot(index='product', columns='region', values='sales')
print(sales_pivot)

# 3. sales und quantity pivotieren (ohne values anzugeben, alle numerischen Spalten verwenden)
print("n=== Multi-metric Pivot ===")
multi_pivot = sales.pivot(index='product', columns='region')
print(multi_pivot)

Erwartete Ausgabe:

=== 原始数据 ===
  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

Code-Erklärung:

  • Wenn nicht angegebenvaluesParameter, alle Spalten außer index und columns werden verwendet.
  • Mehrspaltiges Pivotieren erzeugt einen mehrstufigen Spaltenindex, wobei die erste Ebene die ursprünglichen Spaltennamen und die zweite Ebene die Werte des columns-Parameters sind.
  • Dieser Ansatz erleichtert den gleichzeitigen Vergleich der Leistung mehrerer Metriken über verschiedene Dimensionen hinweg.

Beispiel 3: Mehrstufiger Index - Mehrere Spalten als Zeilenindex verwenden

Sie können mehrere Spalten verwenden, um eine Pivot-Tabelle mit hierarchischem Index zu erstellen.

Beispiele

import pandas as pd

# 1. Daten mit Jahr, Quartal und Produktinformationen erstellen
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("=== Originaldaten ===")
print(data)

# 2. Mehrere Spalten als Zeilenindex verwenden (in Listenform)
print("n=== Mehrstufiger Zeilenindex-Pivot ===")
pivot_multi = data.pivot(index=['year', 'quarter'], columns='product', values='sales')
print(pivot_multi)

# 3. Index zurücksetzen, in ein reguläres DataFrame umwandeln
print("n=== Nach dem Zurücksetzen des Index ===")
pivot_reset = pivot_multi.reset_index()
print(pivot_reset)

Erwartete Ausgabe:

=== 原始数据 ===
   year quarter product  sales
0  2023      Q1       A    100
1  2023      Q1       B    150
值会抛出错误
- 这是 pivot() 和 pivot_table() 的关键区别:pivot() 要求数据唯一性,pivot_table() 会自动聚合重复值

Code-Erklärung:

  • Indem Sieindex=['year', 'quarter']Sie können eine Pivot-Tabelle mit mehrstufigem Zeilenindex erstellen.
  • Dieses Format erleichtert die Analyse der Performance verschiedener Produkte entlang der Zeitdimension.
  • Verwenden Siereset_index()um den hierarchischen Index wieder in reguläre Spalten umzuwandeln.

Hinweis:Wenn die ursprünglichen Daten dieselbe Kombination aus Index + Spalten enthalten,pivot()wird einen Fehler auslösenValueError: Index contains duplicate entries. In solchen Fällen sollten Siepivot_table(), die automatisch doppelte Werte aggregiert.

Pandas 常用函数Pandas Häufige Funktionen

Andere Erweiterungen