Zum Hauptinhalt springenZum Seitenfuß springen

 |  Blog

Jupyter-Notebooks und Python: Vorteile, Grenzen, Best Practices

Wer sich in Data Science einarbeitet, kommt an Python als Programmiersprache nicht vorbei. Besonders beliebt ist dabei die Arbeit mit Jupyter-Notebooks. Aber sind diese Python Notebooks wirklich die perfekte Lösung für Python-Projekte?

Das sind Jupyter-Notebooks:

Der Begriff „Jupyter Notebook“ kann verschiedene Dinge bezeichnen: ein Jupyter-Notebook-Dokument oder die Webanwendung mit der Jupyter-Notebook-Dokumente bearbeitet werden können. In diesem Blogbeitrag geht es um das Notebook-Dokument. Das lässt sich nämlich nicht nur in der Webanwendung, sondern auch beispielsweise in VS Code nutzen.

Das sind ihre Vorteile:

Die größte Stärke der Jupyter-Notebooks liegt in ihrem Aufbau. Sie sind interaktiv und bestehen aus einer Liste von Ein- und Ausgabeblöcken. Geschriebener Code kann also in kleine Stücke zerlegt und abschnittsweise ausgeführt werden. Die Ausgabe (z.B. eine Visualisierung) ist dann direkt unter dem Codeabschnitt zu sehen, der sie erzeugt hat. Zusätzlich können Textblöcke verwendet werden, um erklärende Inhalte hinzuzufügen. Diese Funktionalitäten machen Notebooks besonders für Tutorials und erste Experimente interessant. Kleine Änderungen lassen sich einfach testen, ohne den gesamten Code neu ausführen zu müssen.

Das sind ihre Grenzen:

Auch Jupyter-Notebooks haben zwei Seiten. Sie skalieren schlecht und lassen sich nur schwer in übliche Softwareentwicklungsprozesse integrieren. Doch was kann genau schiefgehen?

  • Da sich die Codezellen in beliebiger Reihenfolge ausführen lassen, kann man damit ungewolltes Verhalten erzielen. Zum Beispiel, wenn zuerst die Visualisierung gestartet und erst danach die Daten bearbeitet werden.
  • Notebooks lassen sich nur schwer in einzelne, wiederverwendbare Module zerlegen. Das führt zu viel Code-Duplizierung und damit zu schwer wartbarem Code.
  • Da es sich bei den Notebooks technisch um ein JSON-Dokument handelt, ist es schwierig, den Code (z.B. mit Git) zu versionieren. Die große Menge an Metadaten und den Ausgabeblöcken erschwert es, die relevanten Codeänderungen zu erkennen und korrekt zusammenzuführen. Bei gemeinsamer Entwicklung an einem Notebook kann es so im schlimmsten Fall zum Verlust von geschriebenem Code kommen.
  • Jupyter-Notebooks sind darauf ausgelegt, dass alle Codezellen in einem Kern laufen. Das macht es schwierig, asynchron zu arbeiten. Läuft eine einzelne Codezeile länger als gedacht, blockiert sie alle anderen. Das kann besonders bei großen Datenmengen zu einem Problem werden.
  • Damit die interaktiven Fähigkeiten erhalten bleiben, muss zu jedem Zeitpunkt das gesamte Notebook im Arbeitsspeicher geladen sein. Gerade bei großen Notebooks führt das zu Performanceverlusten. 

Was bedeutet das für Entwickler:innen?

Für kleine Experimente, einen Proof of Concept oder einen Wissensaustausch überwiegen die Vorteile von Jupyter Notebooks. Dort lässt sich der meiste Nutzen aus den interaktiven Codezellen ziehen. Geht es jedoch um die Entwicklung produktiver Systeme mit Versionskontrolle, CI/CD-Pipelines und langfristiger Wartung, sollte auf klassische Python-Skripte umgestiegen werden. Spätestens dann machen sich die genannten Nachteile früher oder später deutlich bemerkbar. 

Sie möchten ein Datenprojekt in die Realität umsetzen? Unsere Expert:innen unterstützen Sie dabei. Von der Idee bis zur passenden Technologie für Ihren Anwendungsfall.

 

 

Über die Autorin

 

Bianca Leßmann ist Data Engineer bei M&M Software mit einem Hintergrund in der Softwareentwicklung.  Erste Erfahrungen im Bereich Data Science konnte sie bereits während ihres Physikstudiums an der Leibniz Universität Hannover sammeln. Ihre Erfahrung verbindet Methodenwissen aus verschiedenen Bereichen und eröffnet neue Perspektiven auf datengetrieben Lösungen.

Erstellt von