Dans de nombreux secteurs, un bon travail en équipe est devenu un impératif vital. C’est pourquoi les outils de com­mu­ni­ca­tion, d’or­ga­ni­sa­tion et de contrôle des versions pour les étapes de travail et les données des projets en cours sont devenus pra­ti­que­ment in­con­tour­nables. Il existe dans le domaine de la science des données et de la si­mu­la­tion dif­fé­rentes ap­pli­ca­tions qui essaient de répondre à ces besoins. C’est ainsi par exemple que la solution Internet Jupyter Notebook assure une con­ti­nuité parfaite entre codes de pro­gram­ma­tion et textes ex­pli­ca­tifs, per­met­tant ainsi à ses uti­li­sa­teurs de créer et d’échanger en temps réel du code, des équations, des vi­sua­li­sa­tions, etc., et de les ac­com­pag­ner d’ex­pli­ca­tions. Qu’y a-t-il derrière l’ap­pli­ca­tion open source dé­ve­lop­pée et maintenue dans le cadre du projet Jupyter ?

Qu’est-ce que Jupyter Notebook ?

Jupyter Notebook est une ap­pli­ca­tion client-serveur créée par l’or­ga­ni­sa­tion à but non lucratif Project Jupyter. Elle a été publiée en 2015. Elle permet la création et le partage de documents Web au format JSON cons­ti­tués d’une liste ordonnée de cellules d’entrées et de sorties et organisés en fonction des versions suc­ces­sives du document. Les cellules peuvent contenir, entre autres, du code, du texte au format Markdown, des formules ma­thé­ma­tiques ou des contenus médias (Rich Media). Le trai­te­ment se fait avec une ap­pli­ca­tion client fonc­tion­nant par Internet, à laquelle on accède par les na­vi­ga­teurs habituels. Il est né­ces­saire pour cela que soit installé et activé dans le système le serveur Jupyter Notebook. Les documents Jupyter créés peuvent s’exporter aux formats HTML, PDF, Markdown ou Python par exemple, ou bien se partager par email, avec Dropbox, GitHub ou un lecteur Jupyter Notebook.

Note
Le nom du projet, « Jupyter », rassemble les noms de ses trois prin­ci­paux langages de pro­gram­ma­tion : Julia, Python et R.

Les deux éléments prin­ci­paux de Jupyter Notebook sont un jeu de dif­fé­rents noyaux (in­ter­pré­teurs) et le tableau de bord (dashboard). Les noyaux sont des petits pro­grammes qui traitent des requêtes dans un langage par­ti­cu­lier et qui réa­gis­sent avec les réponses cor­res­pon­dantes. Le noyau standard est l’IPython, un in­ter­pré­ta­teur de lignes de commande, qui permet de tra­vail­ler avec Python. On trouve en plus une bonne cin­quan­taine d’autres noyaux qui per­met­tent l’uti­li­sa­tion d’autres langages, comme C++, R, Julia, Ruby, Ja­vaS­cript, Cof­feeS­cript, PHP ou Java. Le tableau de bord sert d’une part d’interface de gestion des dif­fé­rents noyaux, et d’autre part de centrale pour la création de nouveaux documents Notebook, ou pour ouvrir des documents existants. Jupyter Notebook est dis­po­nible sous licence BSD modifiée et donc librement uti­li­sable par tous.

Quelle est la dif­fé­rence entre Jupyter Notebook, Ju­py­te­rHub et Ju­py­ter­Lab ?

Jupyter Notebook n’est pas le seul produit open source que propose le projet Jupyter : Ju­py­te­rHub et Ju­py­ter­Lab sont les deux autres services étroi­te­ment associés à l’en­vi­ron­ne­ment du code in­te­rac­tif que propose l’équipe de dé­ve­lop­pe­ment.

Ju­py­te­rHub est un serveur multi-uti­li­sa­teur avec proxy qui permet de connecter plusieurs instances Jupyter-Notebook. Ce serveur peut s’héberger soit dans le Cloud soit dans son propre matériel, et permet de partager l’usage d’un en­vi­ron­ne­ment Notebook commun. L’ad­mi­nis­tra­teur du serveur gère l’accès commun aux documents ouverts selon les besoins (il est possible de mettre en œuvre une méthode d’au­then­ti­fi­ca­tion), tout en laissant chaque uti­li­sa­teur se con­cen­trer en­tiè­re­ment sur sa propre tâche. On trouvera des in­for­ma­tions dé­tail­lées sur l’ins­tal­la­tion et l’hé­ber­ge­ment d’un Ju­py­te­rHub dans l’annuaire GitHub de la solutions multi-uti­li­sa­teur.

Ju­py­ter­Lab est le suc­ces­seur officiel de Jupyter Notebook, et doit à long terme remplacer le programme de base. Ju­py­ter­Lab propose en effet plus d’options de réglage et autorise plus d’in­te­rac­ti­vité, tout en étant plus facile à dé­ve­lop­per. C’est ainsi que son interface uti­li­sa­teur, qui a été en­tiè­re­ment remaniée, ne permet pas seulement d’ouvrir et d’afficher des éditeurs de textes, des terminaux et d’autres éléments pa­ral­lè­le­ment à des documents Notebook, mais permet d’avoir des con­nexions à Google Drive et autres services dans le nuage, des commandes de menus sup­plé­men­taires ou bien des rac­cour­cis clavier, ce qui rend le travail avec l’en­vi­ron­ne­ment du code encore plus facile.

À quoi peut servir Jupyter Notebook ?

Jupyter Notebook met à dis­po­si­tion un en­vi­ron­ne­ment qui répond par­fai­te­ment aux exigences et au flux de travail dans le domaine de la science des données et de la si­mu­la­tion. Une seule et unique instance permet à l’uti­li­sa­teur d’écrire du code, de l’ac­com­pag­ner d’ex­pli­ca­tions et de l’exécuter, mais aussi de vi­sua­li­ser des données, d’exécuter des calculs et de vérifier les résultats obtenus. C’est en par­ti­cu­lier à l’étape du prototype qu’on apprécie la pos­si­bi­lité offerte de loger tous les codes dans des cellules in­dé­pen­dantes, ce qui permet de tester in­di­vi­duel­le­ment des blocs de code par­ti­cu­liers. Grâce à de nombreux noyaux com­plé­men­taires, Jupyter n’est pas limité à Python comme langage de pro­gram­ma­tion, ce qui procure une énorme flexi­bi­lité de codage et d’analyse.

Voici quelques-uns des prin­ci­paux usages qu’on peut faire de Jupyter Notebook :

  • Nettoyage des données : faire le tri entre les données im­por­tantes et celles qui ne le sont pas dans l’analyse des ensembles de mé­ga­don­nées
  • Mo­dé­li­sa­tion sta­tis­tique : méthode ma­thé­ma­tique per­met­tant d’établir la pro­ba­bi­lité de ré­par­ti­tion d’une ca­rac­té­ris­tique par­ti­cu­lière
  • Création et mise en œuvre de modèles d’ap­pren­tis­sage au­to­ma­tique : étude, pro­gram­ma­tion et ap­pren­tis­sage de modèles
  • Vi­sua­li­sa­tion de données : re­pré­sen­ta­tion graphique de données pour faire ap­pa­raître des struc­tures, des tendances, des relations, etc.

Comment utiliser Jupyter Notebook ?

Pour utiliser Jupyter Notebook il faut d’abord installer, dans son système ou dans le Cloud, l’ap­pli­ca­tion client et serveur de l’en­vi­ron­ne­ment du code. La seule condition est qu’il soit également installé une version valide de Python. C’est pourquoi l’équipe Jupyter re­com­mande de té­lé­char­ger la dis­tri­bu­tion Anaconda, qui contient aussi bien Jupyter Notebook et Python que divers autres ensembles logiciels pour la science des données, le calcul scien­ti­fique, etc. Une fois l’ins­tal­la­tion réalisée, on peut lancer le serveur Notebook par la ligne de commande, puis ouvrir le tableau de bord dans le na­vi­ga­teur qu’on utilise (URL 'http ://localhost :8888').

C’est là qu’on crée de nouveaux dossiers dans le ré­per­toire de Jupyter-Notebook, qu’on ouvre l’éditeur de texte intégré et le terminal, ou bien qu’on lance un nouveau projet Jupyter. Chaque nouveau projet créé ne contient d’abord qu’un seul champ de saisie vide. On peut avec la barre des menus ajouter de nouveaux champs, importer des bi­blio­thèques ou in­cor­po­rer des uti­li­taires (éléments in­te­rac­tifs). La barre de menus comprend en plus des commandes per­met­tant d’exécuter des codes et de les arrêter, d’en­re­gis­trer ou d’exporter l’ensemble du document, ainsi que de choisir le noyau de base.

Conseil
Il est possible, à partir de la page d’accueil du site officiel du projet Jupyter, d’essayer Jupyter Notebook sans l’installer.

Les avantages de Jupyter Notebook

Quiconque veut écrire des scripts et les tester en temps réel, vi­sua­li­ser des données ou réaliser des calculs ma­thé­ma­tiques complexes trouvera dans Jupyter Notebook une solution de premier rang. Les résultats peuvent s’exporter dans dif­fé­rents formats en quelques clics ou s’envoyer di­rec­te­ment par email. Les uti­li­sa­teurs du Ju­py­te­rHub multi-uti­li­sa­teur peuvent même tra­vail­ler ensemble sur des documents Notebook, per­met­tant ainsi un travail en équipe optimisé. Étant donné que Jupyter est écrit en langage Python, les spé­cia­listes de ce dernier sont certes avantagés dans l’uti­li­sa­tion de cette ap­pli­ca­tion à code source ouvert, mais il existe quantité d’in­ter­pré­teurs prêts à l’usage pour d’autres langages, et on peut par con­sé­quent par­fai­te­ment coder avec d’autres grands langages comme C++, PHP ou Java.

Ré­ca­pi­tu­la­tif des avantages de Jupyter Notebook :

  • open source (licence BSD modifiée)
  • usage gratuit
  • s’utilise à partir d’un na­vi­ga­teur
  • live-coding
  • variété d’options d’export et de partage des résultats
  • gestion des versions
  • pos­si­bi­lité de travail col­la­bo­ra­tif (Ju­py­te­rHub)
  • permet d’utiliser plus de 50 langages de pro­gram­ma­tion.
Aller au menu principal