Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Datenwissenschaft findet im Code statt. Ganz gleich, ob du ein maschinelles Lernsystem aufbaust, deine Daten zum ersten Mal untersuchst, die Verteilung deiner Daten visualisierst oder eine statistische Analyse durchführst, deine Programmier- und Rechenkenntnisse sind das A und O. Wenn du an produktivem Code arbeitest, sind diese Fähigkeiten unerlässlich, um erfolgreichen, wartbaren Code zu schreiben. Auch wenn du nicht in einem Team für Produktionssoftware arbeitest, wirst du es als vorteilhaft empfinden, robusteren, reproduzierbaren Code zu schreiben, den andere Datenwissenschaftler/innen problemlos nutzen können. Und wenn du alleine arbeitest, werden gute Praktiken deine Programmierung beschleunigen und dir helfen, deinen Code nach einer Pause wieder aufzunehmen.

Ich habe nicht immer den Wert einer guten Technik erkannt. Zu Beginn meiner Data-Science-Karriere kam ich in ein Team, in dem ich der einzige Data Scientist war. Meine Teamkollegen waren Softwareentwickler und -designer, und ich war besorgt, dass es schwierig sein würde, meine Fähigkeiten zu verbessern, wenn ich nicht von anderen Datenwissenschaftlern lernen konnte. Ich äußerte meine Bedenken gegenüber meinem Kollegen, einem Entwickler. Er sagte: "Aber wenn du lernst, besseren Code zu schreiben, kannst du mehr Data Science machen." Diese Bemerkung hat mich nicht mehr losgelassen, und seitdem habe ich festgestellt, dass die Verbesserung meiner Fähigkeiten in der Softwareentwicklung für die Datenwissenschaft von großem Nutzen ist. Es hat mir geholfen, einen Code zu schreiben, der für meine Kollegen einfacher zu benutzen ist und den ich auch nach vielen Monaten noch leicht ändern kann, wenn ich darauf zurückkomme.

Mit diesem Buch möchte ich dich auf deinem Weg zu besserem Data Science Code begleiten. Ich beschreibe bewährte Methoden für gängige Aufgaben wie Testen, Fehlerbehandlung und Protokollierung. Ich erkläre dir, wie du Code schreibst, der leichter zu warten ist und auch dann noch stabil bleibt, wenn deine Projekte wachsen. Ich zeige dir, wie du deinen Code so gestaltest, dass andere ihn leicht nutzen können, und am Ende dieses Buches wirst du in der Lage sein, deinen Data Science Code in eine größere Codebasis zu integrieren.

Du denkst vielleicht, dass Fähigkeiten in der Softwareentwicklung im Zeitalter der generativen KI weniger nützlich sind. Kann ChatGPT nicht einfach deinen Code für dich schreiben? Ich behaupte, dass der Inhalt dieses Buches immer noch genauso nützlich ist, auch wenn du deine Programmierung mit einem KI-Assistenten beschleunigen kannst. Wie ich im Laufe dieses Buches zeigen werde, gibt es für jede Funktion, die du schreibst, viele Möglichkeiten, und es ist unglaublich hilfreich, die Prinzipien zu verstehen, warum du eine Codezeile einer anderen vorziehst. Du musst die Ergebnisse jedes KI-Assistenten auswerten und prüfen, ob er für das Problem, an dem du arbeitest, eine gute Wahl getroffen hat. Dieses Buch wird dir dabei helfen.

Für wen ist dieses Buch?

Dieses Buch richtet sich an Datenwissenschaftler/innen, aber auch Personen, die in eng verwandten Bereichen arbeiten, wie Datenanalysten/innen, Ingenieure/innen für maschinelles Lernen (ML) und Dateningenieure/innen, werden es nützlich finden. Ich erkläre bewährte Prinzipien der Softwareentwicklung, die für jeden nützlich sind, der Code schreibt, aber die Beispiele, die ich zur Veranschaulichung dieser Prinzipien verwende, werden vor allem Datenwissenschaftlern vertraut sein.

Ich habe versucht, dieses Buch für Datenwissenschaftler/innen zugänglich zu machen, die noch relativ neu auf dem Gebiet sind. Vielleicht hast du gerade ein Studium der Datenwissenschaften abgeschlossen oder beginnst gerade deinen ersten Job in der Industrie. In diesem Buch geht es um die praktischen Fähigkeiten in der Softwareentwicklung, die in den Einführungskursen für Datenwissenschaftler/innen nicht immer enthalten sind. Vielleicht hast du aber auch keinen formalen Data-Science-Kurs belegt. Vielleicht bist du Autodidakt oder du kommst von der Mathematik oder einer anderen Wissenschaft zu den Datenwissenschaften. Ganz gleich, welchen Weg du in die Datenwissenschaft einschlagen willst, dieses Buch ist für dich.

Auch erfahrene Datenwissenschaftler/innen werden eine Menge lernen, und du wirst dieses Buch besonders nützlich finden, wenn du in einem Job arbeitest, in dem du oft mit Softwareentwickler/innen zu tun hast. Du lernst, wie du effektiv an einer größeren Codebasis arbeiten kannst und wie du Python-Code schreibst, der in der Produktion effizient funktioniert.

Ich gehe davon aus, dass du bereits die Grundlagen der Datenwissenschaft kennst, einschließlich Datenexploration, Datenvisualisierung, Datenverarbeitung, grundlegende ML und die dazugehörigen mathematischen Fähigkeiten. Ich gehe auch davon aus, dass du bereits die Grundlagen des Programmierens in Python kennst: wie man Funktionen und Kontrollflussanweisungen schreibt und die Grundlagen der Verwendung von Modulen wie NumPy, Matplotlib, pandas und scikit-learn. Wenn diese Module für dich neu sind, empfehle ich dir die folgenden Bücher:

  • Python Data Science Handbook von Jake VanderPlas (O'Reilly, 2023)

  • Data Science From Scratch von Joel Grus (O'Reilly, 2019)

  • Learning Data Science von Sam Lau, Joseph Gonzalez, und Deborah Nolan (O'Reilly, 2023)

Dies ist kein Buch für Softwareentwickler/innen, die Data Science und maschinelles Lernen lernen wollen. In diesem Fall empfehle ich AI and Machine Learning for Coders von Laurence Moroney (O'Reilly, 2020).

Warum Python?

Alle Codebeispiele in diesem Buch sind in Python geschrieben, und viele der Kapitel beschreiben Python-spezifische Tools. In den letzten Jahren hat sich Python zur beliebtesten Programmiersprache für Data Science entwickelt. Das folgende Zitat stammt aus einer Umfrage, die Anaconda 2021 unter mehr als 3.000 Datenwissenschaftlern durchgeführt hat:

"63% der Befragten gaben an, dass sie Python immer oder häufig verwenden, was es zur beliebtesten Sprache in der diesjährigen Umfrage macht. Außerdem unterrichten 71% der Lehrkräfte Python und 88% der Schüler/innen gaben an, dass sie in Python unterrichtet werden, um sich auf den Bereich Data Science/ML vorzubereiten."

Python verfügt über eine äußerst solide Reihe von Open-Source-Bibliotheken für Data Science mit guter Unterstützung und einer gesunden Gemeinschaft von Maintainern. Große richtungsweisende Unternehmen haben Python für ihre wichtigsten ML-Frameworks gewählt, darunter TensorFlow (Google) und PyTorch (Meta). Aus diesem Grund scheint Python bei Datenwissenschaftlern, die an produktivem maschinellem Lerncode arbeiten, besonders beliebt zu sein, da hier gute Programmierkenntnisse besonders wichtig sind.

Ich habe die Erfahrung gemacht, dass die Python-Gemeinschaft freundlich und aufgeschlossen ist und viele hervorragende Veranstaltungen anbietet, die mir geholfen haben, meine Fähigkeiten zu verbessern. Da Python meine bevorzugte Programmiersprache ist, fiel mir die Wahl für dieses Buch leicht.

Was nicht in diesem Buch steht

Wie ich bereits in "Für wen ist dieses Buch?" erwähnt habe , ist dies keine Einführung in die Datenwissenschaft oder eine Einführung in die Programmierung. Außerdem kommt keines der folgenden Themen in diesem Buch vor:

Python installieren: Ich gehe davon aus, dass du bereits eine aktuelle Version von Python (3.9 oder neuer) installiert hast und über eine IDE (integrierte Entwicklungsumgebung) verfügst, in der du Code schreiben kannst, wie z. B. VS Code oder PyCharm. Ich werde nicht beschreiben, wie du Python installierst, aber ich werde in Kapitel 10 erklären, wie du eine virtuelle Umgebung einrichtest.

Andere Programmiersprachen: In diesem Buch wird nur Python behandelt, und zwar aus den in "Warum Python?" genannten Gründen . Ich habe keine Beispiele in R, Julia, SQL, MATLAB oder einer anderen Sprache aufgenommen.

Kommandozeilen-Scripting: Kommandozeilen- oder Shell-Skripting ist eine leistungsstarke Methode, um mit Dateien und Text zu arbeiten. Ich gehe hier nicht darauf ein, weil es in anderen Quellen sehr ausführlich behandelt wird, zum Beispiel in Data Science at the Command Line von Jeroen Janssens (O'Reilly, 2021).

Python für Fortgeschrittene: Die Beispiele in diesem Buch enthalten relativ einfachen Code. Für fortgeschrittene Python-Programmierung empfehle ich Robust Python von Patrick Viafore (O'Reilly, 2021).

Leitfaden zu diesem Buch

In diesem Buch gehe ich zunächst auf gute Praktiken beim Schreiben einzelner Funktionen ein und zeige dir im Detail, wie du deinen Code verbessern kannst. In späteren Kapiteln beschreibe ich, wie du diesen Code für andere einfach nutzbar machen kannst, und ich erkläre einige gängige Techniken für den Einsatz und bewährte Methoden für die Arbeit in Software.

Dieses Buch ist in 14 Kapitel unterteilt. Hier ist eine Übersicht über ihren Inhalt:

Kapitel 1, "Was ist guter Code?", führt in die Grundlagen ein, wie man Code schreibt, der einfach, modular, lesbar, effizient und robust ist.

In Kapitel 2, "Analyse der Codeleistung", wird beschrieben, wie du die Leistung deines Codes messen kannst, und es werden einige Möglichkeiten besprochen, wie du deinen Data Science Code effizienter gestalten kannst.

In Kapitel 3, "Effektive Nutzung von Datenstrukturen", werden die Kompromisse bei der Wahl der Datenstrukturen, mit denen du arbeitest, erörtert. Die von dir gewählte Datenstruktur kann einen großen Einfluss auf die Effizienz deines Codes haben.

Kapitel 4, "Objektorientierte Programmierung und funktionale Programmierung", beschreibt die Grundlagen dieser Programmierstile. Richtig eingesetzt, können sie dir helfen, gut strukturierten und effizienten Code zu schreiben.

In Kapitel 5, "Fehler, Logging und Debugging", erfährst du, was zu tun ist, wenn dein Code nicht funktioniert, wie du sinnvolle Fehler auslösen kannst und wie du herausfinden kannst, woher diese Fehler kommen.

In Kapitel 6, "Codeformatierung, Lintingund Typprüfung", wird beschrieben, wie du deinen Code mit Hilfe von Tools, die diesen Prozess automatisieren können, standardisieren kannst.

In Kapitel 7, "Testen deines Codes", geht es darum, wie du deinen Code durch Testen robust gegenüber Änderungen der Eingaben machst. Das ist ein wichtiger Schritt, um einen Code zu schreiben, der leicht zu warten ist.

In Kapitel 8, "Design und Refactoring", geht es darum, wie du deine Projekte standardisiert und konsistent strukturierst und wie du von einem Notizbuch zu einem Skript kommst.

Kapitel 9, "Dokumentation", zeigt dir, wie du deinen Code für andere lesbar machst, einschließlich bewährter Methoden zur Benennung und Kommentierung deines Codes.

Kapitel 10, "Gemeinsame Nutzung deines Codes: Versionskontrolle, Abhängigkeiten und Paketierung" behandelt die Grundlagen der Versionskontrolle mit Git und wie du die Abhängigkeiten deines Projekts in virtuellen Umgebungen verwaltest. Außerdem wird gezeigt, wie du ein Skript in ein Python-Paket umwandelst.

Kapitel 11, "APIs", führt in das Konzept der APIs ein, zeigt, wie du sie nutzen kannst, und enthält ein grundlegendes Beispiel mit FastAPI.

Kapitel 12, "Automatisierung und Bereitstellung", beschreibt die Grundlagen der Codebereitstellung, wie du deine Codebereitstellung mit CI/CD (Continuous Integration/Continuous Deployment or Delivery) und GitHub Actions automatisierst und wie du deinen Code in einem Docker-Container in einer Cloud-Umgebung bereitstellst.

Kapitel 13, "Sicherheit", behandelt allgemeine Sicherheitsrisiken, wie diese Risiken entschärft werden können und einige der Sicherheitsbedrohungen, die nur beim maschinellen Lernen auftreten.

Kapitel 14, "Arbeiten in der Softwarebranche", führt dich in gängige Praktiken in Software-Entwicklungsteams ein, einschließlich agiler Arbeitsweisen, beschreibt gängige Rollen in Software-Teams und stellt die weitere Community vor.

Kapitel 15, "Nächste Schritte", schließt mit einigen Gedanken darüber, wie sich die Codierung in Zukunft verändern könnte, und einigen Vorschlägen, was du als Nächstes tun kannst.

Leseordnung

Du musst die Kapitel in diesem Buch nicht unbedingt in der richtigen Reihenfolge lesen, aber ich empfehle, dass du mit Kapitel 1 beginnst. In diesem Kapitel erkläre ich die Grundlagen, wie man guten Code schreibt, und stelle Themen vor, die ich im Rest des Buches ausführlicher behandeln werde. Außerdem stelle ich einige der Codebeispiele vor, die ich im Laufe des Buches verwenden werde.

Nach Kapitel 1 können viele der Kapitel für sich allein gelesen werden, mit diesen Ausnahmen:

Einige Kapitel enthalten einen Abschnitt, in dem ein Thema des maschinellen Lernens vertieft wird. Diese Abschnitte enthalten immer ML im Namen des Abschnitts. Wenn dein Job nichts mit ML zu tun hat, kannst du diese Abschnitte überspringen, ohne etwas zu verpassen, was du zum Verständnis des restlichen Kapitels brauchst.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/catherinenelson1/SEforDS zum Download bereit .

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eineGenehmigung erforderlich.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Ein Beispiel: "Softwareentwicklung für Datenwissenschaftler von Catherine Nelson (O'Reilly). Copyright 2024 Catherine Nelson, 978-1-098-13620-8."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen an sefordatascientists@gmail.com oder an den Verlag:

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/software-engineering-data-scientists aufrufen .

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.

Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media

Schau uns auf YouTube: https://youtube.com/oreillymedia

Danksagungen

Ein großes Dankeschön an alle, die mir bei diesem Buch geholfen haben! Eure Kommentare, euer Feedback, eure Diskussionen und eure Unterstützung waren so wertvoll.

Es war mir eine große Freude, mit dem Team von O'Reilly zusammenzuarbeiten. Vielen Dank an Virginia Wilson, die eine großartige, unterstützende Redakteurin war. Es hat mir wirklich Spaß gemacht, mit dir zu arbeiten. Vielen Dank an Nicole Butterfield für die wertvollen Hinweise und deine Hilfe bei der Erstellung des Buchvorschlags. Danke an Jeff Bleiel für die gründliche Durchsicht mehrerer Kapitel und an Chris Faucher für den reibungslosen Ablauf der Produktion.

Vielen Dank an meine technischen Prüfer William Jamir Silva, Ganesh Harke, Jo Stichbury, Antony Milne, Jess Males und Swetha Kommuri. Euer Feedback war sehr konstruktiv und hat das endgültige Buch so viel besser gemacht. Ich habe eure Liebe zum Detail und eure hilfreichen Vorschläge sehr zu schätzen gewusst. Ich danke Rob Masson für sein großartiges Feedback zum endgültigen Entwurf und die aufmerksamen Diskussionen während desSchreibprozesses.

Vielen Dank an Carol Willing, Ricardo Martín Brualla, Chris Trudeau, Michelle Liu, Maryam Ehsani, Shivani Patel, John Sweet, Andy Ross und Abigail Mesrenyame Dogbe für wertvolle technische Diskussionen und aufschlussreiche Gespräche. Ich habe auch sehr davon profitiert, Teil der breiteren Python- und PyLadies-Community zu sein; vielen Dank an all die Freiwilligen, die ihre Zeit dafür opfern.

Zum Schluss möchte ich mich bei meinen tollen Freunden und meiner Familie für all ihre Unterstützung bedanken. Rob, Mum, Richard, Lina, Salomé, Ricardo, Chris, Kiana und Katie - ich weiß euch alle sehr zu schätzen.

Get Software Engineering für Datenwissenschaftler 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.