Datenbereinigung und -reinigung mit Python

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du CSV-Daten bereinigen und reinigen kannst, indem du unvollständige, falsche und ungültige Daten entfernst. Ziel ist es, aus den Rohdaten einen sauberen Datensatz zu erstellen, der für weitere Analysen oder Verarbeitungen verwendet werden kann.

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du die Projektumgebung einrichtest und die erforderlichen Dateien vorbereitest
  • Wie du die erforderlichen Bibliotheken für die Datenbereinigung importierst
  • Wie du die Rohdaten einliest und verarbeitest und verschiedene Arten von schmutzigen Daten überprüfst
  • Wie du die bereinigten Daten in eine neue CSV-Datei schreibst

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Python und seine Standardbibliothek zum Umgang mit CSV-Daten zu verwenden
  • Techniken zur Validierung und Bereinigung von Daten anzuwenden, wie das Überprüfen auf fehlende Werte, ungültige Formate und unrealistische Daten
  • Einen Datenbereinigungsverfahren umzusetzen, um einen hochwertigen Datensatz zu erstellen
  • Eine neue CSV-Datei mit den bereinigten Daten zu generieren

Das Datenformat verstehen

In diesem Schritt wirst du die Daten vor dem Datenbereinigungsverfahren verstehen.

  1. Navigiere zum Verzeichnis /home/labex/project.
  2. Im Projektverzeichnis solltest du eine Datei raw_data.csv finden. Diese Datei enthält die Rohdaten, die bereinigt werden müssen.
  3. Öffne die Datei raw_data.csv. Du kannst alle Spalten sehen, und das richtige Format sollte wie folgt sein:
    • Name-Spalte: Mehr als ein Wort lang.
    • Geschlecht-Spalte: Erwartet 'F' oder 'M'.
    • Geburtsdatum-Spalte: Im Format %Y-%m-%d formatiert.
    • E-Mail-Spalte: Entspricht [email protected].
✨ Lösung prüfen und üben

Importiere erforderliche Bibliotheken

In diesem Schritt importierst du die erforderlichen Bibliotheken für den Datenbereinigungsvorgang.

  1. Öffne die Datei data_clean.py in einem Texteditor.

  2. Füge den folgenden Code am Anfang der Datei hinzu:

import csv
import re
from datetime import datetime

Diese Bibliotheken werden für die Arbeit mit CSV-Dateien, regulären Ausdrücken und Datum/Uhrzeit-Operationen verwendet.

✨ Lösung prüfen und üben

Initialisiere die Liste mit bereinigten Daten

In diesem Schritt wirst du eine leere Liste erstellen, um die bereinigten Daten zu speichern.

  1. In der Datei data_clean.py füge den folgenden Code unter den Imports hinzu:
## Initialize an empty list to store cleaned data
clean_data = []

Diese Liste wird verwendet, um die Zeilen der bereinigten Daten zu speichern.

✨ Lösung prüfen und üben

Lies und verarbeite die Rohdaten

In diesem Schritt wirst du die Rohdaten aus der Datei raw_data.csv lesen, jede Zeile verarbeiten und die gültigen Zeilen zur Liste clean_data hinzufügen.

  1. In der Datei data_clean.py füge den folgenden Code unter der Initialisierung der Liste clean_data hinzu:
## Open and read the raw data CSV file
with open("raw_data.csv", "r") as f:
    reader = csv.DictReader(f)  ## Verwende DictReader für einfachen Zugang zu Spalten nach Namen
    for row in reader:
        ## Extrahiere relevante Felder aus jeder Zeile
        name = row["name"]
        sex = row["gender"]
        date = row["birth date"]
        mail = row["mail"]

        ## Überprüfe, ob das Namensfeld leer ist, und überspringe die Zeile, wenn ja
        if len(name) < 1:
            continue

        ## Überprüfe, ob das Geschlechtsfeld gültig ist (entweder 'M' oder 'F'), und überspringe die Zeile, wenn nicht
        if sex not in ["M", "F"]:
            continue

        ## Versuche, das Geburtsdatum zu parsen und das Alter zu berechnen; überspringe die Zeile, wenn der Parsingvorgang fehlschlägt
        try:
            date = datetime.strptime(date, "%Y-%m-%d")
        except ValueError:
            continue
        age = datetime.now().year - date.year
        ## Überspringe die Zeile, wenn das berechnete Alter unrealistisch ist (weniger als 0 oder mehr als 200)
        if age < 0 or age > 200:
            continue

        ## Definiere ein reguläres Ausdrucksmuster zur Validierung von E-Mail-Adressen
        r = r"^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$"
        ## Überprüfe, ob das E-Mail-Feld dem regulären Ausdrucksmuster entspricht, und überspringe die Zeile, wenn nicht
        if not re.match(r, mail):
            continue

        ## Wenn alle Überprüfungen bestanden sind, füge die Zeile zur Liste der bereinigten Daten hinzu
        clean_data.append(row)

Dieser Code liest die Rohdaten aus der Datei raw_data.csv, verarbeitet jede Zeile und fügt die gültigen Zeilen zur Liste clean_data hinzu.

✨ Lösung prüfen und üben

Schreibe die bereinigten Daten in eine neue CSV-Datei

In diesem Schritt wirst du die bereinigten Daten aus der Liste clean_data in eine neue CSV-Datei namens clean_data.csv schreiben.

  1. In der Datei data_clean.py füge den folgenden Code unter dem Datenverarbeitungsabschnitt hinzu:
## Write the cleaned data to a new CSV file
with open("clean_data.csv", "w", newline="") as f:
    writer = csv.DictWriter(
        f, fieldnames=row.keys()
    )  ## DictWriter zum Schreiben mit Spaltennamen
    writer.writeheader()  ## Schreibe die Kopfzeile
    writer.writerows(clean_data)  ## Schreibe alle bereinigten Zeilen

Dieser Code erstellt eine neue CSV-Datei namens clean_data.csv und schreibt die bereinigten Daten aus der Liste clean_data hinein.

✨ Lösung prüfen und üben

Führe das Datenbereinigungs-Skript aus

In diesem letzten Schritt wirst du das Skript data_clean.py ausführen, um die Datei clean_data.csv zu generieren.

  1. Speichere die Datei data_clean.py.

  2. Öffne im Terminal das Verzeichnis /home/labex/project, wenn du es noch nicht getan hast.

  3. Führe den folgenden Befehl aus, um das Datenbereinigungs-Skript auszuführen:

python data_clean.py

Nachdem du das Skript ausgeführt hast, solltest du in dem Verzeichnis /home/labex/project eine neue Datei clean_data.csv finden, die die bereinigten Daten enthält.

Herzlichen Glückwunsch! Du hast das Projekt zur Reinigung von CSV-Daten erfolgreich abgeschlossen.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.