Bevor wir mit Daten arbeiten können, müssen wir sie einlesen (importieren).
Ebenso wichtig ist es, Ergebnisse und bearbeitete Datensätze wieder exportieren (speichern) zu können.
In der Datenwissenschaft (Data Science) sprechen wir oft von Datenpipelines. Damit sind Abläufe gemeint, bei denen Daten Schritt für Schritt verarbeitet werden:
- Datenquelle → Einlesen → Bereinigung → Transformation → Analyse → Export → Weiterverwendung
Das Einlesen und Exportieren von Daten bildet also den Start- und Endpunkt vieler Projekte.
Wichtige Begriffe
- Parquet: Ein spaltenbasiertes Speicherformat. Es ist platzsparend, sehr schnell zu lesen/schreiben und ideal für große Datenmengen.
- Arrow: Ein modernes, spaltenbasiertes Speicherformat, das vor allem für schnelle Datenübertragung zwischen Programmiersprachen und Systemen optimiert ist.
- SQL: Abkürzung für „Structured Query Language“. Mit SQL-Datenbanken kann man Daten abfragen und speichern.
- Chunked Reading: Technik, bei der eine große Datei nicht auf einmal, sondern in Teilstücken (Chunks) eingelesen wird, um Speicher zu sparen.
Einlesen mit pandas
In der Praxis wird fast immer das pandas-Paket verwendet. pandas bietet die Funktion read_*, um verschiedene Formate zu lesen:
import pandas as pd
# CSV einlesen
df_csv = pd.read_csv("daten.csv")
# Excel-Datei einlesen
df_excel = pd.read_excel("daten.xlsx")
# Parquet-Datei einlesen
df_parquet = pd.read_parquet("daten.parquet")
# SQL-Abfrage (Beispiel mit SQLite)
import sqlite3
con = sqlite3.connect("datenbank.sqlite")
df_sql = pd.read_sql("SELECT * FROM tabelle", con)
Exportieren mit pandas
Analog gibt es die to_* Methoden, um Daten wieder zu speichern:
# Als CSV speichern
df_csv.to_csv("output.csv", index=False)
# Als Excel speichern
df_csv.to_excel("output.xlsx", index=False)
# Als Parquet speichern (empfohlen für große Daten)
df_csv.to_parquet("output.parquet", index=False)
# In SQL schreiben
df_csv.to_sql("neue_tabelle", con, if_exists="replace", index=False)
Chunked Reading – große Dateien effizient lesen
Manchmal sind Dateien so groß, dass sie nicht in den Arbeitsspeicher passen.
Hier hilft Chunking:
chunk_iter = pd.read_csv("sehr_grosse_datei.csv", chunksize=100000)
for chunk in chunk_iter:
# Hier könnte man Berechnungen auf jedem Chunk machen
print(len(chunk))
Vorteile:
- Speicher wird nicht überlastet.
- Man kann Teilaggregate berechnen (z. B. Summen, Counts).
Best Practices beim Einlesen/Exportieren
- Encoding angeben: Besonders bei CSV-Dateien wichtig (
encoding="utf-8"oderencoding="latin1"). - Separator prüfen: CSV-Dateien können unterschiedliche Trennzeichen haben (
sep=";"odersep="\t"). - Datenformate gezielt wählen:
- CSV → für einfache Kompatibilität
- Excel → wenn andere Abteilungen (nicht-Programmierer) Daten bekommen sollen
- Parquet → für große Datenmengen und Data-Science-Pipelines
- SQL verwenden: wenn Daten in Datenbanken gespeichert sind oder viele Nutzer gleichzeitig darauf zugreifen.