›  Demo-PY1: Python-Tutorial
›   Jupyter Notebook verwenden

Im ersten Teil von Demo-PY1 Python-Tutorial wurden die Grundlagen der Programmiersprache Python erläutert, unter Verwendung von Jupyter Notebook als Entwicklungs- und Laufzeitumgebung. Hier in Demo-PY1: Python-Tutorial: Jupyter Notebook verwenden wird der Einstieg in Jupyter Notebook vermittelt.

Die interaktive webbasierte Anwendung Jupyter Notebook ist 2014 im Rahmen des Project Jupyter entstanden. Project Jupyter entwickelt quelloffene Software für interaktive und kollaborative Datenanalyse, die entwickelten Tools sind für mehrere Programmiersprachen ausgelegt und unterstützen z.B. die Sprachen Python, R und Julia.

info-icon Motivation

Jupyter Notebook als Weiterentwicklung von IPython ist die erfolgreichste Software des Project Jupyter, weitere Entwicklungen sind JupyterHub, eine Server-Umgebung für Jupyter Notebook, und JupyterLab, eine neuere Benutzeroberfläche für Jupyter Notebook. Jupyter Notebooks werden im Umfeld der Datenanalyse und des Maschinellen Lernens mit Python eingesetzt, sowie im Rahmen von Forschung und Lehre, um z.B. Einsteigern die Grundlagen der Programmiersprache Python zu vermitteln, oder als unterstützendes Tool um Fächer wie Algorithmen und Datenstrukturen, Numerische Methoden, Maschinelles Lernen oder auch IT-Sicherheit zu lehren.

Warum Jupyter Notebook?

Jupyter Notebooks sind für Schüler, Studierende, Dozenten und Forscher interessant, die sich mit der Programmiersprache Python oder mit Datenanalyse / Maschinellem Lernen beschäftigen, und ihren dokumentierten Code interaktiv und kollaborativ mit anderen (auch Nicht-Experten) teilen wollen. Jupyter Notebooks können über die Plattform Jupyter Binder oder auch als Google Colab Notebooks kostenlos in der Cloud veröffentlicht werden.

info-icon Übersicht

Diese Kurzanleitung zum Verwenden von Jupyter Notebook ist in 6 Abschnitte gegliedert. Zunächst wird die Kern-Funktionalität der Jupyter Notebook-Anwendung erläutert, danach das Erstellen eines Python-Notebooks in drei Schritten. Die wichtigsten Elemente der Markdown-Syntax zum Dokumentieren des Codes werden beschrieben, ebenso einige weniger offensichtliche Details bei der Verwendung von Command und Edit-Mode.


YouTube-Video

Der Einstieg in Jupyter Notebook wird durch ein Video (Screencast mit zusätzlichen Erläuterungen) veranschaulicht.



1-1 Jupyter Notebook installieren

Um Jupyter Notebooks mit Python-Code erstellen zu können, muss zunächst eine aktuelle Python-Installation von der Python-Webseite python.org heruntergeladen und installiert werden. Jupyter Notebook selber kann anschließend als Teil der Paketverwaltungsplattform Anaconda heruntergeladen und installiert werden, dies ist das Vorgehen, das in der offiziellen Jupyter-Dokumentation empfohlen wird.

Weitere Details der Installation von Python und Anaconda sind im Abschnitt Vorbereitung: Installation von Python und Anaconda beschrieben.

1 Was ist ein Jupyter Notebook?

Jupyter Notebook ist eine webbasierte Umgebung, die das Erstellen, Dokumentieren und Teilen von Demonstratoren unterstützt, und zwar insbesondere im Umfeld der Datenanalyse. In einem Jupyter Notebook kann man Code schreiben und ausführen, Daten visualisieren, und diesen Code auch mit anderen teilen. Das Besondere an Jupyter Notebook ist, dass der Code und die Beschreibung des Codes in unabhängige Zellen geschrieben werden, so dass einzelne Codeblöcke individuell ausgeführt werden können.

Als Jupyter Notebook wird kontextabhängig die webbasierte Umgebung bezeichnet, in der die Notizbücher erstellt, geändert und ausgeführt werden, oder auch das interaktive Dokument ("Notizbuch", "Jupyter Notebook"), das man darin erstellt hat. Jupyter Notebooks haben die Datei-Endung ipynb, z.B. Demo-PY1.ipynb oder Python-Tutorial.ipynb. Öffnet man eine *.ipynb-Datei mit einem einfachen Texteditor, z.B. Notepad++, stellt man fest, dass es sich um eine JSON-Datei handelt, ein für den Menschen lesbares Datenaustauschformat, das in Webanwendungen häufig für die Datenspeicherung eingesetzt wird.

Die Codeblöcke, die einzeln ausgeführt werden können, nennt man Code-Zellen (engl. code cells), und das Programm, das sie ausführen kann, nennt man den IPython-Kernel. Der Kernel kann über den Menüpunkt "Kernel" auf verschiedene Arten gestartet und gestoppt werden, dies ist nützlich, wenn man das Notebook zurücksetzen, alle Ausgaben löschen und neu starten will.

2 Jupyter Notebook-Anwendung starten

Zunächst starten wir die Jupyter Notebook-Anwendung, entweder über den Anaconda-Navigator, oder auch direkt über Programme > Jupyter Notebook. Die Jupyter Notebook-Anwendung wird im Webbrowser geöffnet, mit der Adresse http://localhost:8888/tree, und sieht ähnlich aus wie in der Abbildung unten. Die Anwendung zeigt das Startverzeichnis an, unter dem Notebooks abgelegt werden können. In diesem Startverzeichnis wird ein Ordner "elab2go" angelegt, den wir als Workspace verwenden, der alle unsere Jupyter Notebooks enthält. In diesem Workspace legen wir weitere Unterordner an, die zusammengehörende Notebooks und Daten-Dateien gruppieren. Im Ordner Demo-PY1 liegen z.B. alle Dokumente (Jupyter Notebooks, csv-Dateien etc.) die zu Demo-PY1 gehören.

Jupyter Notebook Erläuterung


Die Startseite der Jupyter Notebook-Anwendung ist in drei Reiterkarten ("Files", "Running" und "Clusters") organisiert.

  • In der "Files"-Ansicht werden die Jupyter Notebooks erstellt und verwaltet.
  • Unter dem Menüpunkt "New" können neue Jupyter Notebooks, Textdateien oder Ordner erstellt werden.
  • In der "Running"-Ansicht werden die gerade laufenden Jupyter Notebooks angezeigt.

3 Jupyter Notebook in drei Schritten erstellen

Nachdem die Jupyter Notebook-Anwendung läuft, erstellen wir ein erstes "Notizbuch" und zeigen daran die grundlegende Funktionalität.


3-1 Neues Notebook erstellen

Über den Menüpunkt "New > Python 3" erstellen wir ein neues Python3-Notizbuch mit der Endung ".ipynb". Da wir noch keinen Namen vergeben haben, wird das Notebook automatisch den Default-Namen "Untitled" erhalten. Zunächst wird eine leere Eingabezelle angezeigt, mit "In" beschriftet, vgl. Abbildung.

Der Code in einem Jupyter Notebook wird in Blöcken / Zellen (engl. cells) erstellt und ausgeführt. Zellen sind entweder Code-Zellen, die Python-Code enthalten, oder Markdown-Zellen, die die Dokumentation des jeweiligen Blocks im HTML-Format enthalten.

Jupyter Notebook Erläuterung


Die Menüleiste eines Jupyter Notebooks enthält die Menüpunkte File, Edit, View, Insert, Cell, Widgets.

  • File: hierüber können Notebooks erstellt, verwaltet und in unterschiedlichen Formaten gespeichert werden.
  • Edit: hier sind die Funktionen zum Bearbeiten von Zellen (Kopieren, Löschen, Verschieben).
  • View: hier sind die Funktionen, um die Ansicht zu verändern, z.B. einzelne Bereiche auszublenden.
  • Cell: hier kann der Typ einer Zelle eingestellt werden (Code oder Markdown), und die Zellen können einzeln oder gruppiert ausgeführt werden.
  • Kernel: hier kann der Kernel gestoppt und neu gestartet werden, z.B. um die Ausgabe zurückzusetzen und neu anzufangen.

Jupyter Notebooks können über den Menüpunkt File > Download as in verschiedene andere Dateiformate exportiert werden: als PDF, HTML oder LaTex-Datei.

3-2 Code eingeben

Im nächsten Schritt geben wir in die Codezellen Python-Anweisungen ein. Eine einzelne Zelle wird durch Auswählen des Codeblocks und Anklicken des Run-Buttons in der zweiten Menüleiste ausgeführt. Die Ausgabe erfolgt direkt unterhalb des ausgewählten Codeblocks. Unterhalb des Menüpunktes Cells gibt es noch weitere Möglichkeiten, den Code auszuführen: Run All führt alle Zellen aus, Run All Below führt die aktuelle Zelle und alle ihr nachfolgenden Zellen aus.

Jupyter Notebook Erläuterung


Wir geben in die leere Zelle den Befehl print("Hello World") ein und führen den Code durch Anklicken des Run-Buttons aus. Der Text "Hello World" erscheint unterhalb des Codes.

3-3 Weitere Zellen einfügen

In diesem Schritt erweitern wir das Jupyter Notebook, indem wir mehrere Zellen oberhalb und unterhalb der ersten Zelle eingeben, den Zellentyp ändern, und wahlweise einzelne oder alle Zellen ausführen.

Jupyter Notebook Erläuterung


  • Füge oberhalb der ersten Codezelle eine weitere Zelle ein, und ändere ihren Typ in Markdown. In diese Zelle schreiben wir eine Dokumentation des Notebooks in HTML-Form.
  • Füge unterhalb der Codezeile mit dem print()-Befehl zwei weitere Codezellen ein und gebe die im Bild gezeigten Anweisungen ein.

4 Code dokumentieren mit Markdown Syntax

Um ein Jupyter Notebook ansprechend zu gestalten, werden die Markdown-Zellen als benutzerfreundliche Dokumentation ausgebaut. Die Markdown-Zellen können einerseits in einer speziellen Markdown-Syntax editiert werden, die in HTML umgewandelt wird, es kann jedoch auch direkt HTML verwendet werden. Um z.B. Text kursiv zu setzen, wird vor und nach den Text je ein Stern (*) gesetzt, um Text fett zu markieren, werden vor und nach den Text je zwei Sterne gesetzt.

* kursiver Text *
** fetter Text **

Die am häufigsten verwendeten Markdown-Befehle sind diejenigen zum Erstellen von Überschriften und Listen, weiterhin können auch Blockzitate und Links verwendet werden, oder mathematische Formeln mit LaTex eingebettet werden.

Markdown-Syntax Ausgabe
# Abschnitt 1 (H1)
## Abschnitt 1.1 (H2)

**Ungeordnete Liste**
* Erster Eintrag
* Zweiter Eintrag
* Dritter Eintrag

**Geordnete Liste**
1. Erster Eintrag
2. Zweiter Eintrag
3. Dritter Eintrag
> Blockzitat mit zwei Abschnitten. 
>
> Lorem ipsum dolor sit amet
> consectetuer adipiscing elit 
> 
> Donec sit amet nisl  
> Aliquam semper ipsum sit amet velit


Überschriften

Überschriften werden mit Hilfe des Raute-Symbols erstellt. Die Anzahl der Rauten legt die Ebene der Überschrift fest: eine Raute erzeugteine Überschrift der ersten Ebene etc.

# Abschnitt 1 (H1)
## Abschnitt 1.1 (H2)

Listen

Ungeordnete Listen werden mit Hilfe des Stern-Symbols erstellt, alternativ kann auch + oder - verwendet werden, in jedem Fall generiert die Markdown-Syntax damit eine ungeordnete HTML-Liste. Geordnete Listen werden mit Hilfe einer Nummerierung erzeugt.

**Ungeordnete Liste**
* Erster Eintrag
* Zweiter Eintrag
* Dritter Eintrag

**Geordnete Liste**
1. Erster Eintrag
2. Zweiter Eintrag
3. Dritter Eintrag

Code-Blöcke einbetten

Um einen Codeblock in Markdown einzubetten, muss jede Zeile des Code um mindestens 4 Leerzeichen eingerückt werden.

** Die folgende Funktion berechnet die Summe der Eingabeparameter **

    def add(x, y):
	    return x + y
    add(2, 3)

5 Command-Mode und Edit-Mode

In einem Jupyter Notebook arbeitet man in zwei Modi. Im Command-Mode, der mit (ESC) eingeleitet wird, kann man Zellen erstellen, verschieben oder löschen, den Typ einer Zelle festlegen (Code oder Markdown), und Zellen ausführen. Im Edit-Mode werden die Zellen editiert. Der gerade aktive Modus einer Zelle wird durch die Umrahmungsfarbe hervorgehoben. Blau bedeutet: Command-Mode, grün bedeutet: Edit-Mode.
Die verschiedenen Befehle können entweder über Menüpunkte in der Benutzeroberfläche ausgewählt werden, oder über Tastenkürzel der Form STRG+<Buchstabe>. Letzteres geht mit der Zeit schneller.

Um zum Beispiel eine Zelle über Tastenkürzel als Markdown-Zelle festzulegen, wählt man die Zelle aus, klickt dann ESC, und danach M. Besonders nützliche Tastenkürzel sind:

6 Jupyter Notebook vs MATLAB Live Script

Von der Funktionalität und Arbeitsweise her ist ein Jupyter Notebook vergleichbar mit einem MATLAB Live Script, das in Demo 5 Teil 1: MATLAB Live Scripts beschrieben ist. In beiden Entwicklungsumgebungen hat man Codezellen, in die man den Quellcode eingibt, und Markdownzellen, die die Dokumentation des Codes enthalten. Jupyter Notebooks können alleinstehend verwendet werden, z.B. im Unterricht, um Schüler / Studenten eine erste Programmiersprache zu lehren, während MATLAB LiveScripts nur in der MATLAB Plattform verwendet werden können, z.B. von Ingenieuren, die damit ihre MATLAB-Prototypen und Demos besser dokumentieren können.

Autoren, Tools und Quellen

Autoren:
 Prof. Dr. Eva Maria Kiss
 M.Sc. Anke Welz

Tools:

Quellen und weiterführende Links:

  1. Project Jupyter Webseite: https://jupyter.org/
  2. Jupyter Widgets Webseite: https://ipywidgets.readthedocs.io/
  3. Jupyter Widgets Tutorial: https://www.elab2go/demo-py1/jupyter-notebook-widgets.php
  4. Markdown Syntax: https://daringfireball.net/projects/markdown/syntax
  5. Offizielle Python Dokumentation bei python.org: https://docs.python.org/3/tutorial/
    sehr umfangreich, Nachschlagewerk, hier findet man Dokumentationen für spezifische Python-Versionen
  6. Python Tutorial bei Google Developers: https://developers.google.com/edu/python/introduction
    umfangreich, für Fortgeschrittene, verweist auf die offizielle Dokumentation
  7. Python Tutorial bei Jobvector: https://jobtensor.com/Tutorial/Python/en/Introduction
    für Einsteiger geeignet, interaktive Ausführung im Browser
  8. Datenverwaltung und -Visualisierung mit Pandas: https://www.elab2go.de/demo-py2
  9. Clusteranalyse mit scikit-learn: https://www.elab2go.de/demo-py3
  10. Predictive Maintenance mit scikit-learn: https://www.elab2go.de/demo-py4
  11. Machine Learning-Modellierung mit Keras und Tensorflow: https://www.elab2go.de/demo-py5