Teil 24: Mini-Projekt – Kleine CSV-Analyse

Nach den Grundlagen in Python und Pandas ist es Zeit, das Gelernte in einem kleinen, praktischen Projekt anzuwenden. In diesem Mini-Projekt analysieren wir eine CSV-Datei mit Kundendaten, bereinigen die Daten, erstellen neue Spalten, filtern nach Bedingungen und speichern die Ergebnisse.

Dieses Projekt ist ein klassischer Data-Science-Workflow, der Daten laden, bereinigen, analysieren und exportieren kombiniert.


1. Vorbereitung: CSV-Datei

Angenommen, wir haben eine CSV-Datei kunden.csv:

Name,Alter,Land,Email
Anna Müller,28,Deutschland,anna@example.com
Ben Schmidt,35,Österreich,ben@web.de
Clara Meier,22,Deutschland,clara@example.com
David Braun,30,Schweiz,david@web.ch
Eva Klein,,Deutschland,eva@example.com
  • Beachte: Eva Klein hat fehlendes Alter

2. CSV-Datei laden

import pandas as pd

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

# Überblick über Daten
print(df.head())
print(df.info())
  • .head() → zeigt erste 5 Zeilen
  • .info() → zeigt Datentypen und fehlende Werte

3. Datenbereinigung

3.1 Fehlende Werte

# Fehlendes Alter durch Durchschnitt ersetzen
df["Alter"].fillna(df["Alter"].mean(), inplace=True)
  • .fillna() ersetzt NaN-Werte
  • Durchschnitt ist ein einfacher Imputationsansatz

3.2 Einheitliche Schreibweise

# Namen bereinigen
df["Name"] = df["Name"].str.strip().str.title()

# Emails in Kleinbuchstaben
df["Email"] = df["Email"].str.lower()
  • .strip() entfernt Leerzeichen
  • .title() sorgt für einheitliche Groß-/Kleinschreibung

4. Neue Spalten erstellen

4.1 Alterskategorie

df["Altersgruppe"] = ["Jung" if x < 30 else "Erwachsen" for x in df["Alter"]]
  • Comprehension mit Bedingung
  • Praktisch für Segmentierung von Kunden

4.2 VIP-Status

df["VIP"] = df["Name"].isin(["Anna Müller", "Clara Meier"])
  • .isin() prüft, ob Name in einer Liste ist
  • Ergebnis ist boolescher Wert (True/False)

5. Filter und Analyse

5.1 Kunden aus Deutschland

kunden_deutschland = df[df["Land"] == "Deutschland"]
print(kunden_deutschland)
  • .loc[] oder direkte Filterung möglich

5.2 Durchschnittsalter berechnen

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

5.3 VIP-Kunden filtern

vip_kunden = df[df["VIP"] == True]
print(vip_kunden)

6. Aggregationen

# Durchschnittsalter je Land
durchschnitt_land = df.groupby("Land")["Alter"].mean()
print(durchschnitt_land)

# Anzahl Kunden je Altersgruppe
anzahl_altersgruppe = df["Altersgruppe"].value_counts()
print(anzahl_altersgruppe)
  • groupby() → gruppiert Daten
  • value_counts() → zählt Vorkommen

7. Daten exportieren

7.1 CSV speichern

df.to_csv("kunden_bereinigt.csv", index=False)

7.2 Excel speichern

with pd.ExcelWriter("kunden_bereinigt.xlsx") as writer:
    df.to_excel(writer, sheet_name="Kunden", index=False)
    df.describe().to_excel(writer, sheet_name="Statistik")
  • Mehrere Tabellen in Excel → Bericht und Statistik

8. Visualisierung (optional)

import matplotlib.pyplot as plt

# Balkendiagramm Altersgruppen
anzahl_altersgruppe.plot(kind="bar", title="Kunden nach Altersgruppe")
plt.xlabel("Altersgruppe")
plt.ylabel("Anzahl")
plt.show()
  • Visualisierung zeigt schnell Verteilung von Daten
  • Matplotlib oder Seaborn sind dafür geeignet

9. Zusammenfassung des Workflows

  1. Daten ladenread_csv
  2. Überblick verschaffenhead(), info()
  3. Daten bereinigen → fehlende Werte, Strings formatieren
  4. Neue Spalten erstellen → Altersgruppe, VIP
  5. Filtern und aggregierengroupby(), value_counts()
  6. Ergebnisse speichern → CSV und Excel
  7. Optional visualisieren → Matplotlib
  • Dieser Workflow bildet die Basis für komplexere Data-Science-Projekte

Kommentare

Schreibe einen Kommentar

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