Teil 13: Arbeiten mit Dateien (txt, csv)

In Data Science sind Dateien das Herzstück der Datenbeschaffung. Ob CSVs, Textdateien oder Excel-Tabellen – der Umgang mit Dateien ist essenziell, um Daten zu laden, zu analysieren und zu speichern. In diesem Teil lernst du, wie man in Python Text- und CSV-Dateien effizient bearbeitet.


1. Grundlegender Umgang mit Dateien

In Python gibt es die eingebaute Funktion open(), um Dateien zu öffnen:

# Datei öffnen
datei = open("beispiel.txt", "w")  # 'w' = write (schreiben)
datei.write("Hallo Welt!\n")
datei.close()
  • 'w' → Datei zum Schreiben öffnen (vorhandener Inhalt wird überschrieben)
  • 'r' → Datei zum Lesen öffnen
  • 'a' → Datei anhängen
  • 'x' → Datei nur erstellen, wenn sie nicht existiert

2. Lesen von Dateien

Zeilenweise einlesen

datei = open("beispiel.txt", "r")
inhalt = datei.readlines()
datei.close()
print(inhalt)
  • readlines() liefert Liste der Zeilen
  • Alternative: read() liest den gesamten Inhalt als String

Mit with-Statement

with open("beispiel.txt", "r") as datei:
    for zeile in datei:
        print(zeile.strip())
  • Vorteil: Datei wird automatisch geschlossen
  • strip() entfernt Zeilenumbrüche oder Leerzeichen

3. Schreiben in Dateien

with open("beispiel.txt", "w") as datei:
    datei.write("Erste Zeile\n")
    datei.write("Zweite Zeile\n")
  • 'a' zum Anhängen verwenden, ohne Inhalt zu überschreiben:
with open("beispiel.txt", "a") as datei:
    datei.write("Neue Zeile\n")

4. Arbeiten mit CSV-Dateien

CSV-Dateien (Comma Separated Values) sind das Standardformat in Data Science. Python bietet zwei Möglichkeiten:

  1. CSV-Modul
  2. Pandas

4.1 CSV mit dem csv-Modul

import csv

# Schreiben
with open("kunden.csv", "w", newline="") as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(["Name", "Alter", "Land"])
    writer.writerow(["Anna", 28, "Deutschland"])
    writer.writerow(["Ben", 35, "Österreich"])

# Lesen
with open("kunden.csv", "r") as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)
  • writer.writerow() schreibt eine Zeile
  • reader iteriert über Zeilen der Datei

4.2 CSV mit Pandas

Pandas ist viel einfacher und leistungsfähiger:

import pandas as pd

# CSV-Datei einlesen
df = pd.read_csv("kunden.csv")
print(df.head())
  • df.head() zeigt die ersten 5 Zeilen
  • Pandas erkennt automatisch Spalten und Datentypen

4.3 CSV speichern

df["NeuesFeld"] = df["Alter"] + 5
df.to_csv("kunden_neu.csv", index=False)
  • index=False verhindert, dass der Index mitgespeichert wird

5. Praxisbeispiel: Kundendaten verarbeiten

import pandas as pd

# CSV laden
try:
    df = pd.read_csv("kunden.csv")
except FileNotFoundError:
    print("Datei nicht gefunden!")
else:
    # Neue Spalte berechnen
    df["Alter_in_5_Jahren"] = df["Alter"] + 5
    
    # VIP-Kunden filtern
    df_vip = df[df["Name"].isin(["Anna", "Ben"])]
    
    # CSV speichern
    df_vip.to_csv("vip_kunden.csv", index=False)
    print("VIP-Datei gespeichert!")
  • Kombiniert Datei laden, filtern, berechnen und speichern
  • Ideal für Data-Science-Workflows

6. Lesen und Schreiben von Textdateien mit Pandas

Manchmal sind Textdateien nicht im CSV-Format, sondern mit Trennzeichen wie Tab oder Semikolon:

# TSV-Datei laden (Tab-Separated)
df = pd.read_csv("daten.tsv", sep="\t")

# Mit Semikolon
df = pd.read_csv("daten.csv", sep=";")
  • sep definiert das Trennzeichen

7. Tipps für Data Science

  1. Immer mit with arbeiten – automatische Ressourcenfreigabe
  2. CSV vs. TXT – für strukturierte Daten immer CSV oder Pandas DataFrame bevorzugen
  3. Fehler abfangen – mit try/except
  4. Index richtig setzenindex_col beim Einlesen von CSVs kann hilfreich sein
  5. Dateiformate prüfen – fehlende Werte, falsches Trennzeichen

8. Mini-Praxisprojekt: CSV-Analyse

Aufgabe: Berechne den Durchschnittsalter aller Kunden und speichere VIP-Kunden in einer neuen Datei.

import pandas as pd

# CSV laden
df = pd.read_csv("kunden.csv")

# Durchschnittsalter
durchschnitt = df["Alter"].mean()
print(f"Durchschnittsalter: {durchschnitt:.2f} Jahre")

# VIP-Kunden speichern
vip_namen = ["Anna", "Clara"]
df_vip = df[df["Name"].isin(vip_namen)]
df_vip.to_csv("vip_kunden.csv", index=False)
print("VIP-Kunden gespeichert")
  • Output: Durchschnittsalter: 28.33 Jahre VIP-Kunden gespeichert
  • Ein kleiner Data-Science-Workflow: CSV laden → Daten bearbeiten → CSV speichern

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert