Qu'est-ce que Jupyter Notebook? L'analyse des données simplifiée

À un moment donné, nous devons tous montrer notre travail. La plupart des travaux de programmation sont partagés sous forme de code source brut ou sous forme d'exécutable compilé. Le code source fournit des informations complètes, mais d'une manière qui est plus «dire» que «montrer». L'exécutable nous montre ce que fait le logiciel, mais même lorsqu'il est livré avec le code source, il peut être difficile de comprendre exactement comment il fonctionne.

Imaginez pouvoir afficher le code et l'exécuter dans la même interface utilisateur, de sorte que vous puissiez apporter des modifications au code et afficher les résultats de ces modifications instantanément, en temps réel? C'est exactement ce que propose Jupyter Notebook. 

Jupyter Notebook a été créé pour faciliter la présentation de son travail de programmation et permettre aux autres de participer. Jupyter Notebook vous permet de combiner du code, des commentaires, du multimédia et des visualisations dans un document interactif - appelé cahier, naturellement - qui peut être partagé , réutilisé et retravaillé. 

Et comme Jupyter Notebook fonctionne via un navigateur Web, le notebook lui-même peut être hébergé sur votre ordinateur local ou sur un serveur distant. 

Avantages de Jupyter Notebook

Développé à l'origine pour les applications de science des données écrites en Python, R et Julia, Jupyter Notebook est utile de toutes sortes de façons pour tous les types de projets:

  • Visualisations de données.  La plupart des gens ont leur première exposition à Jupyter Notebook au moyen d'une visualisation de données, un bloc-notes partagé qui inclut un rendu de certains ensembles de données sous forme de graphique. Jupyter Notebook vous permet d'autoriser des visualisations, mais également de les partager et d'autoriser des modifications interactives au code partagé et à l'ensemble de données.
  • Partage de Code.  Les services cloud comme GitHub et Pastebin fournissent des moyens de partager du code, mais ils sont en grande partie non interactifs. Avec un bloc-notes Jupyter, vous pouvez afficher le code, l'exécuter et afficher les résultats directement dans votre navigateur Web.
  • Interactions en direct avec le code.  Le code de Jupyter Notebook n'est pas statique; il peut être édité et réexécuté de manière incrémentielle en temps réel, avec des commentaires fournis directement dans le navigateur. Les ordinateurs portables peuvent également incorporer des contrôles utilisateur (par exemple, des curseurs ou des champs de saisie de texte) qui peuvent être utilisés comme sources d'entrée pour le code.
  • Documentation des exemples de code. Si vous avez un morceau de code et que vous souhaitez expliquer ligne par ligne son fonctionnement, avec des commentaires en direct tout au long du processus, vous pouvez l'intégrer dans un Jupyter Notebook. Mieux encore, le code restera entièrement fonctionnel - vous pouvez ajouter de l'interactivité avec l'explication, en montrant et en racontant en même temps.

Composants Jupyter Notebook

Les notebooks Jupyter peuvent inclure plusieurs types d'ingrédients, chacun étant organisé en blocs discrets:

  • Texte et HTML.  Le texte brut, ou le texte annoté dans la syntaxe Markdown pour générer du HTML, peut être inséré dans le document à tout moment. Le style CSS peut également être inclus en ligne ou ajouté au modèle utilisé pour générer le bloc-notes.
  • Code et sortie. Le code des blocs-notes Jupyter Notebook est généralement du code Python, bien que vous puissiez ajouter la prise en charge dans votre environnement Jupyter pour d'autres langages tels que R ou Julia. Les résultats du code exécuté apparaissent immédiatement après les blocs de code, et les blocs de code peuvent être exécutés et réexécutés dans l'ordre de votre choix, aussi souvent que vous le souhaitez. 
  • Visualisations. Des graphiques et des graphiques peuvent être générés à partir du code, au moyen de modules tels que Matplotlib, Plotly ou Bokeh. Comme la sortie, ces visualisations apparaissent en ligne à côté du code qui les génère. Cependant, le code peut également être configuré pour les écrire dans des fichiers externes si nécessaire.
  • Multimédia. Étant donné que Jupyter Notebook repose sur la technologie Web, il peut afficher tous les types de contenu multimédia pris en charge dans une page Web. Vous pouvez les inclure dans un bloc-notes en tant qu'éléments HTML, ou vous pouvez les générer par programme via le IPython.displaymodule.
  • Les données. Les données peuvent être fournies dans un fichier séparé à côté du .ipynb fichier qui constitue un notebook Jupyter Notebook, ou elles peuvent être importées par programme - par exemple, en incluant du code dans le notebook pour télécharger les données à partir d'un référentiel Internet public ou pour y accéder via une base de données connexion.

Cas d'utilisation de Jupyter Notebook

Les cas d'utilisation les plus courants de Jupyter Notebook sont la science des données, les mathématiques et d'autres projets de recherche qui impliquent des visualisations de données ou de formules. En dehors de ceux-ci, il existe de nombreux autres cas d'utilisation:

  • Partager une visualisation, avec ou sans interactivité.  Les gens partagent souvent les résultats d'une visualisation de données sous forme d'image statique, mais cela n'est utile que jusqu'à un certain point. En partageant un notebook Jupyter, vous permettez à votre public cible de plonger et de jouer. Ils peuvent acquérir une compréhension approfondie des données, de manière interactive.
  • Documenter un processus avec du code. De nombreux programmeurs qui bloguent sur leurs expériences de programmation écrivent leurs articles dans un bloc-notes Jupyter. D'autres peuvent télécharger leur cahier et recréer l'exercice.
  • Documentation en direct pour une bibliothèque ou un module. La plupart de la documentation des modules Python est statique; un bloc-notes Jupyter peut être utilisé comme un bac à sable interactif pour apprendre comment fonctionne un module. Tout module Python qui fonctionne bien dans une interface de notebook (essentiellement, tout ce qui écrit dans stdoutle cadre de son comportement) est un bon candidat pour cela.
  • Partage de code et de données en général.  Tout ce que vous avez à faire pour partager un notebook Jupyter et ses fichiers de données associés est de le regrouper dans une archive.

JupyterLab

Une interface utilisateur de nouvelle génération pour Jupyter Notebook, appelée JupyterLab, est désormais disponible et considérée comme prête pour une utilisation en production.

Comme expliqué dans l'article de blog annonçant la disponibilité générale, JupyterLab est plus malléable qu'un Jupyter Notebook classique, permettant aux utilisateurs de glisser-déposer des cellules dans et entre les blocs-notes et d'organiser l'espace de travail en onglets et sous-sections séparés. Le code peut s'exécuter directement à partir de fichiers texte ainsi que de fichiers Jupyter Notebook, et de nombreux formats de fichiers courants pour le code et les données peuvent être rendus avec des aperçus en direct.

JupyterLab peut également être personnalisé avec des extensions pour ajouter la prise en charge de nouveaux formats de fichiers, pour enrichir l'interface ou pour fournir un certain nombre d'autres fonctionnalités supplémentaires, permettant une gamme d'applications beaucoup plus large que Jupyter Notebook. Le plan à long terme est de remplacer l'interface actuelle de Jupyter Notebook par JupyterLab, mais seulement après que JupyterLab se soit avéré suffisamment stable et fiable.

Limitations de Jupyter Notebook

Aussi puissant et utile que puisse être Jupyter Notebook, il présente certaines limitations qui doivent être prises en compte.

  • Les ordinateurs portables ne sont pas autonomes. C'est le plus gros inconvénient de l'utilisation de Jupyter Notebook: les ordinateurs portables nécessitent le runtime Jupyter, ainsi que toutes les bibliothèques que vous prévoyez d'utiliser. Il existe quelques stratégies pour créer des notebooks Jupyter autonomes, mais aucune d'entre elles n'est officiellement prise en charge. Il vaut mieux distribuer des blocs-notes aux personnes qui ont déjà une infrastructure en place pour les faire fonctionner, ou ne se soucient pas de la configuration (via Anaconda, par exemple).
  • L'état de session ne peut pas être enregistré facilement.  L'état de tout code exécuté dans un notebook Jupyter ne peut pas être conservé et restauré avec l'ensemble d'outils par défaut de Jupyter Notebook. Chaque fois que vous chargez le bloc-notes, vous devrez réexécuter le code qu'il contient pour restaurer son état.
  • Pas de débogage interactif ou d'autres fonctionnalités IDE.  Jupyter Notebook n'est pas un environnement de développement complet pour Python. La plupart des fonctionnalités que vous vous attendez à trouver dans un IDE - par exemple, le débogage interactif, la complétion de code et la gestion de module - n'y sont pas disponibles.