Ein rei­bungs­lo­ser Ablauf bei der Arbeit im Team ist in vielen Branchen von ele­men­ta­rer Bedeutung. Tools zur Kom­mu­ni­ka­ti­on und für die Or­ga­ni­sa­ti­on und Ver­sio­nie­rung von Ar­beits­schrit­ten und Pro­jekt­da­ten sind deshalb nahezu un­ver­zicht­bar geworden. Für die Da­ten­wis­sen­schaft und -si­mu­la­ti­on exis­tie­ren ver­schie­de­ne An­wen­dun­gen, die versuchen, diesen An­sprü­chen gerecht zu werden. So schafft die web­ba­sier­te Lösung Jupyter Notebook bei­spiels­wei­se eine nahtlose Brücke zwischen Pro­gramm­code und er­klä­ren­dem Text – und er­mög­licht Nutzern auf diese Weise, Code, Glei­chun­gen, Vi­sua­li­sie­run­gen usw. inklusive er­läu­tern­der In­for­ma­tio­nen in Echtzeit zu kreieren und aus­zu­tau­schen. Was steckt hinter der Open-Source-Anwendung, die vom Project Jupyter ent­wi­ckelt und betreut wird?

Was ist Jupyter Notebook?

Jupyter Notebook ist eine Client-Server-Anwendung der Non-Profit-Or­ga­ni­sa­ti­on Project Jupyter, die 2015 ver­öf­fent­licht wurde. Sie er­mög­licht die Kreation und das Teilen von Web­do­ku­men­ten im JSON-Format, die einem ver­sio­nier­ten Schema und einer ge­ord­ne­ten Liste von Input-/Output-Zellen folgen. Diese Zellen bieten u. a. Platz für Code, Markdown-Text, ma­the­ma­ti­sche Formeln und Glei­chun­gen oder Me­di­en­in­hal­te (Rich Media). Die Be­ar­bei­tung funk­tio­niert dabei über die web­ba­sier­te Client-Anwendung, die sich mit han­dels­üb­li­chen Browsern starten lässt. Vor­aus­set­zung ist, dass auf dem System auch der Jupyter-Notebook-Server in­stal­liert ist und aus­ge­führt wird. Die er­stell­ten Jupyter-Dokumente lassen sich u. a. als HTML-, PDF-, Markdown- oder Python-Dokumente ex­por­tie­ren oder al­ter­na­tiv per E-Mail, Dropbox, GitHub oder den haus­ei­ge­nen Jupyter Notebook Viewer mit anderen Nutzern teilen.

Hinweis

Der Pro­jekt­na­me „Jupyter“ geht auf die drei Kern-Pro­gram­mier­spra­chen Julia, Python und R zurück.

Die beiden zentralen Kom­po­nen­ten von Jupyter Notebook sind ein Set ver­schie­de­ner Kernels (In­ter­pre­ter) sowie das Dashboard. Kernels sind kleine Programme, die sprach­spe­zi­fi­sche Requests ver­ar­bei­ten und mit ent­spre­chen­den Antworten reagieren. Standard-Kernel ist IPython, ein Kom­man­do­zei­len-In­ter­pre­ter, der das Arbeiten mit Python er­mög­licht. Über 50 weitere Kernels bringen Un­ter­stüt­zung für andere Sprachen wie C++, R, Julia, Ruby, Ja­va­Script, Cof­fee­Script, PHP oder Java. Das Dashboard dient ei­ner­seits als Ver­wal­tungs­ober­flä­che für die einzelnen Kernels, an­de­rer­seits als Zentrale für die Er­stel­lung neuer Notebook-Dokumente bzw. das Öffnen bereits exis­tie­ren­der Projekte. Jupyter Notebook steht unter einer mo­di­fi­zier­ten BSD-Lizenz und damit allen Nutzern frei zur Verfügung.

Wie un­ter­schei­det sich Jupyter Notebook von Ju­py­ter­Hub und Ju­py­ter­Lab?

Jupyter Notebook ist nicht das einzige Open-Source-Angebot des Jupyter-Projekts: Mit Ju­py­ter­Hub und Ju­py­ter­Lab offeriert das Ent­wick­ler­team zwei weitere Services, die eng mit der in­ter­ak­ti­ven Code-Umgebung verknüpft sind.

Bei Ju­py­ter­Hub handelt es sich um einen Multi-User-Server inklusive Proxy, der mehrere Jupyter-Notebook-Instanzen mit­ein­an­der verknüpft. Dieser kann entweder in der Cloud oder auf eigener Hardware gehostet werden und er­mög­licht die Nutzung einer ge­mein­sa­men Notebook-Umgebung. Der Ser­ver­ad­mi­nis­tra­tor verwaltet den ge­mein­schaft­li­chen Zugriff auf die je­wei­li­gen Dokumente nach Belieben (eine Au­then­ti­fi­zie­rungs­me­tho­de ist im­ple­men­tier­bar), während sich die einzelnen Benutzer gänzlich auf die eigenen Aufgaben kon­zen­trie­ren können. De­tail­lier­te In­for­ma­tio­nen über die In­stal­la­ti­on und das Hosting von Ju­py­ter­Hub bietet das of­fi­zi­el­le GitHub-Re­po­si­to­ry der Multi-User-Lösung.

Ju­py­ter­Lab ist der of­fi­zi­el­le Nach­fol­ger von Jupyter Notebook und befindet sich seit Juli 2019 in der Version 1.0, soll das Ba­sis­pro­gramm aber über lange Sicht ablösen. Im Vergleich zu diesem bietet Ju­py­ter­Lab nämlich mehr Optionen zur Anpassung und In­ter­ak­ti­on und ist darüber hinaus noch einfacher zu erweitern. So lassen sich in der komplett über­ar­bei­te­ten Be­nut­zer­ober­flä­che nicht nur Text­edi­to­ren, Terminals und andere Kom­po­nen­ten parallel zu den Notebook-Do­ku­men­ten öffnen und anzeigen, sondern auch Ver­knüp­fun­gen zu Google Drive und weiteren Cloud-Diensten, zu­sätz­li­che Me­nü­punk­te oder Tas­ten­kür­zel im­ple­men­tie­ren, um die Arbeit mit der Code-Umgebung noch einfacher zu gestalten.

Für welche Ein­satz­zwe­cke ist Jupyter Notebook geeignet?

Jupyter Notebook stellt eine Umgebung zur Verfügung, die perfekt auf die An­for­de­run­gen und den Workflow von Da­ten­wis­sen­schaft und -si­mu­la­ti­on zu­ge­schnit­ten ist. In einer einzigen Instanz können Nutzer Code schreiben, do­ku­men­tie­ren und ausführen, Daten vi­sua­li­sie­ren, Be­rech­nun­gen durch­füh­ren und die ent­spre­chen­den Resultate be­gut­ach­ten. Ins­be­son­de­re in der Prototyp-Phase pro­fi­tie­ren sie dabei von der Tatsache, dass jeglicher Code in un­ab­hän­gi­gen Zellen un­ter­ge­bracht werden kann: So ist es möglich, spe­zi­fi­sche Code­blö­cke in­di­vi­du­ell zu testen. Dank der zahl­rei­chen Zu­satz­ker­nels ist Jupyter dabei nicht auf Python als Pro­gram­mier­spra­che be­schränkt, was eine Menge Fle­xi­bi­li­tät bei der Codierung und Analyse bedeutet.

Zu den wich­tigs­ten Ein­satz­zwe­cken von Jupyter Notebook zählen:

  • Da­ten­be­rei­ni­gung: Un­ter­schei­dung zwischen wichtigen und un­wich­ti­gen Daten in der Big-Data-Analyse
     
  • Sta­tis­ti­sche Mo­del­lie­rung: ma­the­ma­ti­sche Methode zur Er­mitt­lung der ge­schätz­ten Ver­tei­lungs­wahr­schein­lich­keit eines be­stimm­ten Merkmals
     
  • Kreation und Training von Machine-Learning-Modellen: Entwurf, Pro­gram­mie­rung und Training von Modellen, die auf Machine-Learning basieren
     
  • Da­ten­vi­sua­li­sie­rung: grafische Dar­stel­lung von Daten zur Ver­deut­li­chung von Mustern, Trends, Ab­hän­gig­kei­ten etc.

Wie funk­tio­niert die Nutzung von Jupyter Notebook?

Wer die Mög­lich­kei­ten von Jupyter Notebook nutzen möchte, muss Client- und Ser­ver­an­wen­dung der prak­ti­schen Code-Umgebung zunächst auf seinem System (oder al­ter­na­tiv in der Cloud) in­stal­lie­ren. Einzige Vor­aus­set­zung ist, dass eine aktuelle Version von Python ebenfalls in­stal­liert ist. Das Jupyter-Team empfiehlt aus diesem Grund den Download der Anaconda-Dis­tri­bu­ti­on, die sowohl Jupyter Notebook als auch Python sowie diverse weitere Software-Pakete für Da­ten­wis­sen­schaft, wis­sen­schaft­li­ches Rechnen und Co. be­reit­hält. Im Anschluss an die In­stal­la­ti­on lässt sich der Notebook-Server über die Kom­man­do­zei­le starten und dann das Dashboard im Browser der Wahl über die URL localhost:8888 (Localhost) aufrufen.

Dort legen Nutzer neue Ordner im Jupyter-Notebook-Ver­zeich­nis an, öffnen den in­te­grier­ten Text­edi­tor und das Terminal oder starten ein neues Jupyter-Projekt. Jedes neu angelegte Projekt enthält dabei zunächst lediglich ein einzelnes, leeres Ein­ga­be­feld. Über die Me­nü­leis­te lassen sich weitere Felder hin­zu­fü­gen, Bi­blio­the­ken im­por­tie­ren oder Widgets (in­ter­ak­ti­ve Elemente) einbetten. Zudem bietet die Leiste Schalt­flä­chen, um fertige Codes aus­zu­füh­ren und zu stoppen, das gesamte Dokument zu speichern oder zu ex­por­tie­ren sowie um den zu­grun­de­lie­gen­den Kernel aus­zu­wäh­len.

Tipp

Auf der of­fi­zi­el­len Jupyter-Homepage gibt es die Mög­lich­keit, Jupyter Notebook ohne In­stal­la­ti­on zu testen.

Die Vorteile von Jupyter Notebook im Überblick

Wer Skripte schreiben und in Echtzeit testen, Daten vi­sua­li­sie­ren oder komplexe ma­the­ma­ti­sche Be­rech­nun­gen ausführen will, hat mit Jupyter Notebook eine erst­klas­si­ge Lösung zur Hand. Er­geb­nis­se lassen sich mit wenigen Klicks und in diversen Formaten ex­por­tie­ren oder direkt per Mail ver­schi­cken. Nutzer des Multi-User-Services Ju­py­ter­Hub können die „Notebooks“ sogar gemeinsam be­ar­bei­ten, um das jeweilige Projekt im Team optimal vor­an­zu­brin­gen. Da Jupyter in Python ge­schrie­ben ist, haben Python-Spe­zia­lis­ten beim Einsatz der Open-Source-Anwendung zwar Heim­vor­teil – dank diverser, ein­satz­fer­ti­ger In­ter­pre­ter für andere Sprachen ist aber auch das Coden mit anderen Größen wie C++, PHP oder Java pro­blem­los möglich.

Die Vorteile von Jupyter Notebook in der Zu­sam­men­fas­sung:

  • Open Source (mo­di­fi­zier­te BSD-Lizenz)
  • kostenlos nutzbar
  • brow­ser­ba­siert
  • Live-Code
  • diverse Optionen zum Ex­por­tie­ren und Teilen der Er­geb­nis­se
  • Ver­si­ons­ver­wal­tung
  • Zu­sam­men­ar­beit möglich (Ju­py­ter­Hub)
  • über 50 un­ter­stütz­te Pro­gram­mier­spra­chen
Zum Hauptmenü