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.
- Navigiere zum Verzeichnis
/home/labex/project. - Im Projektverzeichnis solltest du eine Datei
raw_data.csvfinden. Diese Datei enthält die Rohdaten, die bereinigt werden müssen. - Ö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-%dformatiert. - E-Mail-Spalte: Entspricht
username@domain.com.
Importiere erforderliche Bibliotheken
In diesem Schritt importierst du die erforderlichen Bibliotheken für den Datenbereinigungsvorgang.
Öffne die Datei
data_clean.pyin einem Texteditor.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.
Initialisiere die Liste mit bereinigten Daten
In diesem Schritt wirst du eine leere Liste erstellen, um die bereinigten Daten zu speichern.
- In der Datei
data_clean.pyfü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.
Lese 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.
- In der Datei
data_clean.pyfüge den folgenden Code unter der Initialisierung der Listeclean_datahinzu:
## 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.
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.
- In der Datei
data_clean.pyfü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.
Führe das Skript zur Datenbereinigung aus
In diesem letzten Schritt wirst du das Skript data_clean.py ausführen, um die Datei clean_data.csv zu generieren.
Speichere die Datei
data_clean.py.Öffne im Terminal das Verzeichnis
/home/labex/project, wenn du es noch nicht getan hast.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.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



