Skip to content
Anleitungen
Pandas
Pandas Crosstab: Einfache Kreuztabellen in Python erstellen

Pandas Crosstab: Einfache Kreuztabellen in Python erstellen

Kreuztabellen sind ein mächtiges Werkzeug in der Datenanalyse und ermöglichen es uns, die Beziehung zwischen zwei oder mehr kategorialen oder diskreten Variablen zu untersuchen. Dieser Artikel wird sich mit der pandas crosstab-Funktion befassen, einer Funktion in der Python-Bibliothek pandas, die die Erstellung von Kreuztabellen vereinfacht. Wir werden uns anschauen, was pandas crosstab ist, wie es sich von der pivot table-Funktion unterscheidet und wie man es effektiv zur Datenmanipulation verwendet.

Pandas ist ein beliebtes Werkzeug zur Datenmanipulation in Python und bietet eine Vielzahl von Funktionen für die Datenanalyse. Eine solche Funktion ist crosstab, die einfache Kreuztabellen ermöglicht und eine einfache und effektive Möglichkeit bietet, die Beziehungen in Ihren Daten zu verstehen. Egal, ob Sie ein erfahrener Datenanalyst oder ein Anfänger auf diesem Gebiet sind, das Verständnis dafür, wie man pandas crosstab verwendet, kann Ihre Datenmanipulationsfähigkeiten erheblich verbessern.

Möchten Sie schnell Data Visualization von Python Pandas Dataframe erstellen, ohne Code?

PyGWalker ist eine Python-Bibliothek für Exploratory Data Analysis mit Visualisierung. PyGWalker (opens in a new tab) kann Ihren Jupyter Notebook Datenanalyse- und Datenvisualisierungs-Workflow vereinfachen, indem es Ihren pandas DataFrame (und Polars DataFrame) in eine Tableau-ähnliche Benutzeroberfläche für die visuelle Exploration verwandelt.

PyGWalker zur Datenvisualisierung (opens in a new tab)

Was ist Pandas Crosstab?

Pandas crosstab ist eine Funktion, die eine einfache Möglichkeit bietet, eine Kreuztabellierung von zwei (oder mehr) Faktoren zu erstellen. Es berechnet eine einfache Kreuztabellierung von zwei oder mehr Datenarrays. Standardmäßig wird eine Häufigkeitstabelle der Faktoren bereitgestellt, es sei denn, es werden ein Array von Werten und eine Aggregationsfunktion übergeben.

Hier ist ein grundlegendes Beispiel, wie man pandas crosstab verwendet:

import pandas as pd
 
## Beispieldaten
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
        'B': ['one', 'one', 'two', 'two', 'one', 'one'],
        'C': ['small', 'large', 'large', 'small', 'small', 'large'],
        'D': [1, 2, 2, 3, 3, 4]}
df = pd.DataFrame(data)
 
## Verwende crosstab
table = pd.crosstab(df['A'], df['B'])
print(table)

In diesem Beispiel erstellen wir ein DataFrame aus einem Wörterbuch und verwenden dann pandas crosstab, um eine Kreuztabellentabelle zu erstellen, die die Häufigkeit der 'B'-Kategorien für jede 'A'-Kategorie zeigt.

Sollte ich Pivot Table oder Crosstab in Pandas verwenden?

Obwohl sowohl Pivot-Tabellen als auch Kreuztabellen in pandas ähnliche Zwecke erfüllen, werden sie in leicht unterschiedlichen Szenarien verwendet. Die Pivot-Tabelle ist eine allgemeinere Lösung, um aus einer gegebenen Tabelle eine neue abgeleitete Tabelle zu erstellen. Andererseits ist Crosstab spezialisierter für die Berechnung von Gruppenhäufigkeiten.

Die Pivot-Tabelle kann mit verschiedenen Arten von Eingabedaten umgehen und kann mehrere Index- und Spaltennamen verarbeiten, während Crosstab hauptsächlich für Häufigkeitstabellen verwendet wird. Wenn Sie also eine Häufigkeitstabelle erstellen möchten, ist pandas crosstab der richtige Weg. Wenn Sie jedoch komplexere Datenmanipulationsaufgaben haben, ist eine Pivot-Tabelle möglicherweise eine bessere Wahl.

Wie definiere ich Crosstab in Python?

Die Definition einer Crosstab-Tabelle in Python mit Hilfe von pandas ist einfach. Die grundlegende Syntax zur Erstellung einer Crosstab-Tabelle lautet wie folgt:

pd.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name: str = 'All', dropna: bool = True, normalize=False)

Das bedeutet jeder Parameter:

  • index: array-ähnlich, Werte, nach denen in den Zeilen gruppiert werden soll.
  • columns: array-ähnlich, Werte, nach denen in den Spalten gruppiert werden soll.
  • values: array-ähnlich, optional, Array von Werten, nach denen aggregiert werden soll.
  • rownames: Sequenz, Standardwert None, muss mit der Anzahl der übergebenen Reihenarrays übereinstimmen, wenn übergeben.
  • colnames: Sequenz, Standardwert None, muss mit der Anzahl der übergebenen Spaltenarrays übereinstimmen, wenn übergeben.
  • aggfunc: Funktion, optional, erfordert auch die Angabe von values, wenn übergeben.
  • margins: bool, Standardwert False, fügt Zeilen-/Spaltengesamtheiten (Zwischensummen) hinzu.
  • margins_name: Str, Standardwert 'All', Name der Zeile/Spalte, die die Gesamtsummen enthält, wenn margins True ist.
  • dropna: bool, Standardwert True, schließt Spalten aus, deren Einträge alle NaN sind.
  • normalize: bool, columns, oder 1, Standardwert False. Normalisiert, indem alle Werte durch die Summe der Werte geteilt werden.

Wie erstelle ich eine Crosstab-Tabelle mit Prozentangaben in Pandas?

Die Erstellung einer Crosstab-Tabelle mit Prozentangaben in pandas ist recht einfach. Sie müssen nur den normalize-Parameter auf True setzen oder die Achse (Index oder Spalten) angeben, die Sie normalisieren möchten. Hier ist ein Beispiel:

import pandas as pd
 
## Beispieldaten
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
        'B': ['one', 'one', 'two', 'two', 'one', 'one'],
        'C': ['small', 'large', 'large', 'small', 'small', 'large'],
        'D': [1, 2, 2, 3, 3, 4]}
df = pd.DataFrame(data)
 
## Verwende crosstab mit Normalisierung
table = pd.crosstab(df['A'], df['B'], normalize=True)
print(table)

In diesem Beispiel zeigt die Crosstab-Tabelle das Verhältnis jeder Kategorie anstelle der Anzahl und bietet so ein klareres Bild von der Verteilung der Kategorien.

Was sind einige einfache Möglichkeiten, Crosstab in Pandas zu machen?

Es gibt mehrere Möglichkeiten, Kreuztabellen in pandas zu erstellen, und die beste Methode hängt von Ihren spezifischen Anforderungen ab. Hier sind drei einfache Möglichkeiten, Kreuztabellen zu erstellen:

  1. Grundlegende Crosstab: Die einfachste Möglichkeit, eine Crosstab-Tabelle zu erstellen, besteht darin, zwei Serien an die pandas crosstab-Funktion zu übergeben, die eine Häufigkeitstabelle bereitstellt.

  2. Kreuztabelle mit Aggregation: Wenn Sie eine dritte Werteserie haben, können Sie sie zusammen mit einer Aggregationsfunktion (wie z. B. Durchschnitt, Summe usw.) an die Kreuztabellenfunktion übergeben, um eine komplexere Kreuztabelle zu erhalten.

  3. Kreuztabelle mit Normalisierung: Durch das Setzen des Parameters normalize auf True können Sie eine Kreuztabelle erstellen, die den Anteil jeder Kategorie zeigt, was nützlich sein kann, um die Verteilung der Kategorien zu verstehen.

Beispiel für Pandas-Kreuztabelle

Lassen Sie uns ein praktisches Beispiel für die Verwendung der Pandas-Kreuztabelle betrachten. Angenommen, wir haben einen Datensatz über die Verkäufe eines Ladens, einschließlich des verkauften Produkttyps, des Verkäufers und der Anzahl der verkauften Einheiten. Wir möchten eine Kreuztabelle erstellen, die die insgesamt verkauften Einheiten jedes Verkäufers für jeden Produkttyp zeigt.

import pandas as pd
 
# Beispiel-Daten
data = {'Product': ['Äpfel', 'Orangen', 'Bananen', 'Äpfel', 'Bananen', 'Bananen'],
        'Verkäufer': ['John', 'John', 'Claire', 'Claire', 'John', 'Claire'],
        'Einheiten': [5, 3, 8, 7, 2, 4]}
df = pd.DataFrame(data)
 
# Verwendung der Kreuztabelle mit Aggregation
tabelle = pd.crosstab(df['Verkäufer'], df['Product'], values=df['Einheiten'], aggfunc='sum')
print(tabelle)

In diesem Beispiel zeigt die Kreuztabelle die Gesamteinheiten jedes Produkttyps, die von jedem Verkäufer verkauft wurden. Dies ist eine leistungsstarke Möglichkeit, Ihre Daten zusammenzufassen und zu visualisieren.

Wie man eine Kreuztabelle in Pandas sortiert

Das Sortieren einer Kreuztabelle in Pandas ist so einfach wie die Verwendung der Funktion sort_values. Sie können nach einer bestimmten Spalte oder nach dem Index sortieren. Hier ein Beispiel:

# Fortsetzung des vorherigen Beispiels
# Sortieren nach 'Äpfel'
tabelle = tabelle.sort_values('Äpfel', ascending=False)
print(tabelle)

In diesem Beispiel wird die Kreuztabelle nach der Spalte 'Äpfel' absteigend sortiert. Sie können dies leicht ändern, um nach einer anderen Spalte oder in aufsteigender Reihenfolge zu sortieren.

Pandas Kreuztabelle Zähler und Prozentsatz

Manchmal möchten Sie sowohl den Zähler als auch den Prozentsatz in Ihrer Kreuztabelle erhalten. Dies kann durch Erstellen von zwei Kreuztabellen und deren Konkatenation erreicht werden. So geht's:

# Fortsetzung des ersten Beispiels
# Erstellen Sie eine Zähler-Kreuztabelle
zähler_tabelle = pd.crosstab(df['Verkäufer'], df['Product'])
 
# Erstellen Sie eine Prozentsatz-Kreuztabelle
prozent_tabelle = pd.crosstab(df['Verkäufer'], df['Product'], normalize='index')
 
# Konkatenieren Sie die beiden Tabellen
endgültige_tabelle = pd.concat([zähler_tabelle, prozent_tabelle], keys=['Anzahl', 'Prozentsatz'])
print(endgültige_tabelle)

In diesem Beispiel zeigt die endgültige Kreuztabelle sowohl die Anzahl als auch den Prozentsatz jeder Kategorie. Dies kann sehr nützlich sein, um einen umfassenden Überblick über Ihre Daten zu erhalten.

FAQs

Was ist Pandas-Kreuztabelle?

Pandas-Kreuztabelle ist eine Funktion in der Python-Bibliothek Pandas, mit der Sie eine Kreuztabelle von zwei oder mehr Faktoren erstellen können. Sie bietet eine einfache und effektive Möglichkeit, die Beziehungen in Ihren Daten zu verstehen.

Wie definiert man eine Kreuztabelle in Python?

Das Definieren einer Kreuztabelle in Python mit Pandas ist einfach. Die grundlegende Syntax zum Erstellen einer Kreuztabelle lautet pd.crosstab(index, columns), wobei index und columns die Werte sind, nach denen in den Zeilen und Spalten gruppiert werden soll.

Wie erstellt man eine Kreuztabelle mit Prozentsätzen in Pandas?

Um eine Kreuztabelle mit Prozentsätzen in Pandas zu erstellen, müssen Sie den Parameter normalize auf True setzen oder die Achse (Index oder Spalten) angeben, die Sie normalisieren möchten. Dadurch wird eine Kreuztabelle erstellt, die den Anteil jeder Kategorie zeigt und ein klareres Bild der Verteilung der Kategorien liefert.