Pandas df.pivot()-Funktion
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 Sie
pivot_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
# 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:
- Die ursprünglichen Daten liegen im Long-Format vor, wobei jede Zeile den Umsatz eines Produkts in einer bestimmten Region aufzeichnet.
pivot()Verwende die Spalte product als Zeilenindex, die Spalte region als Spaltenindex und sales als Werte.- 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
# 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 angegeben
valuesParameter, 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
# 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 Sie
index=['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 Sie
reset_index()um den hierarchischen Index wieder in reguläre Spalten umzuwandeln.
Andere ErweiterungenHinweis: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 Häufige Funktionen