Wie funktioniert Datenanalyse mit pandas in Python?
In diesem Beitrag
- Was ist pandas – und warum ist es so zentral?
- Die zwei Kerndatenstrukturen: Series und DataFrame
- Daten laden und erste Orientierung
- Datenbereinigung: Fehlende Werte und Struktur prüfen
- Variablen auswählen, filtern und transformieren
- Gruppieren und aggregieren mit groupby
- Der vollständige Analyse-Workflow im Überblick
- Was kommt nach pandas?
Was ist pandas – und warum ist es so zentral?
pandas ist die wichtigste Python-Bibliothek für die tabellarische Datenanalyse. Sie liefert Datenstrukturen und Funktionen, mit denen sich Rohdaten aus CSV-Dateien, Excel-Tabellen, Datenbanken oder Umfragen komfortabel laden, bereinigen, umstrukturieren und auswerten lassen.
Entstanden ist pandas als direkte Antwort auf ein praktisches Problem: Python war zwar eine leistungsfähige Programmiersprache für wissenschaftliches Rechnen, bot aber keine geeigneten Werkzeuge für den Umgang mit tabellarischen und zeitindizierten Daten, wie sie in Statistik, Sozialforschung oder Finanzanalyse täglich anfallen. Das zentrale Ziel war es, Python um Datenstrukturen zu erweitern, die strukturierte, beschriftete Daten handhabbar machen und gleichzeitig als Bindeglied zu statistischen Modellen dienen.
Für Studierende und Forschende bedeutet das in der Praxis: pandas ist nicht nur ein Importwerkzeug. Es ist die zentrale Schicht zwischen Ihren Rohdaten und der eigentlichen statistischen Auswertung – ob t-Test, Regressionsanalyse oder ANOVA.
import pandas as pd genügt.Die zwei Kerndatenstrukturen: Series und DataFrame
Das gesamte pandas-Universum baut auf zwei Datenstrukturen auf. Wer diese beiden versteht, versteht pandas.
Series – die eindimensionale Datenreihe
Eine Series ist im Grunde eine beschriftete Liste: ein eindimensionales Array mit einem Index. Stellen Sie sich eine einzelne Spalte in einer Tabelle vor – zum Beispiel die Altersangaben Ihrer Befragten. Jeder Wert hat einen zugehörigen Label (den Index), über den er gezielt angesprochen werden kann.
import pandas as pd
alter = pd.Series([22, 25, 31, 28, 24], name="alter")
print(alter)
# 0 22
# 1 25
# 2 31
# 3 28
# 4 24
# Name: alter, dtype: int64
DataFrame – die zweidimensionale Tabelle
Ein DataFrame ist das Herzstück von pandas: eine zweidimensionale Tabelle mit beschrifteten Zeilen und Spalten. Jede Spalte ist eine Series. Gemeinsam bilden mehrere Spalten den vollständigen Datensatz – genau so, wie Sie es aus Excel oder SPSS kennen.
daten = {
"alter": [22, 25, 31, 28, 24],
"geschlecht": ["w", "m", "w", "d", "m"],
"testwert": [78.5, 82.0, 91.3, 74.8, 88.1]
}
df = pd.DataFrame(daten)
print(df)
Das Ergebnis: eine sauber strukturierte Tabelle mit 5 Zeilen und 3 Spalten – bereit für die Analyse.
Daten laden und erste Orientierung
In der Praxis erstellen Sie DataFrames selten manuell. Stattdessen laden Sie vorhandene Datensätze aus CSV- oder Excel-Dateien. pandas macht das mit zwei Funktionen denkbar einfach.
# CSV-Datei laden
df = pd.read_csv("datensatz.csv")
# Excel-Datei laden
df = pd.read_excel("datensatz.xlsx", sheet_name="Tabelle1")
Eine ausführliche Übersicht zu Import-Optionen – inklusive Trennzeichen, Encoding und fehlender-Werte-Markierungen – finden Sie im Beitrag zum Import von CSV- und Excel-Daten in Python.
Erste Orientierung im Datensatz
Nach dem Laden sollten Sie sich zunächst einen Überblick verschaffen. Diese vier Befehle gehören zum Standardrepertoire:
df.head()– zeigt die ersten 5 Zeilendf.tail()– zeigt die letzten 5 Zeilendf.info()– zeigt Datentypen, Spaltennamen und fehlende Werte auf einen Blickdf.describe()– berechnet deskriptive Statistiken (Mittelwert, Standardabweichung, Min, Max, Quartile) für alle numerischen Spalten
print(df.head())
print(df.info())
print(df.describe())
df.describe() ist dabei besonders praktisch: Mit einer einzigen Zeile erhalten Sie eine vollständige Übersicht der wichtigsten Kennzahlen – was in SPSS mehrere Klicks erfordert, erledigt pandas in Sekunden. Wer die Unterschiede zwischen Python und SPSS kennt, weiß diesen Vorteil schnell zu schätzen.
Datenbereinigung: Fehlende Werte und Struktur prüfen
Bevor Sie mit der eigentlichen Analyse beginnen, müssen Ihre Daten in einem analysegeeigneten Format vorliegen. Das klingt selbstverständlich, ist in der Praxis aber einer der häufigsten Stolpersteine – gerade wenn Rohdaten aus Umfragen, Excel-Exporten oder Experimenten stammen.
Ein grundlegendes methodisches Prinzip hilft hier zur Orientierung: In analytisch sinnvoll strukturierten Datensätzen bildet jede Variable eine Spalte, jede Beobachtung eine Zeile und jede Beobachtungseinheit eine eigene Tabelle. pandas-Operationen wie Gruppierungen, Joins und statistische Modelle setzen genau diese Struktur voraus. Wer Präsentationstabellen oder breit formatierte Übersichtstabellen direkt auswertet, ohne sie vorher umzustrukturieren, wird mit unerwarteten Ergebnissen konfrontiert.
Fehlende Werte erkennen und behandeln
Fehlende Werte werden in pandas als NaN (Not a Number) dargestellt. Sie entstehen beim Import, wenn Zellen leer sind, oder durch Berechnungen mit nicht zusammenpassenden Indizes.
# Fehlende Werte pro Spalte zählen
print(df.isna().sum())
# Zeilen mit fehlenden Werten entfernen
df_clean = df.dropna()
# Fehlende Werte mit dem Spaltenmittelwert auffüllen
df["testwert"] = df["testwert"].fillna(df["testwert"].mean())
Welche Strategie sinnvoll ist – listenweiser Ausschluss, spaltenweiser Ausschluss oder Imputation – hängt vom Forschungsdesign und dem Umfang der fehlenden Daten ab. Eine vertiefte Diskussion dazu bietet der Beitrag zum Umgang mit fehlenden Werten in Python.
df.isna().sum().Datentypen prüfen und korrigieren
Zahlen, die als Text eingelesen wurden, führen zu Fehlern in jeder statistischen Berechnung. df.info() zeigt den Datentyp jeder Spalte. Mit df["alter"] = df["alter"].astype(int) konvertieren Sie Spalten in den gewünschten Typ.
Variablen auswählen, filtern und transformieren
Sobald Ihre Daten bereinigt sind, geht es darum, relevante Variablen auszuwählen und ggf. neue zu berechnen. pandas bietet dafür eine klare und lesbare Syntax.
Spalten und Zeilen auswählen
# Eine einzelne Spalte auswählen (gibt eine Series zurück)
testwerte = df["testwert"]
# Mehrere Spalten auswählen (gibt einen DataFrame zurück)
teilmenge = df[["alter", "testwert"]]
# Zeilen nach Bedingung filtern
nur_weiblich = df[df["geschlecht"] == "w"]
# Kombinierte Bedingungen
jung_und_hoch = df[(df["alter"] < 27) & (df["testwert"] > 80)]
Neue Variablen berechnen
Neue Spalten lassen sich direkt als arithmetische Operationen bestehender Spalten erstellen – spaltenweise, ohne Schleifen:
# Z-Standardisierung von Hand
df["testwert_z"] = (df["testwert"] - df["testwert"].mean()) / df["testwert"].std()
# Kategorisierung mit cut()
df["altersgruppe"] = pd.cut(df["alter"], bins=[18, 25, 35, 50], labels=["jung", "mittel", "reif"])
Das ist deutlich eleganter als entsprechende Formeln in Excel – und vor allem reproduzierbar. Wer mehr über die Vorteile gegenüber tabellenbasierter Analyse erfahren möchte, findet im Beitrag Warum Python statt Excel für die Datenanalyse? eine fundierte Gegenüberstellung.
Gruppieren und aggregieren mit groupby
Eine der mächtigsten Funktionen in pandas ist groupby(). Sie arbeitet nach dem Prinzip Split – Apply – Combine: Der Datensatz wird nach einer oder mehreren Variablen aufgeteilt, eine Funktion wird auf jede Gruppe angewandt, und die Ergebnisse werden zusammengeführt.
# Mittlerer Testwert nach Geschlecht
mittelwerte = df.groupby("geschlecht")["testwert"].mean()
print(mittelwerte)
# Mehrere Kennzahlen auf einmal
kennzahlen = df.groupby("geschlecht")["testwert"].agg(["mean", "std", "count"])
print(kennzahlen)
# Mehrere Gruppierungsvariablen
df.groupby(["geschlecht", "altersgruppe"])["testwert"].mean()
Was in SPSS eine Kreuztabelle oder ein Means-Dialog ist, erledigt pandas in einer einzigen Zeile – mit vollständiger Kontrolle über das Ausgabeformat. Für weiterführende statistische Analysen auf Basis solcher Gruppenvergleiche empfiehlt sich ein Blick auf die verfügbaren Python-Tools für die Datenanalyse, die pandas sinnvoll ergänzen.
Der vollständige Analyse-Workflow im Überblick
In der Praxis folgt eine pandas-gestützte Datenanalyse einem klar strukturierten Ablauf. Die folgende Tabelle gibt Ihnen eine Orientierung:
| Schritt | Aufgabe | Wichtige Funktionen |
|---|---|---|
| 1 | Daten laden | read_csv(), read_excel() |
| 2 | Struktur prüfen | head(), info(), describe() |
| 3 | Fehlende Werte behandeln | isna(), dropna(), fillna() |
| 4 | Variablen auswählen & filtern | Spalten-Selektion, boolesche Indizierung |
| 5 | Variablen transformieren | Arithmetik, cut(), apply() |
| 6 | Gruppieren & aggregieren | groupby(), agg() |
| 7 | Visualisieren | df.plot(), matplotlib, seaborn |
| 8 | Ergebnisse exportieren | to_csv(), to_excel() |
Dieser Ablauf entspricht im Wesentlichen den klassischen Schritten einer Datenanalyse. Der entscheidende Punkt: Mit pandas decken Sie die Schritte 1 bis 6 vollständig ab, bevor Sie statistische Modelle aus scipy, statsmodels oder scikit-learn einbinden.
Ein vollständiges Mini-Beispiel
import pandas as pd
# 1. Daten laden
df = pd.read_csv("studie_ergebnisse.csv")
# 2. Struktur prüfen
print(df.info())
print(df.describe())
# 3. Fehlende Werte behandeln
print(df.isna().sum())
df = df.dropna(subset=["testwert"])
# 4. Filtern: nur Teilnehmende ab 18 Jahren
df = df[df["alter"] >= 18]
# 5. Neue Variable berechnen
df["testwert_z"] = (df["testwert"] - df["testwert"].mean()) / df["testwert"].std()
# 6. Gruppieren und aggregieren
ergebnis = df.groupby("gruppe")["testwert"].agg(["mean", "std", "count"])
print(ergebnis)
# 7. Ergebnis exportieren
ergebnis.to_csv("deskriptive_statistiken.csv")
Dieser Code ist vollständig lauffähig und deckt einen realistischen Auswertungsablauf für eine empirische Abschlussarbeit ab. Wie Sie Ihre Ergebnisse anschließend dokumentationsgerecht aufbereiten, beschreibt der Beitrag zum Export von Python-Ergebnissen für die Abschlussarbeit.
Was kommt nach pandas?
pandas ist die Grundlage – aber keine vollständige Statistiksoftware. Für inferenzstatistische Verfahren brauchen Sie zusätzliche Bibliotheken, die nahtlos auf pandas-DataFrames aufbauen:
- scipy.stats – für klassische Tests (t-Test, Chi-Quadrat, Korrelation)
- statsmodels – für Regressionsmodelle, ANOVA und komplexe lineare Modelle
- matplotlib / seaborn – für professionelle Datenvisualisierungen
- scikit-learn – für maschinelles Lernen und prädiktive Modelle
Den Unterschied zwischen scipy und statsmodels – und wann welche Bibliothek sinnvoller ist – erklärt der Beitrag zum Vergleich von statsmodels und scipy.
Wenn Sie unsicher sind, ob pandas für Ihre konkrete Fragestellung das richtige Werkzeug ist, oder wenn Sie Unterstützung bei der statistischen Auswertung Ihrer Abschlussarbeit benötigen, finden Sie bei unserer Python-Hilfe und Beratung für statistische Auswertungen erfahrene Unterstützung – von der Datenaufbereitung bis zur Ergebnisinterpretation.
Einen umfassenden Einstieg in das gesamte Themenfeld bietet außerdem der Übersichtsartikel zur Datenanalyse mit Python, der alle relevanten Werkzeuge, Verfahren und Anwendungsfälle zusammenführt.