jupyter notebook

Jupyter Notebook : tout savoir sur le notebook préféré des Data Scientists

Jupyter Notebook est un outil open source permettant d'écrire du code informatique et de le partager pour collaborer. Grâce à ses nombreux avantages, ce  » bloc-note  » de calcul est devenu une référence incontournable pour les Data Scientists. Découvrez tout ce que vous devez savoir : présentation, fonctionnement, cas d'usage, avantages…

Écrire un code informatique est une chose, mais il faut ensuite pouvoir partager son travail. La plupart du temps, les travaux en programmation sont partagés sous forme de code source brut ou d'exécutable compilé.

Toutefois, ces méthodes de partage présentent des limites. Elles ne permettent pas d'examiner réellement le fonctionnement du programme. En guise d'alternative, il existe Jupyter Notebook.

Qu'est-ce que Jupyter Notebook ?

Créé à partir de Python en 2014, Jupyter est un notebook de calcul (computational notebook) open source, gratuit et interactif. C'est une application web basée client permettant de créer et de partager du code, des équations, des visualisations ou du texte.

Son nom est en fait une référence à trois langages de programmation : Julia, Python et R. En effet, Jupyter prend en charge plus d'une quarantaine de langages de programmation.

Avec cet outil, il est possible de visualiser le code et de l'exécuter depuis la même interface utilisateur. On peut même apporter des changements au code et vérifier les résultats de ces modifications instantanément. Des données peuvent également être ajoutées.

En effet, Jupyter Notebook fut créé pour faciliter la présentation de travaux en programmation et pour permettre le codage collaboratif. Il permet de combiner le code, les commentaires, le contenu multimédia et les visualisations dans un document interactif : le notebook. Celui-ci peut être partagé, réutilisé et modifié.

En outre, Jupyter Notebook s'exécute via un navigateur web. Il est donc possible d'héberger le notebook sur une machine locale, ou sur un serveur distant.

À quoi sert Jupyter Notebook ?

Les cas d'usage de Jupyter Notebook sont nombreux. Il est possible d'analyser une collection de textes, de créer de la musique ou de l'art ou même de développer des concepts d'ingénierie.

De manière générale, cet outil permet de combiner les codes et les explications avec l'interactivité de l'application. Pour cette raison, il s'agit d'un outil idéal et très utile pour les Data Scientists. Ces derniers l'utilisent pour fluidifier leurs workflows dans leur intégralité.

On l'utilise aussi couramment pour les mathématiques ou tout autre projet de recherche impliquant des visualisations de données ou des formules. En effet, Jupyter Notebook permet de partager très facilement une visualisation de manière interactive.

De nombreux programmeurs écrivent leurs billets de blog dans des notebooks Jupyter. Ainsi, les lecteurs peuvent les télécharger et reproduire l'expérience.

Un autre cas d'usage de Jupyter est la documentation live pour une bibliothèque ou un module. Alors que la documentation des modules Python est généralement statique, un notebook peut être utilisé comme un bac à sable interactif pour apprendre le fonctionnement d'un module.

Enfin, de manière générale, Jupyter permet le partage de code et de données. Il suffit de placer les éléments à partager dans une archive.

Comment fonctionne Jupyter Notebook ?

Pour installer le Jupyter Notebook, on peut utiliser la commande  » pip  » de Python. En utilisant Anaconda, Jupyter est installé simultanément et automatiquement.

En réalité, Jupyter Notebook est combine trois composants : l'application notebook, les kernels et les documents notebook. L'application web notebook est utilisée pour écrire et exécuter des codes de façon interactive.

Les kernels contrôlent le système en exécutant et en inspectant les codes. Enfin, les documents notebook regroupent tous les contenus visibles dans le notebook. Chaque document est contrôlé par le kernel.

Chaque notebook repose sur différents composants. Le texte et le HTML peuvent être insérés dans le document à tout moment. La stylisation CSS peut aussi être incluse, directement ou via le template utilisé pour générer le notebook.

Le code et sa production sont généralement en Python, mais de nombreux langages sont supportés comme R et Julia. Les résultats du code exécuté apparaissent immédiatement après les blocs de code, et ces blocs peuvent être exécutés dans n'importe quel ordre.

Des visualisations de données peuvent être générées à partir du code, par le biais de modules comme Matplotlib, Plotly et Bokeh. Là encore, ces visualisations apparaissent juste après le code servant à les générer. Le code peut aussi être configuré pour les écrire sur des fichiers externes si besoin.

Puisque Jupyter Notebook repose sur une technologie web, il permet d'afficher tous les types de fichiers multimédias supportés par une page web. Ces fichiers peuvent être intégrés sous forme d'éléments HTML, ou générés par la programmation grâce au module IPython.

Enfin, les données peuvent être fournies dans un fichier séparé aux côtés du fichier ipynb qui constitue le notebook. Elles peuvent aussi être importées par la programmation, par exemple en incluant le code dans le notebook pour télécharger les données à partir d'un dépôt public sur internet ou pour y accéder via une connexion à une base de données.

Les avantages

Les notebooks de calculs existent depuis plusieurs années, mais Jupyter connaît une popularité phénomènale. Ce succès s'explique par plusieurs raisons.

Il s'agit d'un outil open source, gratuit, et compatible avec de nombreux langages de programmation. De plus, ce notebook peut être exécuté depuis une machine locale ou un serveur distant via un navigateur web.

La représentation au format JSON permet à Jupyter Notebook d'être agnostique en termes de plateforme et de langage. Les notebooks peuvent être convertis en Markdown, HTML, PDF et bien plus encore.

Des services Cloud tels que GitHub et Pastebin permettent de partager du code, mais n'offrent pas le même degré d'interactivité. En utilisant Jupyter, il est possible de voir le code, de l'exécuter, et d'afficher les résultats directement dans le navigateur web.

Enfin, il est possible d'attacher des explications sur le fonctionnement d'un morceau de code directement au notebook et de recevoir un feedback en direct. Le code reste fonctionnel.

Cette flexibilité et cette interactivité sont les raisons pour lesquelles Jupyter s'est rapidement imposé comme une référence pour les Data Scientists. Ces derniers l'utilisent pour partage du code et collaborer dessus, pour le prototypage rapide et pour l'analyse exploratoire de données.

En outre, Jupyter Notebook est aussi utilisé comme outil pédagogique. Selon la plateforme de dépôt de code GitHub, plus de 2,5 millions de notebooks Jupyter ont été partagés en septembre 2018.

Les inconvénients

Malgré ses nombreuses qualités, Jupyter Notebook présente aussi des faiblesses. Les notebooks ne sont pas indépendants, et requièrent le runtime Jypyter et les bibliothèques que l'utilisateur compte exploiter. Même s'il existe des méthodes pour créer des notebooks indépendants, aucune n'est prise en charge officiellement.

Autre défaut : il est difficile de sauvegarder l'état d'une session. L'état du code ne peut être préservé ou restauré avec les outils par défaut. Il est donc nécessaire d'exécuter à nouveau le code pour restaurer son état chaque fois que l'on charge le notebook.

Enfin, on déplore l'absence de fonctionnalités propre aux environnements de développement (IDE) pour Python. Il n'y a par exemple pas d'option de débogage interactif, de complétion de code ou de gestion de module.

Jupyter Notebook et la Data Science

De par ses nombreux avantages, Jupyter Notebook s'est imposé comme un standard pour les Data Scientists. Il est aujourd'hui massivement utilisé par les scientifiques des données.

Son succès est lié à la popularité croissante des logiciels open-source, et à l'essor rapide de la Data Science et du Machine Learning. Cet outil présente l'avantage de supporter de nombreux langages. En outre, il est compatible avec les cellules Markdown permettant des écritures plus détaillées et un formatage facile.

Le produit final peut être exporté sous forme de fichier PDF ou HTML, et présenté sur un navigateur web ou partagé via les plateformes de dépôt comme GitHub. Les notebooks sont sauvegardés dans les fichiers textes structurés au format JSON (JavaScript Object Notation), ce qui les rend très faciles à partager.

Selon Fernando Pérez, cofondateur de Jupyter, l'adoption spectaculaire de cet outil est aussi liée aux améliorations apportées aux logiciels web comme Gmail et Docs simplifiant l'accès aux données et leur téléchargement.

Les Jupyter Notebooks ont joué un rôle essentiel dans la démocratisation de la Data Science. Pour cause, ils l'ont rendue plus accessible en abaissant les barrières d'entrée au métier de Data Scientist.

Dans le domaine de la science des données, Jupyter Notebook peut être utilisé pour le Data Cleaning, la modélisation statistique, l'entraînement de modèles de Machine Learning ou encore la visualisation de données.

En permettant de visionner les résultats du code  » in-line  » sans la dépendance des autres parties, Jupyter permet l'analyse de données exploratoire. Chaque cellule du code peut être vérifiée à tout moment. C'est un avantage par rapport à des IDE comme PyCharm ou VSCode.

Le Jupyter Notebook automatise le maintien de l'état d'exécution de chaque cellule. Le résultat de chaque cellule exécutée est mis en cache, qu'il s'agisse d'un code d'entraînement de modèle de Machine Learning ou d'un code permettant le téléchargement de gigabytes de données.

Il est également idéal pour la Data Visualization, en permettant le rendering d'ensembles de données sous forme de graphiques ou de diagrammes générés à partir de codes à l'aide de modules comme Matplotlib, Plotly ou Bokeh.

Avec Jupyter, il est aussi possible d'interagir en live avec le code informatique. Les packages  » jypywidgets  » offrent des interfaces utilisateurs standard pour explorer le code et l'interactivité des données. Le code n'est pas statique, et les utilisateurs peuvent contrôler les sources d'input et fournir leur feedback directement depuis le navigateur.

Qu'est-ce que JupyterLab ?

Depuis 2018, l'interface utilisateur JupyterLab est disponible pour tous et prête pour un usage en production. Il s'agit d'une version plus flexible et malléable que le Jupyter Notebook classique. Les utilisateurs peuvent effectuer des glisser-déposer de cellules entre les notebooks et organiser l'espace de travail en différents ongles et sous-sections.

Le code peut être exécuté directement à partir de fichiers texte et de fichiers Jupyter Notebook, et de nombreux formats de fichiers communs pour le code et les données peuvent être rendus en prévisualisations live.

En outre, JupyterLab peut être personnalisé à l'aide d'extensions pour ajouter la prise en charge de nouveaux formats de fichiers. Ceci permet d'enrichir l'interface, ou d'ajouter des fonctionnalités additionnelles. Les applications sont donc étendues par rapport au Jupyter Notebook.

À terme, l'ambition est de remplacer l'interface Jupyter Notebook par celle de JupyterLab. Il faudra toutefois patienter jusqu'à ce que JupyterLab soit suffisamment stable.

En conclusion, Jupyter Notebook est un formidable outil pour créer une histoire à partir des données. Au fil du temps, il est devenu un écosystème complet regroupant des interfaces alternatives comme JupyterLab et Hydrogen, des bibliothèques de visualisation interactives et une large gamme d'outils.

Newsletter

Envie de ne louper aucun de nos articles ? Abonnez vous pour recevoir chaque semaine les meilleurs actualités avant tout le monde.

Cliquez pour commenter