Pandas read_csv() Tutorial: CSV-Dateien wie ein Profi importieren
Updated on
Die Funktion pandas.read_csv() gehört zu den am häufigsten genutzten Werkzeugen in der Datenanalyse. Egal, ob du kleine Datensätze oder mehrgigabytegroße Dateien importierst – zu verstehen, wie read_csv() funktioniert und wie du es optimierst, spart dir Zeit, Speicher und Debugging-Aufwand.
Dieser aktualisierte Guide für 2025 zeigt dir alles, was du brauchst, um CSV-Dateien sauber, schnell und korrekt zu laden – inklusive Best Practices für Pandas 2.0, die PyArrow-Engine, den Umgang mit Encodings, Datumsparsing und das Beheben häufiger Fehler.
⚡ Willst du sofort Diagramme aus deinem DataFrame?
PyGWalker verwandelt deinen Pandas/Polars-DataFrame in eine interaktive visuelle UI – direkt im Jupyter Notebook.
Spalten per Drag & Drop → Diagramme sofort erzeugen → Daten visuell erkunden.
Probiere es mit einer einzigen Codezeile aus:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)| Run in Kaggle (opens in a new tab) | Run in Google Colab (opens in a new tab) | ⭐️ Star PyGWalker (opens in a new tab) |
|---|
Was ist pandas.read_csv()?
read_csv() ist die zentrale Methode, um CSV-Dateien in ein DataFrame zu importieren – die Kerndatenstruktur in pandas. Die Funktion unterstützt:
- eigene Trennzeichen
- Behandlung fehlender Werte
- automatische oder manuelle Typzuweisung
- Datumsparsing
- Streaming für große Dateien
- mehrere Engines (Python, C, PyArrow)
- Index-Erstellung „on the fly“
- effiziente Spaltenauswahl
Pandas 2.0 hat PyArrow als schnelleren und speichereffizienteren Backend eingeführt und macht das Laden von CSV-Dateien damit noch leistungsfähiger.
Grundlegende Verwendung
import pandas as pd
df = pd.read_csv("your_file.csv")
df.head()Einfach – aber in echten Projekten sind CSVs selten sauber. Als Nächstes schauen wir uns die wichtigsten Parameter an.
Häufige read_csv()-Parameter (Schnellreferenz)
| Parameter | Beschreibung |
|---|---|
sep | Spaltentrennzeichen (Standard ,) |
usecols | Nur ausgewählte Spalten laden |
index_col | Eine Spalte als Index setzen |
dtype | Datentypen manuell festlegen |
parse_dates | Datumsspalten automatisch parsen |
na_values | Marker für fehlende Werte anpassen |
on_bad_lines | Mit fehlerhaften Zeilen umgehen (überspringen/warnen) |
engine | Parser wählen: "python", "c", "pyarrow" |
chunksize | Große Dateien in gestreamten Chunks lesen |
encoding | Encodings behandeln (utf-8, latin-1 usw.) |
1. Eine Spalte als Index setzen
Variante A – nach dem Laden:
df = df.set_index("id")Variante B – während des Ladens:
df = pd.read_csv("file.csv", index_col="id")2. Nur bestimmte Spalten lesen
Beschleunigt das Laden und reduziert den Speicherverbrauch:
df = pd.read_csv("file.csv", usecols=["name", "age", "score"])3. Fehlende Werte behandeln
df = pd.read_csv("file.csv", na_values=["NA", "-", ""])4. Datumsangaben automatisch parsen
df = pd.read_csv("sales.csv", parse_dates=["date"])Pandas erkennt dabei das passende Datetime-Format automatisch.
5. Encoding-Fehler beheben (sehr häufig!)
df = pd.read_csv("file.csv", encoding="utf-8", errors="ignore")Wenn UTF-8 fehlschlägt:
df = pd.read_csv("file.csv", encoding="latin-1")6. Die PyArrow-Engine verwenden (Pandas 2.0+)
Für schnelleres Parsen und besseren Speichereinsatz:
df = pd.read_csv("file.csv", engine="pyarrow")Kombiniert mit neuen Arrow-basierten dtypes:
df = pd.read_csv(
"file.csv",
engine="pyarrow",
dtype_backend="pyarrow"
)7. Große CSVs lesen (1GB–100GB)
Nutze Chunking:
reader = pd.read_csv("big.csv", chunksize=100_000)
for chunk in reader:
process(chunk)Oder lade nur benötigte Spalten + passende Datentypen:
df = pd.read_csv(
"big.csv",
usecols=["user_id", "timestamp"],
dtype={"user_id": "int32"},
)8. Häufige Fehler & wie du sie behebst
❌ UnicodeDecodeError
Verwende:
encoding="latin-1"❌ ParserError: Error tokenizing data
Die Datei enthält fehlerhafte Zeilen:
pd.read_csv("file.csv", on_bad_lines="skip")❌ MemoryError bei großen Dateien
Verwende:
chunksizeusecols- Arrow-Backend (
dtype_backend="pyarrow")
❌ Falsches Trennzeichen
pd.read_csv("file.csv", sep=";")Praktisches Beispiel: sauberer Import
df = pd.read_csv(
"sales.csv",
sep=",",
parse_dates=["date"],
dtype={"amount": "float64"},
na_values=["NA", ""],
engine="pyarrow"
)Wann CSV sinnvoll ist – und wann nicht
CSV ist ideal für:
- Portabilität
- einfache Pipelines
- kleine bis mittlere Datensätze
Vermeide CSV, wenn du brauchst:
- hohe Geschwindigkeit
- starke Kompression
- strenge Schema-Konsistenz
- komplexe Datentypen
Für großskalige Analysen ist Parquet meistens die bessere Wahl.
FAQs
Wie kann ich das Trennzeichen automatisch erkennen lassen?
pd.read_csv("file.csv", sep=None, engine="python")Wie überspringe ich Kopfzeilen?
pd.read_csv("file.csv", skiprows=3)Wie lade ich eine gezippte CSV-Datei?
pd.read_csv("file.csv.zip")Fazit
pandas.read_csv() ist ein leistungsfähiges und flexibles Werkzeug, das nahezu jedes CSV-Importszenario bewältigen kann – von einfachen Dateien bis zu Datensätzen mit mehreren Gigabyte.
Wenn du die wichtigsten Parameter kennst, PyArrow in Pandas 2.0+ nutzt und Best Practices anwendest (Spaltenauswahl, Datumsparsing, Fehlerbehandlung), verbesserst du deinen Data-Loading-Workflow erheblich.
Weitere Pandas-Tutorials