pivot_table: Kreuztabellen
Erstellen Sie mit pd.pivot_table Pivot-Tabellen im Excel-Stil und legen Sie index, columns, values und aggfunc fest.
pivot_table: Kreuztabellen ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist eine Pivot-Tabelle?
Eine Pivot-Tabelle ist eine Kreuztabelle, die Daten anhand zweier kategorialer Dimensionen zusammenfasst — eine bildet die Zeilen, die andere die Spalten — und in jeder Zelle einen aggregierten Wert enthält. Wenn Sie schon einmal eine Pivot-Tabelle in Excel erstellt haben, wird Ihnen das Konzept sofort vertraut sein. Pandas stellt pd.pivot_table() (sowie die entsprechende DataFrame-Methode) bereit, um solche Zusammenfassungen vollständig in Python zu erstellen.
Einfacher Aufruf von pivot_table
Die vier wichtigsten Parameter von pd.pivot_table() sind: values (die zu aggregierende Spalte), index (die Spalte, die zu den Zeilen wird), columns (die Spalte, die zu den Spalten wird) und aggfunc (die Aggregationsfunktion, standardmäßig 'mean'). Das Ergebnis ist ein DataFrame, in dem jede Zelle den aggregierten Wert für die entsprechende Zeilen-Spalten-Kombination enthält.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'West', 'East', 'West', 'East', 'West'],
'product': ['A', 'A', 'B', 'B', 'A', 'B'],
'revenue': [200, 340, 150, 290, 310, 410]
})
table = pd.pivot_table(df,
values='revenue',
index='region',
columns='product',
aggfunc='sum')
print(table)
# product A B
# region
# East 510 150
# West 340 700Die passende aggfunc auswählen
Der Parameter aggfunc akzeptiert jeden als Zeichenkette angegebenen Namen einer NumPy-/Pandas-Aggregationsfunktion, ein aufrufbares Objekt oder eine Liste aufrufbarer Objekte. Häufige Optionen sind: 'sum' für Summen, 'mean' für Mittelwerte, 'count' für Häufigkeiten sowie 'min'/'max' für Extremwerte. Wenn Sie eine Liste übergeben, erhält jede Aggregation eine eigene Ebene im Spalten-MultiIndex.
# Using mean (default)
table_mean = pd.pivot_table(df, values='revenue',
index='region', columns='product',
aggfunc='mean')
print(table_mean.round(1))
# product A B
# region
# East 255.0 150.0
# West 340.0 350.0
# Using count
table_count = pd.pivot_table(df, values='revenue',
index='region', columns='product',
aggfunc='count')
print(table_count)Fehlende Zellen mit fill_value behandeln
Wenn für eine Kombination aus Zeilen- und Spaltenbezeichnungen keine Daten vorhanden sind, enthält die Zelle standardmäßig NaN. Übergeben Sie fill_value, um diese fehlenden Zellen durch einen sinnvollen Standardwert zu ersetzen, etwa 0 für Anzahlen oder Umsätze. Dadurch wird die Tabelle übersichtlicher und verhindert, dass nachfolgende arithmetische Operationen unbemerkt Ergebnisse mit NaN erzeugen.
df2 = pd.DataFrame({
'region': ['East', 'West', 'East'],
'product': ['A', 'A', 'B'],
'revenue': [200, 340, 150]
})
# West-B combination has no data -> NaN by default
table = pd.pivot_table(df2, values='revenue', index='region',
columns='product', aggfunc='sum', fill_value=0)
print(table)
# product A B
# region
# East 200 150
# West 340 0 <- filled with 0 instead of NaNZwischensummen mit margins hinzufügen
Übergeben Sie margins=True, um der Pivot-Tabelle Zeilen- und Spaltensummen hinzuzufügen. Pandas hängt unten eine Zeile 'All' und rechts eine Spalte 'All' an. Beide enthalten die aggregierten Werte über alle Kategorien hinweg. Mit margins_name können Sie die Bezeichnung der Summen ändern. Das entspricht der Zeile „Gesamtsumme“ in Excel-Pivot-Tabellen.
table = pd.pivot_table(df, values='revenue', index='region',
columns='product', aggfunc='sum',
fill_value=0, margins=True, margins_name='Total')
print(table)
# product A B Total
# region
# East 510 150 660
# West 340 700 1040
# Total 850 850 1700Mehrere Werte in pivot_table
Der Parameter values kann eine Liste von Spaltennamen enthalten, um mehrere Kennzahlen gleichzeitig zu aggregieren. Das Ergebnis besitzt einen Spalten-MultiIndex, dessen äußere Ebene die Wertespalte und dessen innere Ebene die Kategorie bildet. So können Sie mit einem einzigen Aufruf eine umfassende Übersichtstabelle erstellen, anstatt mehrere separate Pivot-Tabellen aufzubauen und zusammenzuführen.
df['units'] = [10, 15, 8, 12, 14, 18]
table = pd.pivot_table(df,
values=['revenue', 'units'],
index='region',
columns='product',
aggfunc='sum')
print(table)
# Columns: (revenue, A), (revenue, B), (units, A), (units, B)
print(table.columns.tolist())Hierarchische Indizes und Spalten
Wenn Sie eine Liste an index oder columns übergeben, besitzt die Pivot-Tabelle auf der entsprechenden Achse einen MultiIndex. Dadurch können Sie detailliertere Zusammenfassungen erstellen — beispielsweise den Umsatz in den Zeilen nach Region und Quartal sowie in den Spalten nach Produkt aufschlüsseln. Auf untergeordnete Ebenen greifen Sie wie gewohnt mit .loc und Index-Tupeln zu.
df['quarter'] = ['Q1', 'Q1', 'Q2', 'Q2', 'Q1', 'Q2']
table = pd.pivot_table(df, values='revenue',
index=['region', 'quarter'],
columns='product',
aggfunc='sum', fill_value=0)
print(table)
# product A B
# region quarter
# East Q1 510 0
# Q2 0 150
# West Q1 340 0
# Q2 0 700Das Ergebnis abflachen
Nach dem Erstellen einer Pivot-Tabelle ist der Index die Gruppierungsspalte, und der Spalten-MultiIndex (bei Verwendung mehrerer Werte) kann unhandlich sein. Ein häufig verwendetes Bereinigungsmuster besteht darin, reset_index() aufzurufen, um den Zeilenindex abzuflachen, und anschließend den Spalten-MultiIndex durch Verbinden seiner Ebenen mit einem Unterstrich mithilfe eines List Comprehensions auf eine einzelne Ebene zu reduzieren.
table = pd.pivot_table(df, values=['revenue', 'units'],
index='region', columns='product', aggfunc='sum')
# Flatten MultiIndex columns
table.columns = ['_'.join(str(c) for c in col) for col in table.columns]
table = table.reset_index()
print(table.columns.tolist())
# ['region', 'revenue_A', 'revenue_B', 'units_A', 'units_B']pivot_table vs. groupby().agg()
Sowohl pivot_table als auch groupby().agg() erzeugen zusammengefasste Statistiken. Der Unterschied liegt in der Form der Ausgabe: groupby().agg() gibt einen DataFrame im Long-Format mit einer Zeile pro Gruppenkombination zurück, während pivot_table eine Tabelle im Wide-Format zurückgibt, in der eine Dimension zu Spalten wird. Für Dashboards und Berichte ist das Wide-Format von Pivot-Tabellen oft übersichtlicher; für weiterführendes Machine Learning oder statistische Analysen wird das Long-Format bevorzugt.
# Long format (groupby)
long = df.groupby(['region', 'product'])['revenue'].sum().reset_index()
print(long)
# region product revenue
# East A 510
# East B 150
# Wide format (pivot_table)
wide = pd.pivot_table(df, 'revenue', 'region', 'product', 'sum', fill_value=0)
print(wide)
# product A B
# region
# East 510 150Pivot-Tabelle sortieren und formatieren
Eine Pivot-Tabelle ist ein gewöhnlicher DataFrame. Sie können sie daher sortieren, abgeleitete Spalten berechnen und genau wie jeden anderen Pandas-DataFrame formatieren. Sortieren Sie beispielsweise absteigend nach einer bestimmten Produktspalte, um Regionen nach ihrer Leistung für dieses Produkt zu ordnen, oder fügen Sie eine Prozentspalte hinzu, indem Sie jede Zelle durch die Zeilensumme teilen.
table = pd.pivot_table(df, 'revenue', 'region', 'product', 'sum', fill_value=0)
# Sort by product A revenue descending
table_sorted = table.sort_values('A', ascending=False)
print(table_sorted)
# Add percentage of row total
table['A_pct'] = (table['A'] / table.sum(axis=1) * 100).round(1)
print(table)Praktische Anwendung: Tabelle für ein Vertriebs-Dashboard
Pivot-Tabellen sind ein zentrales Werkzeug zum Erstellen von Managementberichten und Dashboards. Ein typischer Arbeitsablauf sieht so aus: Rohdaten zu Transaktionen laden, eine Pivot-Tabelle mit Monaten als Spalten und Produktkategorien als Zeilen erstellen, Summen hinzufügen und anschließend nach Excel exportieren. Der gesamte Ablauf von den Rohdaten bis zur präsentationsreifen Tabelle erfordert nur wenige Pandas-Aufrufe.
# Simulated monthly product revenue pivot
result = pd.pivot_table(
df,
values='revenue',
index='product',
columns='region',
aggfunc='sum',
fill_value=0,
margins=True,
margins_name='Grand Total'
)
print(result)
# Export to Excel
# result.to_excel('sales_pivot.xlsx')Schnelltest
Testen Sie Ihr Verständnis von pd.pivot_table aus dieser Lektion.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: pd.pivot_table() erstellt Kreuztabellen-Zusammenfassungen mit einer Dimension als Zeilen und einer anderen als Spalten; fill_value behandelt fehlende Zellen und margins=True fügt Summen hinzu; Sie können mehrere Werte gleichzeitig aggregieren; und Pivot-Tabellen erzeugen eine Ausgabe im Wide-Format, die sich ideal für Berichte eignet. Als Nächstes sehen wir uns die umgekehrte Operation an: Mit melt() wandeln Sie breite Daten zurück in das Long-Format um.
Lerne Python mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „pivot_table: Kreuztabellen“ kostenlos?
Ja — der vollständige Text von „pivot_table: Kreuztabellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „pivot_table: Kreuztabellen“?
Erstellen Sie mit pd.pivot_table Pivot-Tabellen im Excel-Stil und legen Sie index, columns, values und aggfunc fest. Du übst Pandas & NumPy Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Pandas & NumPy Academy zu starten?
Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „pivot_table: Kreuztabellen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Pandas & NumPy Academy-Lektion Code schreiben und ausführen?
Ja. Jede Pandas & NumPy Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- pivot_table: Kreuztabellen
- melt: Vom Breit- ins Langformat
- stack und unstack mit MultiIndex
- crosstab für Häufigkeitstabellen