a close up of a sign on a building

Datenbereinigung am Terminal: Ein Muss für angehende Data Scientists

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.

Schreibe einen Kommentar

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

You May Also Like