Notebooks sind im Data Science Umfeld allgegenwärtig, in anderen Bereichen der Informatik aber vielleicht noch weitgehend unbekannt. Deshalb erklärt Nico mit seinen Gästen Hans Fangohr und Harald Schilly sowohl was Notebooks überhaupt sind und wie sich das Arbeiten damit anfühlt, geben aber auch zahlreiche Tipps und Empfehlungen für erfahrene Nutzer.
Notebooks können in vielen Szenarien eingesetzt werden. Durch die Kombination von Dokumentation und ausführbarem Code eignen sie sich natürlich hervorragend für Schulungen, aber auch für die Dokumentation von Projekten und explorative und forschungslastigen Arbeiten. Zwar existieren zahlreiche Implementierungen von Notebooks (etwa Googles Colab oder Apache Zeppelin), das Jupyter-Ökosystem bestehend aus den klassischen Notebooks, dem Lab sowie dem Hub. Sie eint die gemeinsame Entstehungsgeschichte basierend auf der IPython-Konsole sowie das gemeinsame, JSON-basierte Dateiformat iypnb.
Dieses Dateiformat ermöglicht einen flüssigen Übergang zwischen verschiedenen Notebook-Implementierungen, die Ausführlichkeit sowie die Klammer-Struktur erschwert aber Versionskontrolle und macht Merge-Requests unübersichtlich. Wir unterhalten uns ausführlich über verschiedene Ansätze, etwa zu alternativen Formaten wie RMarkdown und dem percent-format und deren Synchroni JupyText.
Kommentare
Wenn ihr nicht im Data Science / Python Umfeld unterwegs seid: Kanntet ihr Jupyter Notebooks bereits? Wenn ja, wofür habt ihr sie eingesetzt: Hinterlasst mir einen Kommentar
Links
Jupyter
https://jupyter.org/: Übersichtsseite Projekt Jupyter
JupyterHub: Server für Notebooks mit Benutzerverwaltung
JupyterLab: moderne Implementation, multiple Dokumente, etc.
NBConvert: konvertierung nach plain Text, Python, LaTeX/PDF, HTML
Alternative Jupyter
Colab: Notebooks von Google
Zeppelin: Apache Alternativ Projekt
CoCalc: Echtzeit Synchronisation von Notebooks, uvm
Deepnote: Notebooks für Data Science, etc.
Nteract: Desktop App
Notebooks in einer IDE: PyCharm, VSCode etc.
Magics
Einige unserer Lieblings-Magic-Befehle (hier ist eine ausführlichere Liste)
# Load an external Plugin
%load_ext autoreload
# Automatically re-import libraries
%autoreload
# Messen der Ausführungszeit einerZelle
%timeit
# Ausführen eines notebooks im Namensraum des aktiven Notebooks
%run my_helper.ipynb
# Den Inhalt der Zelle in eine Datei Schreiben
%%writefile <filename>
Weitere Plugins und Links
Sublime Features – ohne die Nico nicht leben kann.
Nico’s Opinionated Guide für Notebook Versionierung
IPython Widgets: Haralds Empfehlung für Interaktivität in Notebooks
JupyText: synchronisation von/nach anderen Text Formaten
NBGrader: Kursverwaltung und automatisiertes Beurteilen von Notebooks von Studierenden mittels eingebetteter Tests
Jupyter{Book} HTML/PDF Publikationen basierend auf Notebooks
Beispiel für Einfuehrung in Python (mit Jupyterbook)
NBVAL zur Validierung von Notebooks (erstellt von Hans)
MyBinder: Ad-hoc ausführen von Jupyter Notebook instanzen, keine Persistenz
Jupyter Book – Zur Erstellung von Büchern in building beautiful, publication-quality books
Nbgrader: automatisches Benoten von Notebooks im Unterricht
OSCOVIDA Projekt: Ein Projekt zur Visualisierung von Covid Daten mittels Jupyter
Erstmal vorneweg: ich bin durch heise auf Techtiefen aufmerksam geworden und finde die ca. 6 Episoden, die ich bisher gehört habe, durchweg interessant und lehrreich – auch wenn ich die Sachen in meinem konkreten Arbeitsumfeld nicht anwenden kann.
Nun zu den Notebooks: dachte zuerst, es geht um Hardware/Laptops. Mit Phyton hab ich garnix am Hut. Kenne das Konzept ein wenig von Maxima, einem Mathe-/Algebra-Programm.
Dort allerdings finde ich die Eingabe in die Zellen nicht so wirklich bequem – da sehne ich mir einen ordentlichen Texteditor bzw. IDE herbei.
Habt ihr schon Erfahrungen mit https://polynote.org von Netflix gemacht? Wie seht ihr das imVergleich zu den genannten Notebook Technologien?
Cool, sieht auf den ersten Blick mal sehr schick aus. Arbeitest Du selbst damit (statt mit jupyter)?