Aus Linux-Magazin 05/2019

Jupyter Notebook und Lab für (Daten)-Wissenschaftler

© angellodeco, 123RF

Für viele Forscher und Statistiker gilt Jupyter Notebook als De-facto-Standard, wenn es um schnelles Prototyping und die explorative Datenanalyse geht. Außer auf Notebook wirft der Artikel aber auch einen Blick auf Jupyter Lab, das als nächste Generation von Notebooks in den Startlöchern steht.

Paul Romer [1] ist nicht nur der ehemalige Chefökonom der Weltbank. Zusammen mit Kollegen nahm er 2018 auch den Nobelpreis für Wirtschaftswissenschaften [2] entgegen. Er gewann den Preis für seine Theorien über ökonomisches Wachstum und für seine grundlegende Arbeit an der “Integration von Innovation in die langfristige makroökonomische Analyse”.

Was Romer mit Millionen anderer Forscher verbindet, ist die Tatsache, dass er Python und Jupyter Notebooks für seine Kalkulationen verwendet und um seine Forschung mit anderen zu teilen. Romer bevorzugt Notebooks gegenüber den üblichen proprietären Tools wie Mathematics von Microsoft [3] und Stata [4], weil er davon überzeugt ist, dass Forschung transparent, reproduzierbar und quelloffen sein sollte.

In einem Blogpost [5] schrieb Romer, seit er häufiger mit Mathematik und Statistik arbeite, habe er festgestellt, dass Jupyter Notebooks nicht nur große Datenmengen für ihn bewältigen können. Die Software ermögliche es ihm auch, auf sehr einfache Weise Forschungsergebnisse zu teilen, die Programmcode, Visualisierungen und Daten enthalten. Er sei ein großer Verfechter der Idee, offen Forschung zu betreiben und Daten sowie Code mit anderen Wissenschaftlern zu teilen. Aus diesem Grund sei Jupyter ein wichtiger Part des Open-Source-Ökosystems.

Literate Programming

Jupyter Notebook [6] gilt als Flaggschiff von Project Jupyter (siehe Kasten “Project Jupyter”), geht diesem aber als I-Python Notebooks, das seit 2011 existiert, zeitlich voraus. Das freie, quelloffene und interaktive Tool arbeitet Web-basiert und erlaubt es, Rechner-basierte Erzählmuster reproduzierbar zu erzeugen und zu teilen. Dabei stützt sich Jupyter Notebook auf Literate Programming ([7], [8]), einen Programmierstil, den Donald Knuth entwickelt und eingeführt hat.

Project Jupyter

Die gemeinnützige Organisation Project Jupyter gibt es seit 2014. Sie kommt aus dem I-Python-Umfeld und hat es sich auf die Fahnen geschrieben, quelloffene Software für die “interaktive Datenwissenschaft und wissenschaftliches Computing über alle Programmiersprachen hinweg” zu entwickeln [9]. Neben Jupyter Notebooks sind das Jupyter Kernel, Jupyter Hub und Jupyter Lab.

Knuth betont die Notwendigkeit, Programme als Literatur zu behandeln, die Menschen einfach verstehen. Vor diesem Hintergrund sind literate Programme eher wie Prosa oder Essays verfasst, in denen dem Code gewöhnlich Erläuterungen folgen. Dieser Stil erweist sich als nützlich in den Bereichen Lehre, Forschung und Arbeitsdemonstration, also speziell im wissenschaftlichen Umfeld.

Die Notebooks von Notebook bringen Zellen mit, in denen entweder ausführbarer Code steckt oder Markdown, um den Code zu dokumentieren. Der Anwender schreibt den Code oder die Kommentare in die Zellen, der Webbrowser reicht sie an einen Kernel weiter. Der wartet im Backend, führt den Code aus und präsentiert die Resultate (Abbildung 1).

Abbildung 1: Das klassische Jupyter Notebook erfreut sich großer Beliebtheit in der Wissenschaft.

Abbildung 1: Das klassische Jupyter Notebook erfreut sich großer Beliebtheit in der Wissenschaft.

Kernel heißen im Jupyter-Umfeld Programme, die Requests (etwa nach Programmausführungen und Code Completion) beantworten und über das Zero-MQ-Protokoll mit anderen Jupyter-Komponenten interagieren. Sie lassen sich mit mehreren Clients verwenden.

Notebook erleichtert es nicht nur, Code, Markdown-Text, Visualisierungen und Formeln zu teilen. Integriert sind zudem ein Dateibrowser, ein Texteditor und ein Terminal. Zusammen bilden sie den Grundpfeiler eines Notebooks.

Seine Anwender ziehen Jupyter Notebook in der Regel dazu heran, Aufgaben zu lösen, die sich um visuelle Datenerforschung, Datenbereinigung, Visualisierung, numerische Simulationen, statistische Modellierung und maschinelles Lernen drehen.

Erste Wahl

Die Browser-basierte Compute-Umgebung in Kombination mit dem reproduzierbaren Dokumentenformat macht Jupyter Notebook zur ersten Wahl für Millionen Forscher und Datenwissenschaftler rund um die Welt (Abbildung 2). Es gibt aber weitere Gründe für die Popularität der Software.

Abbildung 2: Die Nutzergruppen von Jupyter Notebook. Quelle: https://github.com/jupyter

Abbildung 2: Die Nutzergruppen von Jupyter Notebook. Quelle: https://github.com/jupyter

Open Source und einfach reproduzierbar

Jupyter Notebook steht entweder als Stand-alone-Paket oder als Teil der freien wissenschaftlichen Python-Distribution Anaconda [10] bereit. Es gibt keinerlei Restriktionen, was das Teilen und Benutzen der Notizbücher angeht. Datenwissenschaftler und Forscher müssen keine proprietären Tools benutzen oder den Umgang damit erlernen. Dass zudem alle Berechnungen im Browser stattfinden, vereinfacht und beschleunigt es, den Code zu reproduzieren.

Support für mehrere Sprachen

Aktuell unterstützt Jupyter Notebook mehr als 100 Programmiersprachen [6], darunter populäre wie Julia, Python, R und Scala. Der Python-Support überrascht nicht, gehört doch Python zu den beliebtesten Sprachen in der Datenwissenschaft und ist Jupyter, wie der Name schon andeutet, eine Python-Software. Kein Wunder also, dass es Datenwissenschaftler, die Python bereits einsetzen, einfach finden, für ihre Forschungen und Analysen auf Notebook umzusatteln.

Große Community

Auf Github warten bereits mehr als 3 Millionen Jupyter Notebooks aus allen möglichen Bereichen, zum Beispiel Bildung, wissenschaftliche Forschung, Kurse, Referenzmaterial, Journale und Notizen. Hinter Jupyter versammelt sich inzwischen eine umfangreiche internationale Community mit Mitgliedern aus fast allen Ländern. Eine Menge der Kernel für Jupyter hat tatsächlich diese Community selbst entwickelt.

Next Generation

Jupyter Notebooks basieren auf Webtechnologie von 2011. Seitdem hat sich das Web jedoch enorm verändert. Ein Ergebnis dieser Umbrüche: Eine Menge Features, die damals noch nicht absehbar waren, gelten inzwischen als notwendiger Standard. Zugleich sind zusammen mit der steigenden Zahl an Jupyter-Notebook-Nutzern auch die Erwartungen an die freien Notizbücher durch die Decke geschossen.

Installation unter Ubuntu 18.04

Jupyter Lab setzt das unter Ubuntu 18.04 installierte Python 3 und Jupyter Notebook ab Version 4.3 voraus. Zudem benötigt es zur Installation den Python-3-Paketmanager Pip:

sudo apt install python3-pip jupyter-notebook
pip3 install jupyterlab
cd .local/bin
./jupyter-lab

Die erste Zeile spielt den Paketmanager von Python 3 und Jupyter Notebook auf die Festplatte, die zweite hilft dabei, Jupyter Lab mit diesem Paketmanager zu installieren. Die ausführbare Datei landet im lokalen Verzeichnis »~/.local/bin«. Der Nutzer wechselt in den Zeilen 3 und 4 dorthin und ruft Jupyter Lab auf (oder ergänzt den Ordner im »$PATH«). Die Software startet dann einen Server und zeigt die zugehörige Webseite im Browser an.

Jupyter Notebook macht sich als alleinstehende Software ausgezeichnet, bringt aber keine interaktiven Fähigkeiten mit, die etwa darin bestehen, Code aus Textdateien interaktiv auszuführen. Dieser Mangel an Interaktivität führte unter anderem dazu, dass Nutzer mitgelieferte Features wie den Editor und das Terminal, die in das klassische Notebook einbettet sind, bisher nicht auf optimale Weise nutzen konnten.

Neuzugang im Labor

Jupyter Lab ist ein Interface der nächsten Generation für Project Jupyter. Es bietet die zentralen Komponenten des klassischen Jupyter Notebook an, etwa das Notizbuch, das Terminal und den Dateibrowser. Anders als beim klassischen Notebook verpackt Jupyter Lab diese Features aber in einem flexiblen und vielseitigen Benutzerinterface.

Die Grundidee von Jupyter Lab besteht also darin, die Features des klassischen Notebook um einige weitere zu ergänzen und sie unter einem gemeinsamen Dach zu versammeln (Abbildung 3).

Abbildung 3: Jupyter Lab versammelt auf seiner Arbeitsfläche Notebooks, Textdateien, Terminals und Notebook-Ausgaben. Alle sind in der Lage, miteinander zu interagieren.

Abbildung 3: Jupyter Lab versammelt auf seiner Arbeitsfläche Notebooks, Textdateien, Terminals und Notebook-Ausgaben. Alle sind in der Lage, miteinander zu interagieren.

Project Jupyter treibt die Entwicklung von Jupyter Lab intensiv voran, inzwischen zählt das Projekt mehr als 200 Entwickler und rund 14000 Commits. Zwar befindet es sich im Alphastadium, löst aber seit der Erstveröffentlichung bereits einigen Enthusiasmus in der Community aus. Dabei ist Jupyter Lab gar keine neue Implementierung des Notebook-Formats, sondern lediglich ein neues Frontend für die existierende Architektur. Das aber ermöglicht es, neue Features einzubauen, die in der ursprünglichen Version von Notebook fehlen.

Was anders ist

Im klassischen Jupyter Notebook gehörte zu jedem Notizbuch ein eigener Kernel. Jupyter Lab erzeugt hingegen eine eigene Umgebung, in der sich Kernel teilen lassen. Diese Möglichkeit, Komponenten zu teilen, hebt Jupyter Lab deutlich hervor. Zu den nützlichen Features von Jupyter Lab gehört zudem das flexible Layout: Anwender können das Notebook in einem Fenster betrachten, das Terminal in einem anderen. Zudem dürfen Nutzer, wie es Abbildung 4 zeigt, die Notebooks minimieren, maximieren und nebeneinander betreiben.

Abbildung 4: Das Interface von Jupyter Lab (hier unter Ubuntu) zeigt sein flexibles Layout.

Abbildung 4: Das Interface von Jupyter Lab (hier unter Ubuntu) zeigt sein flexibles Layout.

Verbesserte Notebook-Funktionen

Die Zellen in Jupyter Lab lassen sich vergrößern und verkleinern. Steckt also eine Menge unsinniger Code in einem Notebook, versteckt der Anwender diesen mühelos. Auch die Option, Zellen per Drag & Drop zu bewegen, zählt zu den Neuerungen. Sie erlaubt es, ein Stück Code von einem Bereich in den nächsten zu verfrachten. Zudem lassen sich diese Codezellen zwischen verschiedenen Notebooks hin und her schieben, was einen Austausch mit Kollegen vereinfacht. Dabei gibt es noch ein weiteres erwähnenswertes Detail: Änderungen an der Zelle in einem Notebook schlagen sich nämlich automatisch in der Zelle des anderen Notebooks nieder.

Jupyter Lab unterstützt dabei bereits eine breite Masse von Formaten für den Datenaustausch, dazu gehören Json, CSV, Geojson, Vegalite [11], PDF sowie die Bildformate Jpeg, PNG und Gif. Außerdem rendert Jupyter Lab auch umfangreiche CSV-Dateien, an denen sich Excel gewöhnlich verschlucken würde.

Die wichtigste Fähigkeit von Jupyter Lab liegt allerdings darin, interaktives Computing zu unterstützen, was insbesondere für Datenwissenschaftler von Interesse ist. Diese müssen ihre Arbeit in der Regel dokumentieren, Jupyter Lab vereinfacht diese Aufgabe. Es kombiniert den Markdown-Editor, Markdown-Betrachter und die Konsole in einer Ansicht. Die Software dokumentiert den Code und erlaubt auch ihn in Echtzeit auszuführen – in einem Browserfenster und ohne zwischen Tabs wechseln zu müssen.

Nicht zuletzt gehören Erweiterungen (Abbildung 5) zu den überaus nützlichen Features von Jupyter Lab und bereichern den Umgang mit der Software. Notizbuch, Terminal und Editor sind selbst Erweiterungen. Andere Extensions liegen als NPM-Pakete vor und bieten eine Reihe nützlicher Optionen an, darunter neue Themes, Betrachter, Tastaturkürzel, fortgeschrittene Konfigurationsmöglichkeiten. Ein paar sehr nützliche Jupyter-Lab-Extensions sind zum Beispiel:

Abbildung 5: Die Jupyter-Lab-Erweiterungen erlauben es, mit diversen Datenformaten wie etwa Geojson, Json und CSV zu arbeiten.

Abbildung 5: Die Jupyter-Lab-Erweiterungen erlauben es, mit diversen Datenformaten wie etwa Geojson, Json und CSV zu arbeiten.

  • Google Drive: Die Extension macht in Google Drive gespeicherte Dateien in Jupyter Lab verfügbar.
  • Github Extension: Diese Erweiterung erlaubt es Anwendern, direkt aus Jupyter heraus auf Github-Repositories zuzugreifen.
  • Git Extension: Eine Jupyter-Lab-Erweiterung zur Versionskontrolle mit Git.
  • Draw.io-Plugin: Diese Jupyter-Lab-Erweiterung integriert eine Stand-alone-Variante von Draw.io, einer kostenlosen Online-Diagramm-Software, in Jupyter Lab.

Wermutstropfen

Auch wenn es scheint, als würden Notebooks die beste Umgebung zum Programmieren anbieten, lauern auch ein paar Fallstricke. Einige Nutzer finden zum Beispiel die Möglichkeit, Codeschnipsel in Zellen in beliebiger Reihenfolge ausführen zu können, merkwürdig und wenig intuitiv.

Zwar ordnet Notebook Zellen linear an, diese lassen sich aber in beliebiger Folge ausführen, ändern und erneut ausführen. Schläft der Entwickler, finden sich in Notebooks Variablen, deren Herkunft er nicht nachvollziehen kann. So großartig die Zellen für iteratives Entwickeln sein mögen, so gefährlich werden sie mitunter, wenn der Nutzer sie nicht in passender Reihenfolge ausführt.

Einige Entwickler bemängeln zudem, dass Notebooks keine Best Practices beim Entwickeln von Software fördern, etwa das Streben nach Modularität oder die Integration von Unit-Tests.

Während Jupyter Notebooks also großartig sind, um Datenanalyse, Forschung und Lehre zu betreiben, sind sie im Bereich der Softwareprogrammierung nicht unbedingt immer die beste Option. Sie lassen sich falsch bedienen und kommen nicht für alle Bereiche in Frage.

Infos

  1. Paul Romer: https://de.wikipedia.org/wiki/Paul_Romer

  2. Nobelpreis für Romer 2018: https://www.nobelprize.org/prizes/economic-sciences/2018/summary2

  3. Mathematics: https://de.wikipedia.org/wiki/Microsoft_Mathematics

  4. Stata: https://www.stata.com

  5. Paul Romer, “Jupyter, Mathematica, and the Future of the Research Paper”: https://paulromer.net/jupyter-mathematica-and-the-future-of-the-research-paper/

  6. Jupyter Notebook: https://github.com/jupyter/notebook

  7. Literate Programming: http://www.literateprogramming.com/knuthweb.pdf

  8. Wolfram Eifler, “Dokumentation inklusive”: Linux-Magazin 01/16, S. 92ff.

  9. Project Jupyter: https://jupyter.org/about

  10. Wissenschaftsplattform Anaconda: https://www.anaconda.com

  11. Vegalite: https://vega.github.io/vega-lite/

Der Autor

Parul Pandey bietet Seminare für Data Science an und schreibt regelmäßig Artikel für Opensource.com, Datacamp und Towards Data Science. Ihre Artikel beschäftigen sich hauptsächlich mit den Feldern Datenwissenschaft, Machine Learning und künstliche Intelligenz.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben