10 essentielle Linux-Befehlszeilen-Tools für Data Scientists
Wenn Sie gerade Ihre Reise in die Datenwissenschaft beginnen, könnten Sie denken, dass es nur um Python-Bibliotheken, Jupyter-Notebooks und ausgefallene Maschinenlernalgorithmen geht, und während diese definitiv wichtig sind, gibt es ein mächtiges Set an Werkzeugen, das oft übersehen wird: die bescheidene Kommandozeile.
Ich habe über ein Jahrzehnt damit verbracht, mit Linux-Systemen zu arbeiten, und ich kann Ihnen sagen, dass die Beherrschung dieser Kommandozeilen-Tools Ihr Leben erheblich erleichtern wird. Sie sind schnell, effizient und oft der schnellste Weg, um einen Blick auf Ihre Daten zu werfen, Dateien zu bereinigen oder wiederholte Aufgaben zu automatisieren.
Um dieses Tutorial praktisch und praxisnah zu gestalten, werden wir in diesem Artikel ein Beispiel-Datensatz für E-Commerce-Verkäufe verwenden. Lassen Sie mich Ihnen zuerst zeigen, wie man ihn erstellt, dann werden wir ihn mit allen 10 Tools erkunden.
Erstellen Sie die Beispieldatei:
cat > sales_data.csv << 'EOF'
order_id,date,customer_name,product,category,quantity,price,region,status
1001,2024-01-15,John Smith,Laptop,Electronics,1,899.99,North,completed
1002,2024-01-16,Sarah Johnson,Mouse,Electronics,2,24.99,South,completed
1003,2024-01-16,Mike Brown,Desk Chair,Furniture,1,199.99,East,completed
1004,2024-01-17,John Smith,Keyboard,Electronics,1,79.99,North,completed
1005,2024-01-18,Emily Davis,Notebook,Stationery,5,12.99,West,completed
1006,2024-01-18,Sarah Johnson,Laptop,Electronics,1,899.99,South,pending
1007,2024-01-19,Chris Wilson,Monitor,Electronics,2,299.99,North,completed
1008,2024-01-20,John Smith,USB Cable,Electronics,3,9.99,North,completed
1009,2024-01-20,Anna Martinez,Desk,Furniture,1,399.99,East,completed
1010,2024-01-21,Mike Brown,Laptop,Electronics,1,899.99,East,cancelled
1011,2024-01-22,Emily Davis,Pen Set,Stationery,10,5.99,West,completed
1012,2024-01-22,Sarah Johnson,Monitor,Electronics,1,299.99,South,completed
1013,2024-01-23,Chris Wilson,Desk Chair,Furniture,2,199.99,North,completed
1014,2024-01-24,Anna Martinez,Laptop,Electronics,1,899.99,East,completed
1015,2024-01-25,John Smith,Mouse Pad,Electronics,1,14.99,North,completed
1016,2024-01-26,Mike Brown,Bookshelf,Furniture,1,149.99,East,completed
1017,2024-01-27,Emily Davis,Highlighter,Stationery,8,3.99,West,completed
1018,2024-01-28,NULL,Laptop,Electronics,1,899.99,South,pending
1019,2024-01-29,Chris Wilson,Webcam,Electronics,1,89.99,North,completed
1020,2024-01-30,Sarah Johnson,Desk Lamp,Furniture,2,49.99,South,completed
EOF
Lassen Sie uns nun diese Datei mit unseren 10 unverzichtbaren Werkzeugen erkunden!
1. grep – Ihr Mustererkennungstool
Denken Sie an den grep-Befehl wie an Ihren Datendetektiv, da er durch Dateien sucht und Zeilen findet, die den von Ihnen angegebenen Mustern entsprechen, was unglaublich nützlich ist, wenn Sie mit großen Protokolldateien oder Textdatensätzen arbeiten.
Beispiel 1: Finde alle Bestellungen von John Smith.
grep "John Smith" sales_data.csv
Beispiel 2: Zählen Sie, wie viele Laptop-Bestellungen wir haben.
grep -c "Laptop" sales_data.csv
Beispiel 3: Finde alle Bestellungen, die NICHT abgeschlossen sind.
grep -v "completed" sales_data.csv | grep -v "order_id"
Beispiel 4: Finden Sie Bestellungen mit Positionsnummern.
grep -n "Electronics" sales_data.csv | head -5
2. awk – Das Schweizer Taschenmesser für die Textverarbeitung
awk ist wie eine Mini-Programmiersprache, die für die Textverarbeitung entwickelt wurde und sich perfekt zum Extrahieren bestimmter Spalten, Durchführen von Berechnungen und Transformieren von Daten im laufenden Betrieb eignet.
Beispiel 1: Extrahieren Sie nur Produktnamen und Preise.
awk -F',' '{print $4, $7}' sales_data.csv | head -6
Beispiel 2: Berechnen Sie den Gesamtumsatz aus allen Bestellungen.
awk -F',' 'NR>1 {sum+=$7} END {print "Total Revenue: $" sum}' sales_data.csv
Beispiel 3: Zeigen Sie Bestellungen an, bei denen der Preis größer als 100 $ ist.
awk -F',' 'NR>1 && $7>100 {print $1, $4, $7}' sales_data.csv
Beispiel 4: Berechnen Sie den Durchschnittspreis nach Kategorie.
awk -F',' 'NR>1 {
category[$5]+=$7
count[$5]++
}
END {
for (cat in category)
printf "%s: $%.2f\n", cat, category[cat]/count[cat]
}' sales_data.csv
3. sed – Der Stream-Editor für schnelle Bearbeitungen
sed ist Ihr bevorzugtes Werkzeug für Suchen-und-Ersetzen-Operationen und Texttransformationen. Es ist wie „Suchen und Ersetzen“ in einem Texteditor, aber von der Befehlszeile aus und viel schneller.
Beispiel 1: Ersetzen Sie NULL-Werte durch “Unbekannt“.
sed 's/NULL/Unknown/g' sales_data.csv | grep "Unknown"
Beispiel 2: Entfernen Sie die Kopfzeile.
sed '1d' sales_data.csv | head -3
Beispiel 3: Ändere “abgeschlossen” zu “FERTIG“.
sed 's/completed/DONE/g' sales_data.csv | tail -5
Beispiel 4: Fügen Sie ein Dollarzeichen vor allen Preisen hinzu.
sed 's/,\([0-9]*\.[0-9]*\),/,$,/g' sales_data.csv | head -4
4. cut – Einfache Spaltenextraktion
Während awk leistungsstark ist, benötigt man manchmal einfach nur etwas Einfaches und Schnelles, und hier kommt der cut-Befehl ins Spiel, der speziell dafür entwickelt wurde, Spalten aus abgetrennten Dateien zu extrahieren.
Beispiel 1: Extrahieren Sie Kundennamen und Produkte.
cut -d',' -f3,4 sales_data.csv | head -6
Beispiel 2: Extrahieren Sie nur die Spalte Region.
cut -d',' -f8 sales_data.csv | head -8
Beispiel 3: Bestell-ID, Produkt und Status abrufen.
cut -d',' -f1,4,9 sales_data.csv | head -6
5. sortieren – Organisieren Sie Ihre Daten
Daten zu sortieren ist grundlegend für die Analyse, und der Befehl sort erledigt dies unglaublich effizient, selbst bei Dateien, die zu groß sind, um in den Speicher zu passen.
Beispiel 1: Nach Kundennamen alphabetisch sortieren.
sort -t',' -k3 sales_data.csv | head -6
Beispiel 2: Nach Preis sortieren (höchster bis niedrigster).
sort -t',' -k7 -rn sales_data.csv | head -6
Beispiel 3: Nach Region sortieren, dann nach Preis.
sort -t',' -k8,8 -k7,7rn sales_data.csv | grep -v "order_id" | head -8
6. uniq – Einzigartige Werte finden und zählen
Der Befehl uniq hilft Ihnen, eindeutige Werte zu identifizieren, Vorkommen zu zählen und Duplikate zu finden, was wie eine leichtgewichtige Version von pandas value_counts() ist.
uniq funktioniert nur mit sortierten Daten, daher wirst du es normalerweise mit sort pipen.
Beispiel 1: Bestellungen nach Region zählen.
cut -d',' -f8 sales_data.csv | tail -n +2 | sort | uniq -c
Beispiel 2: Zählen Sie Bestellungen nach Produktkategorie.
cut -d',' -f5 sales_data.csv | tail -n +2 | sort | uniq -c | sort -rn
Beispiel 3: Finden Sie heraus, welche Kunden mehrere Käufe getätigt haben.
cut -d',' -f3 sales_data.csv | tail -n +2 | sort | uniq -c | sort -rn
Beispiel 4: Einzigartige bestellte Produkte anzeigen.
cut -d',' -f4 sales_data.csv | tail -n +2 | sort | uniq
7. wc – Wortanzahl (und mehr)
Lass dich vom Namen nicht täuschen, wc (Wortanzahl) ist für viel mehr nützlich als nur zum Zählen von Wörtern, es ist dein schnelles Statistikwerkzeug.
Beispiel 1: Zählen Sie die Gesamtzahl der Bestellungen (ohne Kopfzeile).
wc -l sales_data.csv
Beispiel 2: Zählen Sie, wie viele Elektronikbestellungen es gibt.
grep "Electronics" sales_data.csv | wc -l
Beispiel 3: Zähle die gesamten Zeichen in der Datei.
wc -c sales_data.csv
Beispiel 4: Mehrere Statistiken auf einmal.
wc sales_data.csv
8. Kopf und Schwanz – Vorschau Ihrer Daten
Anstatt eine riesige Datei zu öffnen, verwenden Sie den Befehl head, um die ersten paar Zeilen zu sehen, oder tail, um die letzten paar zu sehen.
Beispiel 1: Die ersten 5 Bestellungen anzeigen.
head -6 sales_data.csv
Beispiel 2: Zeigen Sie nur die Spaltenüberschriften an.
head -1 sales_data.csv
Beispiel 3: Zeigen Sie die letzten 5 Bestellungen an.
tail -5 sales_data.csv
Beispiel 4: Überspringen Sie die Kopfzeile und sehen Sie sich die Daten an
tail -n +2 sales_data.csv | head -3
9. finden – Dateien in verschiedenen Verzeichnissen suchen
Wenn man an Projekten arbeitet, muss man oft Dateien finden, die über Verzeichnisse verstreut sind, und der Befehl find ist dafür unglaublich mächtig.
Erstens, lasst uns eine realistische Verzeichnisstruktur erstellen:
mkdir -p data_project/{raw,processed,reports}
cp sales_data.csv data_project/raw/
cp sales_data.csv data_project/processed/sales_cleaned.csv
echo "Summary report" > data_project/reports/summary.txt
Beispiel 1: Finde alle CSV-Dateien.
find data_project -name "*.csv"
Beispiel 2: Finden Sie Dateien, die in der letzten Minute geändert wurden.
find data_project -name "*.csv" -mmin -1
Beispiel 3: Finden und zählen Sie Zeilen in allen CSV-Dateien.
find data_project -name "*.csv" -exec wc -l {} \;
Beispiel 4: Finden Sie Dateien, die größer als 1 KB sind.
find data_project -type f -size +1k
10. jq – JSON-Prozessor Extraordinaire
In der modernen Datenwissenschaft stammen viele Informationen aus APIs, die normalerweise Daten im JSON-Format senden, einer strukturierten Art, Informationen zu organisieren.
Während Werkzeuge wie grep, awk und sed großartig zum Suchen und Bearbeiten von Klartext sind, ist jq speziell für die Verarbeitung von JSON-Daten entwickelt worden.
sudo apt install jq # Ubuntu/Debian
sudo yum install jq # CentOS/RHEL
Lassen Sie uns zuerst einige unserer Daten ins JSON-Format konvertieren:
cat > sales_sample.json << 'EOF'
{
"orders": [
{
"order_id": 1001,
"customer": "John Smith",
"product": "Laptop",
"price": 899.99,
"region": "North",
"status": "completed"
},
{
"order_id": 1002,
"customer": "Sarah Johnson",
"product": "Mouse",
"price": 24.99,
"region": "South",
"status": "completed"
},
{
"order_id": 1006,
"customer": "Sarah Johnson",
"product": "Laptop",
"price": 899.99,
"region": "South",
"status": "pending"
}
]
}
EOF
Beispiel 1: JSON schön formatieren.
jq '.' sales_sample.json
Beispiel 2: Alle Kundennamen extrahieren.
jq '.orders[].customer' sales_sample.json
Beispiel 3: Bestellungen über 100 $filtern.
jq '.orders[] | select(.price > 100)' sales_sample.json
Beispiel 4: In CSV-Format konvertieren.
jq -r '.orders[] | [.order_id, .customer, .product, .price] | @csv' sales_sample.json
Bonus: Werkzeuge mit Pipes kombinieren
Hier passiert die eigentliche Magie: Sie können diese Werkzeuge mithilfe von Pipes (|) miteinander verketten, um leistungsstarke Datenverarbeitungspipelines zu erstellen.
Beispiel 1: Finden Sie die 10 am häufigsten vorkommenden Wörter in einer Textdatei:
cat article.txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' '\n' | sort | uniq -c | sort -rn | head -10
Beispiel 2: Analysieren Sie Webserver-Protokolle:
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
Beispiel 3: Schnelle Datenexploration:
cut -d',' -f3 sales.csv | tail -n +2 | sort -n | uniq -c
Praktisches Arbeitsablaufbeispiel
Lassen Sie mich Ihnen zeigen, wie diese Werkzeuge in einem realen Szenario zusammenarbeiten. Stellen Sie sich vor, Sie haben eine große CSV-Datei mit Verkaufsdaten und möchten:
- Entfernen Sie die Kopfzeile.
- Extrahieren Sie die Spalten mit Produktname und Preis.
- Finden Sie die 10 teuersten Produkte.
Hier ist die Einzeiler:
tail -n +2 sales.csv | cut -d',' -f2,5 | sort -t',' -k2 -rn | head -10
Es aufschlüsseln:
tail -n +2: Überspringe die Kopfzeile.cut -d',' -f2,5: Spalte 2 und 5 extrahieren.sort -t',' -k2 -rn: Nach dem zweiten Feld numerisch in umgekehrter Reihenfolge sortieren.head -10: Zeige die obersten 10 Ergebnisse.
Fazit
Diese 10 Kommandozeilen-Tools sind wie ein Schweizer Taschenmesser für Daten. Sie sind schnell, effizient, und sobald Sie sich an sie gewöhnt haben, werden Sie immer wieder zu ihnen greifen, selbst wenn Sie an Python-Projekten arbeiten.
Fangen Sie mit den Grundlagen an: head, tail, wc und grep. Sobald diese sich natürlich anfühlen, fügen Sie cut, sort und uniq zu Ihrem Arsenal hinzu. Schließlich steigern Sie Ihr Können mit awk, sed und jq.
Denke daran, du musst nicht alles auswendig lernen. Behalte diesen Leitfaden als Lesezeichen und schaue ihn nach, wenn du ein bestimmtes Werkzeug benötigst. Mit der Zeit werden dir diese Befehle in Fleisch und Blut übergehen.









