Für angehende Data Scientists mag die Datenbereinigung oft mit Jupyter Notebooks assoziiert werden. Doch ein mächtiges Werkzeug schlummert bereits auf Ihrem System: das Terminal. Dieser Artikel zeigt, wie Sie mit einfachen Kommandozeilen-Tools Daten bereinigen, transformieren und explorieren können – ganz ohne zusätzliche Installationen.
Warum Kommandozeilen-Tools für die Datenbereinigung?
Die Nutzung von Kommandozeilen-Tools bietet zahlreiche Vorteile für die Datenbereinigung:
- Effizienz: Sie sind schnell und ressourcenschonend, besonders bei großen Datensätzen.
- Verfügbarkeit: Integriert in Linux/macOS und auf Windows verfügbar.
- Erste Einblicke: Ideal, um Daten vor der Analyse in Python zu inspizieren.
- Automatisierung: Einfaches Skripting und Automatisierung von Aufgaben.
Erste Schritte: Beispielhafte Daten erstellen
Um die Techniken zu demonstrieren, erstellen wir zunächst eine "unsaubere" CSV-Datei, die typische Datenprobleme wie Leerzeichen, fehlende Werte und Duplikate aufweist:
cat > messy_data.csv << 'EOF'
name,age,salary,department,email
John Lee,32,50000,Engineering,john@example.com
Jane Smith,28,55000,Marketing,jane@example.com
Bob Davis ,35,60000,Engineering,bob@example.com
Alice Williams,29,,Marketing,alice@example.com
Charlie Brown,45,70000,Sales,charlie@example.com
Dave Wilson,31,52000,Engineering,
Emma Davis,,58000,Marketing,emma@example.com
Frank Miller,38,65000,Sales,frank@example.com
John Lee,32,50000,Engineering,john@example.com
Grace Lee,27,51000,Engineering,grace@example.com
EOF
1. Daten erkunden mit head, tail und wc
Bevor Sie mit der Bereinigung beginnen, ist es wichtig, die Daten zu verstehen.
head -n 5 messy_data.csv: Zeigt die ersten 5 Zeilen.tail -n 3 messy_data.csv: Zeigt die letzten 3 Zeilen.wc -l messy_data.csv: Zählt die Gesamtzahl der Zeilen (abzüglich des Headers für die Datensatzanzahl).
2. Spezifische Spalten auswählen mit cut
Mit cut können Sie gezielt Spalten extrahieren.
cut -d',' -f1,4 messy_data.csv: Extrahiert die Felder 1 (Name) und 4 (Abteilung).
3. Duplikate entfernen mit sort und uniq
Um doppelte Zeilen zu eliminieren, sortieren Sie die Daten und wenden uniq an.
head -n 1 messy_data.csv > cleaned_data.csv: Speichert die Kopfzeile.tail -n +2 messy_data.csv | sort | uniq >> cleaned_data.csv: Entfernt Duplikate aus den Datenzeilen.
4. Suchen und Filtern mit grep
grep ist mächtig zum Finden und Filtern von Zeilen.
grep "Engineering" messy_data.csv: Findet alle Zeilen, die "Engineering" enthalten.grep -v ",," messy_data.csv: Schließt Zeilen mit leeren Feldern (dargestellt als,,) aus.
5. Leerzeichen trimmen mit sed
sed kann führende und nachfolgende Leerzeichen entfernen.
sed 's/^[ \t]*//; s/[ \t]*$//' messy_data.csv > trimmed_data.csv: Entfernt Whitespace am Zeilenanfang und -ende.
6. Werte ersetzen mit sed
sed eignet sich auch hervorragend zum Ersetzen von Werten.
sed 's/Engineering/Tech/g' messy_data.csv: Ersetzt alle Vorkommen von "Engineering" durch "Tech".sed 's/,$/,no-email@example.com/' messy_data.csv: Füllt leere E-Mail-Felder auf.
7. Zählen und Zusammenfassen mit awk
awk ist ideal für feldbezogene Operationen und Analysen.
tail -n +2 messy_data.csv | cut -d',' -f4 | sort | uniq -c: Zählt Einträge pro Abteilung.tail -n +2 messy_data.csv | awk -F',' '{if($2) sum+=$2; if($2) count++} END {print "Average age:", sum/count}': Berechnet das Durchschnittsalter.
8. Befehle kombinieren mit Pipes (|)
Die wahre Stärke liegt im Verketten von Befehlen.
tail -n +2 messy_data.csv | cut -d',' -f4 | sort | uniq: Zeigt eindeutige Abteilungen.tail -n +2 messy_data.csv | grep "Engineering" | awk -F',' '$3 > 55000' | cut -d',' -f1,3: Findet Ingenieure mit Gehalt > 55000.
9. Datenformate konvertieren
Sie können Datenformate leicht anpassen.
sed 's/,/\t/g' messy_data.csv > data.tsv: Konvertiert CSV in TSV.awk -F',' 'BEGIN{OFS=","} {print $0, "2024"}' messy_data.csv > data_with_year.csv: Fügt eine Jahresspalte hinzu.
10. Eine vollständige Bereinigungs-Pipeline
Ein Beispiel für eine umfassende Bereinigung:
# Save header
head -n 1 messy_data.csv > final_clean.csv
# Clean the data: remove duplicates, trim whitespace, exclude missing values
tail -n +2 messy_data.csv | \
sed 's/^[ \t]*//; s/[ \t]*$//' | \
grep -v ",," | \
sort | \
uniq >> final_clean.csv
echo "Cleaning complete! Check final_clean.csv"
Fazit
Die Datenbereinigung über die Kommandozeile ist eine unterschätzte, aber äußerst nützliche Fähigkeit für Data Scientists. Diese Werkzeuge sind schnell, effizient und universell einsetzbar. Während Python für komplexe Analysen unerlässlich bleibt, steigern diese Grundlagen Ihre Effektivität und Vielseitigkeit erheblich.