Wie importiert man CSV- und Excel-Daten in Python?
In diesem Beitrag
CSV und Excel: Was steckt dahinter?
Für die meisten empirischen Auswertungen ist der Datenimport der erste und entscheidende Schritt. In Python erledigen Sie das in aller Regel mit der Bibliothek pandas – zwei Funktionen genügen dabei für den Großteil aller Anwendungsfälle: pd.read_csv() und pd.read_excel().
Bevor es an die konkrete Umsetzung geht, lohnt ein kurzer Blick auf das Format selbst. CSV ist zwar ein weit verbreitetes Austauschformat für Tabellendaten, aber keineswegs vollständig standardisiert – verschiedene Programme nutzen unterschiedliche Trennzeichen, Anführungszeichen oder Zeilenumbrüche, was beim Import zu unerwarteten Fehlern führen kann. Wer das weiß, ist beim Einlesen eigener Umfragedaten oder exportierter SPSS-Datensätze deutlich besser vorbereitet.
Für die Datenanalyse mit Python ist pandas das zentrale Werkzeug – und der Import ist der Ausgangspunkt jeder Analyse.
CSV-Dateien mit pandas importieren
Der einfachste Fall sieht so aus: Sie haben eine CSV-Datei auf Ihrem Rechner und möchten sie als DataFrame laden. Das gelingt mit einer einzigen Zeile:
import pandas as pd
# Einfacher CSV-Import
df = pd.read_csv("daten/umfrage_ergebnisse.csv")
# Ersten Überblick verschaffen
print(df.head())
print(df.shape)
print(df.dtypes)
Mit df.head() sehen Sie die ersten fünf Zeilen, df.shape zeigt Ihnen Zeilen- und Spaltenanzahl, und df.dtypes listet auf, welche Datentypen pandas automatisch vergeben hat. Dieser kurze Kontrollblock sollte nach jedem Import zur Routine werden.
Neben lokalen Dateipfaden akzeptiert read_csv() auch direkte URLs – etwa zu Datensätzen auf GitHub, institutionellen Repositorien oder öffentlichen Datenportalen. Das ist besonders nützlich, wenn Sie mit öffentlich zugänglichen Forschungsdaten arbeiten.
Wichtige Parameter für den CSV-Import
In der Praxis sind DACH-Datensätze selten so formatiert, dass ein simpler read_csv()-Aufruf ohne weitere Anpassung funktioniert. Für reale Datensätze sind Parameter wie sep, decimal, encoding und usecols oft entscheidend – gerade weil europäische Exporte häufig Semikolons als Trennzeichen und Kommas als Dezimaltrennzeichen verwenden.
Die folgende Tabelle gibt einen Überblick über die wichtigsten Parameter:
| Parameter | Bedeutung | Typischer Wert (DACH) |
|---|---|---|
sep |
Trennzeichen zwischen Spalten | ";" (häufig bei deutschen Exporten) |
decimal |
Dezimaltrennzeichen | "," |
encoding |
Zeichenkodierung | "utf-8" oder "latin-1" |
usecols |
Nur bestimmte Spalten laden | ["alter", "geschlecht", "score"] |
dtype |
Datentypen explizit setzen | {"id": str, "alter": int} |
na_values |
Zusätzliche fehlende Werte definieren | ["99", "999", "-1"] |
parse_dates |
Datumsspalten automatisch parsen | ["datum_erhebung"] |
chunksize |
Datei in Blöcken einlesen | 1000 (bei großen Dateien) |
Ein realistisches Beispiel für einen deutschen Umfrage-Export könnte so aussehen:
import pandas as pd
df = pd.read_csv(
"daten/befragung_2024.csv",
sep=";", # Semikolon als Trennzeichen
decimal=",", # Komma als Dezimalzeichen
encoding="utf-8", # Zeichenkodierung
usecols=["vp_id", "alter", "geschlecht", "skala_item_1", "skala_item_2"],
dtype={"vp_id": str}, # ID immer als String laden
na_values=["99", "999", "n.a."], # Kodierungen für fehlende Werte
parse_dates=["erhebungsdatum"]
)
print(df.info())
print(df.isnull().sum())
sep=None setzen, damit pandas das Trennzeichen automatisch erkennt, funktioniert das nur mit der Python-Engine (engine="python"). Außerdem können mehrzeichen-Trennzeichen als reguläre Ausdrücke interpretiert werden und bei zitierten Feldern zu unerwarteten Ergebnissen führen. Im Zweifel: Trennzeichen lieber explizit angeben.Zum Umgang mit fehlenden Werten nach dem Import empfiehlt sich ein separater Schritt – wie Sie dabei systematisch vorgehen, erklärt unser Beitrag zum Thema fehlende Werte in Python behandeln.
Excel-Dateien mit pandas importieren
Excel-Dateien lassen sich mit pd.read_excel() einlesen. Die Funktion unterstützt alle gängigen Formate: xlsx, xls, xlsm, xlsb sowie OpenDocument-Formate wie ods. Für den Import älterer xls-Dateien wird die Bibliothek xlrd benötigt, für moderne xlsx-Dateien openpyxl.
Installieren Sie die benötigten Abhängigkeiten vorab:
pip install pandas openpyxl xlrd
Der grundlegende Import:
import pandas as pd
# Erstes Tabellenblatt importieren (Standard)
df = pd.read_excel("daten/rohdaten_studie.xlsx")
# Bestimmtes Tabellenblatt laden
df = pd.read_excel("daten/rohdaten_studie.xlsx", sheet_name="Auswertung")
# Alle Tabellenblätter als Dictionary laden
alle_blaetter = pd.read_excel("daten/rohdaten_studie.xlsx", sheet_name=None)
print(alle_blaetter.keys()) # Namen aller Blätter anzeigen
# Einzelnes Blatt aus dem Dictionary zugreifen
df_blatt1 = alle_blaetter["Rohdaten"]
Über den Parameter sheet_name=None lässt sich ein Wörterbuch mit allen Tabellenblättern einer Excel-Datei laden – besonders praktisch, wenn Ihre Rohdaten auf mehrere Blätter verteilt sind, etwa nach Erhebungszeitpunkten oder Gruppen.
Typische Stolpersteine beim Excel-Import
Excel-Dateien sind in der Praxis selten sauber strukturiert. Häufige Probleme sind Vorzeilen mit Metadaten, zusammengeführte Zellen, gemischte Datentypen innerhalb einer Spalte oder fehlende Werte, die als leere Zellen, Bindestriche oder Zahlen wie 99 kodiert sind.
Folgende Parameter helfen dabei:
import pandas as pd
df = pd.read_excel(
"daten/rohdaten_studie.xlsx",
sheet_name="Messzeitpunkt_1",
header=2, # Kopfzeile befindet sich in Zeile 3 (0-indiziert: 2)
skiprows=[3, 4], # Leerzeilen nach dem Header überspringen
usecols="A:F", # Nur Spalten A bis F laden
nrows=250, # Maximal 250 Datenzeilen laden
dtype={"vp_id": str, "gruppe": str},
na_values=["99", "-", "fehlt"],
engine="openpyxl" # Explizit die Engine angeben
)
print(df.head())
print(df.dtypes)
usecols können Sie entweder Excel-Spaltenbuchstaben wie "A:F" angeben oder eine Liste mit Spaltennamen wie ["vp_id", "alter", "gruppe"]. Letzteres ist reproduzierbarer, weil Spaltenreihenfolgen in Excel-Dateien sich ändern können, Namen aber meistens stabil bleiben.Sobald Ihre Daten sauber importiert sind, können Sie direkt mit der Analyse beginnen – etwa mit einem t-Test in Python oder einer Regressionsanalyse in Python.
Das csv-Modul der Standardbibliothek
Neben pandas gibt es noch das csv-Modul aus der Python-Standardbibliothek – also ohne zusätzliche Installation. Es ist weniger komfortabel, aber vollständig ohne externe Abhängigkeiten nutzbar und bietet ein hohes Maß an Kontrolle.
Ein wesentlicher Unterschied zu pandas: Das csv-Modul gibt Zeilen standardmäßig als Listen von Strings zurück und führt keine automatische Typkonvertierung durch. Wer also Zahlen addieren möchte, muss sie selbst mit int() oder float() umwandeln.
import csv
# Einfaches Einlesen mit DictReader (spaltenbasiert)
with open("daten/umfrage_ergebnisse.csv", newline="", encoding="utf-8") as f:
reader = csv.DictReader(f, delimiter=";")
for zeile in reader:
print(zeile["alter"], zeile["score"]) # Werte sind noch Strings!
Für statistische Auswertungen in Abschlussarbeiten ist pandas in aller Regel die bessere Wahl – das csv-Modul eignet sich eher für Preprocessing-Skripte, bei denen minimale Abhängigkeiten wichtig sind.
Einen ausführlichen Überblick darüber, welche Python-Bibliotheken für welche Analyseaufgaben gedacht sind, bietet unser Beitrag zu den Python-Tools für die Datenanalyse.
Praxistipps für empirische Abschlussarbeiten
Der Datenimport ist mehr als ein technisches Detail – er ist der erste Schritt einer reproduzierbaren Analyse. Wer diesen Schritt sorgfältig dokumentiert, vermeidet spätere Fehler und kann die Auswertung jederzeit nachvollziehen.
Checkliste: Sauberer Datenimport in Python
- Trennzeichen, Dezimalzeichen und Encoding der CSV-Datei vorab prüfen (z.B. mit einem Texteditor)
- Datentypen kritischer Spalten explizit mit
dtypesetzen – nie blind auf die automatische Erkennung verlassen - Mit
usecolsnur die tatsächlich benötigten Spalten laden – das spart Arbeitsspeicher und hält den DataFrame übersichtlich - Fehlende Werte direkt beim Import mit
na_valuesdefinieren, nicht nachträglich suchen - Nach jedem Import:
df.info(),df.isnull().sum()unddf.describe()ausführen - Import-Code in einer separaten Zelle oder Datei halten – so lässt er sich leicht wiederholen
- Den vollständigen Importcode in den Anhang oder Methodik-Abschnitt der Arbeit aufnehmen
Das klingt nach viel Aufwand – in der Praxis sind diese Schritte aber schnell zur Routine geworden und ersparen stundenlanges Fehlersuchen später im Analyseprozess. Die sechs Schritte der Datenanalyse zeigen, wie der Import in den Gesamtprozess eingebettet ist.
Wenn Sie Ihre Daten nach der Auswertung wieder aus Python heraus exportieren möchten – etwa als formatierte Tabelle für Ihre Abschlussarbeit – finden Sie dazu eine detaillierte Anleitung in unserem Beitrag zum Exportieren von Python-Ergebnissen für Abschlussarbeiten.
Falls Sie unsicher sind, ob Python für Ihre Auswertung das richtige Werkzeug ist oder ob eine andere Software besser passt, unterstützt Sie das Team von QuantExpert bei der methodischen Begleitung statistischer Auswertungen mit Python – von der Datenvorbereitung bis zur fertigen Ergebnisdarstellung.
sep=";" und decimal=",". Excel-Dateien funktionieren mit read_excel() und engine="openpyxl" zuverlässig. Alles andere lässt sich mit den zusätzlichen Parametern schrittweise anpassen.