Kapitel 1. Einführung
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
In diesem Buch geht es um Data Science auf der Kommandozeile. Mein Ziel ist es, dich zu einem effizienteren und produktiveren Data Scientist zu machen, indem ich dir zeige, wie du die Möglichkeiten der Kommandozeile nutzen kannst.
Dass der Titel des Buches sowohl Data Science als auch Kommandozeile enthält, bedarf einer Erklärung: Wie kann eine Technologie, die mehr als 50 Jahre alt ist1 für einen Bereich von Nutzen sein, der erst ein paar Jahre jung ist?
Heutzutage können Datenwissenschaftler/innen aus einer überwältigenden Auswahl an spannenden Technologien und Programmiersprachen wählen. Python, R, Julia und Apache Spark sind nur einige Beispiele. Vielleicht hast du bereits Erfahrung mit einer oder mehreren dieser Technologien. Wenn ja, warum solltest du dich dann noch mit der Kommandozeile beschäftigen, um Datenwissenschaft zu betreiben? Was hat die Kommandozeile zu bieten, was diese anderen Technologien und Programmiersprachen nicht haben?
Das sind berechtigte Fragen, die ich in diesem Eröffnungskapitel wie folgt beantworte: Zunächst gebe ich eine praktische Definition von Datenwissenschaft, die das Rückgrat dieses Buches bildet. Anschließend liste ich fünf wichtige Vorteile der Kommandozeile auf. Ich hoffe, dich am Ende dieses Kapitels davon überzeugt zu haben, dass es sich lohnt, die Kommandozeile für die Datenwissenschaft zu lernen.
Datenwissenschaft ist OSEMN
Der Bereich der Datenwissenschaft steckt noch in den Kinderschuhen und daher gibt es verschiedene Definitionen. In diesem Buch verwende ich eine sehr praktische Definition, die von Hilary Mason und Chris H. Wiggins entwickelt wurde.2 Sie definieren Data Science anhand der folgenden fünf Schritte: (1) Beschaffung von Daten, (2) Aufbereitung von Daten, (3) Erforschung von Daten, (4) Modellierung von Daten und (5) Interpretation von Daten. Zusammen bilden diese Schritte das OSEMN-Modell (ausgesprochen "awesome"). Diese Definition bildet das Rückgrat dieses Buches, denn jedem Schritt (mit Ausnahme von Schritt 5, der Interpretation von Daten, den ich gleich erklären werde) ist ein eigenes Kapitel gewidmet.
Obwohl die fünf Schritte linear und inkrementell besprochen werden, kommt es in der Praxis häufig vor, dass man zwischen ihnen hin und her wechselt oder mehrere Schritte gleichzeitig durchführt.Abbildung 1-1 veranschaulicht, dass Data Science ein iterativer und nicht linearer Prozess ist. Wenn du zum Beispiel deine Daten modelliert und die Ergebnisse betrachtet hast, kannst du dich entscheiden, zum Scrubbing-Schritt zurückzukehren, um die Merkmale des Datensatzes anzupassen.
Auf den folgenden Seiten erkläre ich, was die einzelnen Schritte bedeuten.
Beschaffung von Daten
Ohne Daten gibt es wenig, was du für Data Science tun kannst. Der erste Schritt ist also, Daten zu beschaffen. Wenn du nicht das Glück hast, bereits Daten zu besitzen, musst du vielleicht eine oder mehrere der folgenden Maßnahmen ergreifen:
-
Daten von einem anderen Ort herunterladen (z. B. von einer Webseite oder einem Server)
-
Abfrage von Daten aus einer Datenbank oder API (z. B. MySQL oder Twitter)
-
Daten aus einer anderen Datei extrahieren (z. B. aus einer HTML-Datei oder einer Tabellenkalkulation)
-
Erstelle selbst Daten (z. B. durch das Ablesen von Sensoren oder Umfragen)
In Kapitel 3 bespreche ich verschiedene Methoden, um Daten über die Kommandozeile zu erhalten. Die erhaltenen Daten liegen höchstwahrscheinlich im reinen Text-, CSV-, JSON-, HTML- oder XML-Format vor. Der nächste Schritt besteht darin, diese Daten zu scrubben.
Daten schrubben
Es ist nicht ungewöhnlich, dass die erhaltenen Daten fehlende Werte, Inkonsistenzen, Fehler, seltsame Zeichen oder uninteressante Spalten enthalten. In solchen Fällen musst du die Daten bereinigen, bevor du etwas Interessantes mit ihnen anfangen kannst. Zu den üblichen Bereinigungsoperationen gehören:
-
Linien filtern
-
Bestimmte Spalten extrahieren
-
Ersetzen von Werten
-
Wörter extrahieren
-
Umgang mit fehlenden Werten und Duplikaten
-
Daten von einem Format in ein anderes konvertieren
Wir Data Scientists lieben es, aufregende Datenvisualisierungen und aufschlussreiche Modelle zu erstellen (Schritte 3 und 4 des OSEMN-Modells), aber in der Regel wird zuerst viel Aufwand betrieben, um die benötigten Daten zu beschaffen und zu bereinigen (Schritte 1 und 2). In Data Jujitsu(O'Reilly) stellt DJ Patil fest, dass "80 % der Arbeit in einem Datenprojekt in der Bereinigung der Daten besteht". In Kapitel 5 zeige ich, wie die Kommandozeile dabei helfen kann, solche Datenbereinigungendurchzuführen.
Daten erforschen
Sobald du deine Daten gescrubbt hast, kannst du sie erforschen. Jetzt wird es interessant, denn erst beim Erforschen lernst du deine Daten wirklich kennen. In Kapitel 7 zeige ich dir, wie du die Kommandozeile nutzen kannst:
-
Schau dir deine Daten an
-
Leite Statistiken aus deinen Daten ab
-
Aufschlussreiche Visualisierungen erstellen
Zu den in Kapitel 7 verwendeten Kommandozeilen-Tools gehören csvstat
und rush
.
Daten modellieren
Wenn du deine Daten erklären oder vorhersagen willst, was passieren wird, möchtest du wahrscheinlich ein statistisches Modell der Daten erstellen. Zu den Techniken, um ein Modell zu erstellen, gehören Clustering, Klassifizierung, Regression und Dimensionalitätsreduktion. Die Kommandozeile ist nicht geeignet, um ein neues Modell von Grund auf zu programmieren. Es ist jedoch sehr nützlich, ein Modell von der Kommandozeile aus erstellen zu können. In Kapitel 9 stelle ich mehrere Kommandozeilen-Tools vor, die entweder lokal ein Modell erstellen oder eine API verwenden, um die Berechnung in der Cloud durchzuführen.
Daten interpretieren
Der letzte und vielleicht wichtigste Schritt des OSEMN-Modells ist die Interpretation der Daten. Dieser Schritt beinhaltet:
-
Ziehe Schlussfolgerungen aus deinen Daten
-
Bewerten, was deine Ergebnisse bedeuten
-
Kommuniziere deine Ergebnisse
Um ehrlich zu sein, ist der Computer hier nur von geringem Nutzen, und die Kommandozeile kommt in diesem Stadium nicht wirklich ins Spiel. Wenn du diesen Schritt erreicht hast, liegt es an dir. Dies ist der einzige Schritt im OSEMN-Modell, der kein eigenes Kapitel hat. Stattdessen verweise ich dich auf das Buch Thinking with Data von Max Shron (O'Reilly).
Intermezzo-Kapitel
Neben den Kapiteln, die sich mit den OSEMN-Schritten befassen, gibt es vier Intermezzo-Kapitel. Jedes behandelt ein allgemeineres Thema zu Data Science und wie die Kommandozeile dafür eingesetzt wird. Diese Themen sind auf jeden Schritt im Data Science-Prozess anwendbar.
In Kapitel 4 erkläre ich, wie du wiederverwendbare Tools für die Kommandozeile erstellst. Diese persönlichen Tools können aus langen Befehlen stammen, die du auf der Kommandozeile eingegeben hast, oder aus vorhandenem Code, den du z.B. in Python oder R geschrieben hast. Wenn du in der Lage bist, deine eigenen Tools zu erstellen, kannst du effizienter und produktiver werden.
Da die Kommandozeile eine interaktive Umgebung für Data Science ist, kann es schwierig werden, den Überblick über deinen Arbeitsablauf zu behalten. In Kapitel 6 stelle ich dir ein Kommandozeilen-Tool namens make
vor, mit dem du deinen Data Science-Workflow in Form von Aufgaben und deren Abhängigkeiten definieren kannst. Dieses Tool erhöht die Reproduzierbarkeit deines Workflows, nicht nur für dich, sondern auch für deine Kollegen und Kolleginnen.
In Kapitel 8 erkläre ich, wie deine Befehle und Werkzeuge beschleunigt werden können, indem du sie parallel ausführst. Mit dem Kommandozeilenwerkzeug GNU Parallel kannst du Kommandozeilenwerkzeuge auf sehr große Datensätze anwenden und sie auf mehreren Kernen oder sogar auf entfernten Rechnern ausführen.
In Kapitel 10 gehe ich darauf ein, wie du die Möglichkeiten der Kommandozeile in anderen Umgebungen und Programmiersprachen wie R, RStudio, Python, Jupyter Notebooks und sogar Apache Spark nutzen kannst.
Was ist die Kommandozeile?
Bevor ich erkläre, warum du die Kommandozeile für die Datenwissenschaft nutzen solltest, werfen wir einen Blick darauf , wie die Kommandozeile eigentlich aussieht (vielleicht ist sie dir schon bekannt). Die Abbildungen 1-2 und 1-3 zeigen einen Screenshot der Kommandozeile, wie sie standardmäßig unter macOS bzw. Ubuntu erscheint. Ubuntu ist eine bestimmte GNU/Linux-Distribution, die ich in diesem Buch verwenden werde.
Das Fenster, das in den beiden Screenshots zu sehen ist, wird Terminal genannt. Es ist das Programm, mit dem du mit der Shell interagieren kannst. Es ist die Shell, die die Befehle ausführt, die du eingibst. In Kapitel 2 erkläre ich diese beiden Begriffe ausführlicher.
Hinweis
Ich zeige hier nicht die Eingabeaufforderung von Microsoft Windows (auch bekannt als Command Prompt oder PowerShell), weil sie sich grundlegend von den in diesem Buch vorgestellten Befehlen unterscheidet und mit ihnen nicht kompatibel ist. Die gute Nachricht ist, dass du unter ein Docker-Image unter Microsoft Windows installieren kannst, damit du in der Lage bist, mitzukommen. Die Installation des Docker-Images wird in Kapitel 2 erklärt.
Die Interaktion mit deinem Computer durch das Eingeben von Befehlen unterscheidet sich sehr von der Arbeit über eine grafische Benutzeroberfläche (GUI). Wenn du es gewohnt bist, Daten z. B. in Microsoft Excel zu bearbeiten, mag dir diese Vorgehensweise zunächst einschüchternd erscheinen. Hab keine Angst. Vertrau mir, wenn ich sage, dass du dich sehr schnell an die Arbeit in der Kommandozeile gewöhnen wirst.
In diesem Buch werden die Befehle, die ich eingebe, und die Ausgaben, die sie erzeugen, als Text angezeigt. Der Inhalt des Terminals in den beiden Screenshots würde zum Beispiel wie folgt aussehen:
$ whoami dst $ date Tue Jun 29 02:25:17 PM CEST 2021 $ echo 'The command line is awesome!' | cowsay -f tux ______________________________ < The command line is awesome! > ------------------------------ \ \ .--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/ $
Du wirst feststellen, dass jedem Befehl ein Dollarzeichen ( ) vorangestellt ist.$
Die Eingabeaufforderung in den beiden Screenshots zeigt mehr Informationen, nämlich den Benutzernamen, das Datum und einen Pinguin. Es ist eine Konvention, in den Beispielen nur ein Dollarzeichen zu zeigen, weil die Eingabeaufforderung (1) sich während einer Sitzung ändern kann (wenn du in ein anderes Verzeichnis wechselst), (2) vom Benutzer angepasst werden kann (z. B. kann sie auch die Uhrzeit oder den aktuellen git
3 Zweig, an dem du gerade arbeitest) und (3) für die Befehle selbst irrelevant ist.
Im nächsten Kapitel werde ich mehr über die wichtigsten Kommandozeilenkonzepte erklären. Aber zuerst ist es an der Zeit zu erklären , warum du lernen solltest, die Kommandozeile für Data Science zu nutzen.
Warum Data Science an der Kommandozeile?
Die Kommandozeile hat viele große Vorteile, die dich zu einem effizienten und produktiven Datenwissenschaftler machen können. Grob zusammengefasst ist die Kommandozeile agil, erweiterbar, skalierbar und allgegenwärtig.
Die Kommandozeile ist agil
Der erste Vorteil von der Kommandozeile ist, dass sie es dir ermöglicht, agil zu sein. Data Science ist sehr interaktiv und explorativ, und die Umgebung, in der du arbeitest, muss das zulassen. Die Kommandozeile erreicht das auf zwei Arten.
Erstens bietet die Kommandozeile eine sogenannte Read-Eval-Print-Schleife (REPL). Das heißt, du gibst einen Befehl ein, drückst die Eingabetaste und der Befehl wird sofort ausgewertet. Eine REPL ist für die Datenwissenschaft oft viel praktischer als der Edit-Compile-Run-Debug-Zyklus, der mit Skripten, großen Programmen und z.B. Hadoop-Jobs verbunden ist. Deine Befehle werden sofort ausgeführt, können nach Belieben gestoppt und schnell geändert werden. Dieser kurze Iterationszyklus ermöglicht es dir, mit deinen Daten zu spielen.
Zweitens ist die Kommandozeile sehr nah am Dateisystem. Da Daten die wichtigste Zutat für Data Science sind, ist es wichtig, dass du einfach mit den Dateien arbeiten kannst, die deinen Datensatz enthalten. Die Kommandozeile bietet dafür viele praktische Werkzeuge.
Die Kommandozeile wird immer umfangreicher
Die Kommandozeile lässt sich gut mit anderen Technologien integrieren. Ganz gleich, welche Technologie du in deinem Data Science-Workflow einsetzt (R, Python oder Excel), ich möchte dir nicht vorschlagen, diesen Workflow aufzugeben. Betrachte die Kommandozeile stattdessen als ergänzende Technologie, die die Technologien, die du derzeit einsetzt, erweitert. Das kann sie auf drei Arten tun.
Erstens kann die Kommandozeile als Bindeglied zwischen vielen verschiedenen Data-Science-Tools dienen. Eine Möglichkeit, Tools zu verbinden, besteht darin, die Ausgabe des ersten Tools mit der Eingabe des zweiten Tools zu verbinden. In Kapitel 2 erkläre ich, wie das funktioniert.
Zweitens kannst du oft Aufgaben aus deiner eigenen Umgebung an die Kommandozeile delegieren. Python, R und Apache Spark ermöglichen es dir zum Beispiel, Kommandozeilentools auszuführen und ihre Ausgabe aufzuzeichnen. Ich zeige das anhand von Beispielen in Kapitel 10.
Drittens kannst du deinen Code (z. B. ein Python- oder R-Skript) in ein wiederverwendbares Kommandozeilentool umwandeln. Auf diese Weise spielt es keine Rolle mehr, in welcher Sprache geschrieben wurde; es kann direkt von der Kommandozeile aus verwendet werden oder von jeder Umgebung, die sich in die Kommandozeile integrieren lässt, wie im vorherigen Absatz erwähnt. Wie das geht, erkläre ich in Kapitel 4.
Letztendlich hat jede Technologie ihre Stärken und Schwächen, daher ist es gut, mehrere Technologien zu kennen und diejenige zu verwenden, die für die jeweilige Aufgabe am besten geeignet ist. Manchmal bedeutet das, R zu verwenden, manchmal die Kommandozeile und manchmal sogar Stift und Papier. Am Ende dieses Buches wirst du ein solides Verständnis dafür haben, wann du die Kommandozeile verwenden solltest und wann du besser mit deiner bevorzugten Programmiersprache oder statistischen Berechnungsumgebung weitermachst.
Die Kommandozeile ist skalierbar
Wie ich bereits gesagt habe, unterscheidet sich die Arbeit mit auf der Kommandozeile sehr von der Arbeit mit einer grafischen Benutzeroberfläche (GUI). Auf der Kommandozeile tippst du Dinge ein, während du sie auf einer GUI durch Zeigen und Klicken mit der Maus erledigst.
Alles, was du manuell in die Kommandozeile eingibst, kann auch durch Skripte und Tools automatisiert werden. So kannst du deine Befehle ganz einfach wiederholen, wenn du einen Fehler gemacht hast, wenn sich die Eingabedaten geändert haben oder weil dein Kollege dieselbe Analyse durchführen möchte. Außerdem können deine Befehle in bestimmten Abständen, auf einem entfernten Server und parallel auf vielen Datenpaketen ausgeführt werden (mehr dazu in Kapitel 8).
Weil die Befehlszeile automatisierbar ist, wird sie skalierbar und wiederholbar. Es ist nicht einfach, das Zeigen und Klicken zu automatisieren, was eine GUI zu einer weniger geeigneten Umgebung für skalierbare und wiederholbare Data Science macht.
Die Kommandozeile ist erweiterbar
Die Kommandozeile selbst wurde vor über 50 Jahren erfunden . Ihre Kernfunktionalität ist weitgehend unverändert geblieben, aber ihre Werkzeuge, die die Arbeitspferde der Kommandozeile sind, werden täglich weiterentwickelt.
Die Kommandozeile selbst ist sprachunabhängig. Daher können die Kommandozeilen-Tools von in vielen verschiedenen Programmiersprachen geschrieben werden. Die Open-Source-Gemeinschaft produziert viele kostenlose und hochwertige Kommandozeilen-Tools, die wir für die Datenwissenschaft nutzen können.
Diese Kommandozeilen-Tools können zusammenarbeiten, was die Kommandozeile sehr flexibel macht. Du kannst auch deine eigenen Tools erstellen und so die effektive Funktionalität der Kommandozeile erweitern.
Die Kommandozeile ist allgegenwärtig
Da die Kommandozeile mit jedem Unix-ähnlichen Betriebssystem, einschließlich Ubuntu Linux und macOS, ausgeliefert wird, ist sie an vielen Orten zu finden. Außerdem laufen 100% der fünfhundert größten Supercomputer mit Linux.4 Wenn du also jemals einen dieser Supercomputer in die Hände bekommst (oder dich im Jurassic Park wiederfindest, wo die Türschlösser nicht funktionieren), solltest du dich mit der Kommandozeile auskennen!
Aber Linux läuft nicht nur auf Supercomputern, sondern auch auf Servern, Laptops und eingebetteten Systemen. Heutzutage bieten viele Unternehmen Cloud Computing an, bei dem du ganz einfach neue Maschinen starten kannst. Wenn du dich jemals bei einer solchen Maschine (oder einem Server im Allgemeinen) anmeldest, ist es fast sicher, dass du auf der Kommandozeile landest.
Wichtig ist auch, dass die Kommandozeile kein Hype ist. Diese Technologie gibt es schon seit mehr als fünf Jahrzehnten und ich bin überzeugt, dass sie noch fünf weitere Jahrzehnte Bestand haben wird. Die Nutzung der Kommandozeile (für Data Science und allgemein) zu lernen, ist daher eine lohnende Investition.
Zusammenfassung
In diesem Kapitel habe ich dir das OSEMN-Modell für die Datenwissenschaft vorgestellt, das ich im gesamten Buch als Leitfaden verwende. Ich habe dir einige Hintergrundinformationen über die Unix-Befehlszeile gegeben und dich hoffentlich davon überzeugt, dass sie eine geeignete Umgebung für die Datenwissenschaft ist. Im nächsten Kapitel zeige ich dir, wie du loslegst, indem du die Datensätze und Tools installierst und die grundlegenden Konzepte erklärst.
Für weitere Erkundungen
-
Das Buch UNIX: A History and a Memoir von Brian W. Kernighan (im Selbstverlag) erzählt die Geschichte von Unix und erklärt, was es ist, wie es entwickelt wurde und warum es wichtig ist.
-
2018 habe ich auf der Strata London einen Vortrag mit dem Titel "50 Gründe, die Shell für Data Science zu lernen" gehalten. Du kannst die Folien lesen, wenn du noch mehr Überzeugungsarbeit leisten willst.
-
Das kurze, aber feine Buch Thinking with Data von Max Shron (O'Reilly) konzentriert sich auf das Warum statt auf das Wie und bietet einen Rahmen für die Definition deines Data Science-Projekts, der dir hilft, die richtigen Fragen zu stellen und die richtigenProbleme zu lösen.
1 Die Entwicklung des UNIX-Betriebssystems begann im Jahr 1969. Es verfügte von Anfang an über eine Befehlszeile. Das wichtige Konzept der Pipes, das ich in "Grundlegende Unix-Konzepte" besprechen werde , kam 1973 hinzu.
2 "A Taxonomy of Data Science", dataists (Blog), 25. September 2010, http://www.dataists.com/2010/09/a-taxonomy-of-data-science.
3 Linus Torvalds und Junio C. Hamano, git - the Stupid Content Tracker, Version 2.25.1, 2021, https://git-scm.com.
4 Siehe TOP500, das festhält, wie viele Supercomputer unter Linux laufen.
Get Datenwissenschaft an der Kommandozeile, 2. now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.