Dans un projet Big Data, plusieurs intervenants collaborent afin d’utiliser les multitudes de données traitées par ces derniers lors de la prise de décision de l’entreprise. Les Data Engineers, les Data Scientists et les Data Analysts font partie de ces personnes. Chacun d’eux possède des tâches spécifiques à exécuter. Cependant, le travail de l’un d’eux dépend des résultats fournis par d’autres, ce qui s’apparente à des tâches à la chaine. Le Data Analyst réceptionne les travaux fournis par le Data Scientist qui, lui, obtient ses résultats à partir de ceux du Data Engineer. C’est pour cela que les outils tels que JupyterLab et Jupyter Notebook sont très utiles dans le domaine de la Data Science.

Dans ce tutoriel exhaustif, nous allons vous présenter le projet Jupyter, JupyterLab et Jupyter Notebook. Nous allons voir comment il fonctionne et comment l’apprivoiser.

Qu’est-ce que Jupyter ?

Jupyter est le Notebook le plus utilisé dans le monde de la data science. En effet, dans ce domaine où la programmation informatique est indispensable, les Notebook font partie des outils à absolument avoir.  Un notebook est un outil qui facilite la programmation. Il existe différents types de systèmes de Notebook dont le plus populaire est Jupyter.

Cette popularité est due au fait qu’il offre plusieurs possibilités dans le but de rendre la programmation et le partage de code fluide et facile.

Histoire : Le projet Jupyter

Jupyter vient de Julia / Python et R, c’est un projet nommé IPython qui est à l’origine de celui-ci. L’objectif de ce projet est de pouvoir développer un interpréteur plus avancé pour la programmation Python. 

Petit à petit, le projet Jupyter prend de l’ampleur avec la création des Notebooks et des interfaces web au format JSON. Grâce à cela, on fait tourner le noyau Python afin de programmer directement dans un navigateur et d’afficher les résultats intermédiaires.

C’est vraiment une grande avancée dans le monde programmation Python, car elle facilite le partage des codes ainsi que le développement interactif.

IPython est un projet typiquement orienté Python. Les développeurs de ce projet ont constaté que Python n’était pas la seule solution. 

Donc, pour utiliser un langage autre que python, il suffit d’ajouter un noyau associé à ce langage pour arriver à développer directement dans ce langage. C’est à partir de là qu’est né le projet Jupyter et ses Jupyter Notebook.

La partie Notebook a été extraite du projet IPython, car le projet est beaucoup plus penché sur l’aspect Python.

JupyterLab

L’équipe qui dirige le projet Jupyter s’est donné encore plus de temps pour la création d’un nouvel environnement de travail : c’est le JupyterLab.  Toute la puissance des notebooks est concentrée dans cet environnement et il donne la possibilité d’utiliser d’autres outils en même temps. Cette interface propose plusieurs bibliothèques et extensions utiles dans le traitement des données volumineux. JupyterLab s’ouvre dans des navigateurs et permet aussi d’ouvrir vos anciens Notebook. C’est pour cela qu’elle est très intéressante dans le domaine de la Data Science.

Installation de JupyterLab

Pour installer Jupyter, on peut procéder de différentes manières :

  • Avec conda en tapant cette ligne de commande :
conda install -c conda-forge jupyterlab
  • En utilisant mamba :
mamba install -c conda-forge jupyterlab
  • Avec pip en exécutant :
pip install jupyterlab
  • Avec pipenv en lançant ces commandes :
pipenv install jupyterlab
pipenv shell

Si vous souhaitez utiliser pipenv, afin de l’exécuter, vous devez d’abord activer le fichier virtualenv dans le répertoire où vous avez exécuté les lignes code précédent.

Une fois que vous avez installé JupyterLab sur votre système, tapez cette commande dans votre terminal pour le lancer : 

jupyter-lab

Mais si vous avez installé Anaconda ou Miniconda, il faut juste le lancer et cliquer sur launch :

jupyterLab-anaconda

D’ailleurs, nous avons un article qui vous apprend à installer et paramétrer Anaconda pour Python qui vous facilitera l’appréhension de cet outil.

Interface de JupyterLab

JupytertLab possède de nombreuses fonctionnalités de développement interactif basées sur le web. C’est un environnement flexible, son interface utilisateur donne une vue large sur le flux de travail en science des données, en apprentissage automatique et en calcul scientifique. 

JupyterLab est modulaire et extensible, vous pouvez écrire des plugins pour ajouter de nouveaux éléments à ceux qui existent. 

Bien que beaucoup de fonctionnalités de JupyterLab ressemblent aux autres fonctionnalités des environnements de développement intégré, il reste axé sur l’informatique interactive et exploratoire.

interface JupyterLab

Dans l’espace de travail JupyterLab on peut voir les fichiers en cours d’exécution, les onglets, la disposition des applications, etc. Il faut noter que JupyterLab traite essentiellement trois types de documents : les scripts, les notebooks et enfin les terminaux.

Barre de Menu

La barre de menu se trouve en haut de JupyterLab. Dans ces menus se trouvent les différentes actions possibles de JupyterLab. De même, avec une extension JupyterLab, on peut ajouter un nouveau menu dans la barre.

  • Fichier : Opération sur les fichiers et répertoires
  • Éditer : Opération pour l’édition de documents et d’autres activités
  • Vue : Opération qui modifie l’apparence de JupyterLab
  • Exécuter : Opération pour lancer du code dans différentes activités telles que les blocs-notes et les consoles de code
  • Kernel : actions de gestion des noyaux, qui sont des processus séparés pour l’exécution du code
  • Onglets : une liste des documents ouverts et des activités dans le panneau du dock
  • Paramètres :  un éditeur de paramètres avancés

Aide : une liste des liens d’aide de JupyterLab et du noyau

Barre latérale de gauche

Cette barre regroupe quelques onglets qui sont couramment utilisés. On a, par exemple, le navigateur de fichiers, les terminaux en cours d’exécution et une liste de noyaux.

barre latérale de jupyterLab

Zone de travail principale

Cette zone vous permet de gérer et d’organiser tous vos documents et d’autres activités telles que la console de code dans des panneaux d’onglets que vous pouvez les redimensionner ou subdiviser.

Les extensions de JupyterLab

Il existe quelques extensions à JupyterLab :

  • Voilà : c’est grâce à cette extension que l’on peut prévisualiser un bloc-notes HTML. Cette action de prévisualisation peut se faire dans un onglet navigateur web ou dans JupyterLab.
  • Jupytext : c’est cette extension qui permet de définir le format des cellules tel que Markdown.
  • Ipywidget : elle donne plus d’interactivité avec les blocs note grâce aux différents widgets.
  • Ipyml : elle donne plus d’interactivité avec les graphes générés par la bibliothèque matplotlib.
  • jupyterlab-latex : c’est cette extension qui permet d’ouvrir des documents Latex. On utilise Latex pour les légendes des graphes.

Comment configurer JupyterLab comme application Chrome ?

Rentrons directement dans le vif du sujet et commençons la configuration de JupyterLab sur Chrome. Tout d’abord, lancez le terminal Anaconda Prompt puis tapez :

jupyter lab --generate-config

À partir d’un éditeur de texte, ouvrez le fichier de configuration Jupyter qui se trouve à cet emplacement :

C:\Users\<User>\.jupyter\jupyter_notebook_config.py

Une fois le fichier ouvert, copiez et collez cette ligne à la fin du fichier :

c.NotebookApp.browser = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe --app=%s"

Et voilà, le tour est joué, la configuration pour Chrome est terminée !

Comment créer un raccourci JuputerLab ?

Pour créer un raccourci, rendez-vous à l’emplacement suivant :

C:\Users\DJAMELA KELIE\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Anaconda3 (32-bit)

chemin anaconda

Ensuite, copiez le raccourci Jupyter Notebook (anaconda3) et renommez-le en Jupyter Lab. Il faut changer l’icône du nouveau raccourci en faisant un clic droit sur Jupyetr Lab. Cliquer sur propriétés puis changer d’icône.

Au niveau du champ cible, il note jupyter-notebook-script.py. Il faut que vous le modifiiez en jupyter-lab-script.py.

modification du nom du fichier

Comment créer un raccourci serveur déjà en cours d’exécution ?

Pour créer le raccourci, il faut procéder comme suit :

Faites un clic droit, cliquez sur Nouveau puis Raccourci. Mettez comme cible d’emplacement de l’élément :

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe » –app=http://localhost:8888/

création de raccourci

Vous pouvez également démarrer un serveur sans générer la fenêtre de l’application Chrome App en tapant jupyter lab –no-browser dans la console Anaconda Prompt. Mais tout d’abord, il faut taper cette commande : 

Jupyter lab --generate-config
commande generate-config

Après cela, vous allez obtenir un emplacement. Rendez-vous dans cet emplacement et ouvrez le fichier notebook_config.py 

résultat generate-config

Faites un copier-coller de cette ligne à la fin du fichier et enregistrez :

c.NotebookApp.browser = « C:/Program Files (x86)/Google/Chrome/Application/chrome.exe –app=%s »

Ensuite, exécutez cette commande :

jupyter lab --no-browser
ouverture JupyterLab

Le Jupyter Notebook : c’est quoi ?

Un carnet Jupyter ou Notebook en anglais est une feuille dans laquelle il est possible de combiner le code informatique et le texte en langage naturel.

Jupyter Notebook : à quoi ça sert ?

Jupyter Notebook répond parfaitement aux critères et aux flux de travail dans le secteur de la science de données et de la simulation. 

Dans une seule et unique instance, l’utilisateur peut écrire du code, commenter le code et l’exécuter. Il est même en mesure de visualiser des données et de vérifier les résultats obtenus.

Notebook donne la possibilité de séparer les bouts de code dans des cases indépendantes. Grâce à cela, on peut tester individuellement les blocs de code. 

Jupyter ne s’arrête pas seulement à la programmation python, mais possède une énorme flexibilité de codage et d’analyse grâce aux nombreux noyaux complémentaires.

En gros, voici à quoi sert Jupyter Notebook :

  • Nettoyage des données : Vous pouvez filtrer les données et ne garder que celles qui vous intéressent dans le cas d’une analyse des mégadonnées ; 
  • Modélisation statistique : méthode mathématique pour faire de la probabilité ;
  • Création et mise en œuvre de modèles d’apprentissage automatique : étude, programmation et apprentissage de modèles ;

Visualisation de données : obtenir une représentation graphique de données.

Comment utiliser Jupyter Notebook ?

Le Notebook est constitué de cellules qui peuvent prendre du code ou du texte en langage naturel. Le choix du type de contenu de la cellule revient à l’utilisateur.

Par défaut, la cellule prend du code. Pour y intégrer du texte en langage humain, vous devez changer le type de la cellule. Pour ce faire, cliquez sur la liste déroulante dont l’option par défaut est “code” se trouvant dans la barre de menu et choisissez Markdown.

changement cellule Jupyter Notebook

Vous pouvez également utiliser ce raccourci : Esc + m  Une fois que vous avez changé le type, vous pouvez ajouter une brève description pour donner une idée de la tâche que votre code va accomplir ou un petit guide sur comment utiliser votre programme.

ajout de commentaire jupyter notebook

Dans la cellule, on a ajouté un petit descriptif qui indique que le programme fera une conversion de date.

À chaque édition, vous pouvez annuler les modifications apportées à la cellule en tapant Ctrl+Z. Si vous voulez passer à une autre cellule, il faut taper sur Exécuter.

jupyter notebook executer

Si vous voulez modifier une cellule qui est déjà exécutée, il suffit de double-cliquer sur celle-ci ou cliquer une fois sur la cellule. Vous verrez afficher à gauche une barre verticale bleue. Ensuite, tapez sur la touche entrée.

modification cellule Jupyter Notebook

Comment ajouter un noyau personnalisé ?

Pour l’ajout d’un noyau personnalisé, il faut définir un fichier de configuration approprié à Jupyter :

  • Il faut dans un premier temps créer un nouveau répertoire dans : 
$HOME/.local/share/jupyter/kernels/ 

Prenons par exemple python-3.10. Dans ce cas précis, ajoutons un noyau personnalisé Python 3.10

Il faut créer l’arborescence des répertoires si ça n’existe pas en passant par cette ligne de code :

%mkdir -p $HOME/.local/share/jupyter/kernels/python-3.10 
  • Une fois finis, allez dans le répertoire puis créer un fichier kernel.json
% cd $HOME/.local/share/jupyter/kernels/python-3.10
% vi kernel.json

Le fichier créé ressemblera à ceci :

{
  "display_name": "conda3",
  "language":     "python",
  "argv": [
      "<PATH>/jupyter-helper.sh",
      "-f",
      "{connection_file}"
  ]
}

Le noyau personnalisé aura pour nom display_name et sera visible dans l’instance JupyterLab. Le paramètre langage peut être mis à jour, mais la plus importante est le script jupyter-helper.sh.

  • C’est le script jupyter-helper.sh qui peut vous donner les informations pour configurer l’environnement du nouveau noyau. 

Voilà à quoi ressemble le script :

#!/bin/bash

source /pbs/software/centos-7-x86_64/anaconda/3.7/,etc/profile.d/conda.sh
conda activate

exec python -m ipykernel_launcher "$@"

Quels avantages Jupyter Notebook présente-t-il ?

Tout programmeur qui souhaite en même temps tester son script, visualiser les données ou faire des calculs mathématiques complexes verra que Jupyter Notebook est la meilleure solution.

Il est possible de voir le résultat du test sous divers format en seulement quelques clics et même de vite partager le résultat par mail.

Voici le résumé des avantages :

  • Open source (licence BSD modifiée) ;
  • Usage gratuit ;
  • S’utilise à partir d’un navigateur ;
  • Live-coding, c’est-à-dire que vous pouvez coder de façon interactive ;
  • Variété d’options d’export et de partage des résultats ;
  • Gestion des versions ;
  • Possibilité de travail en équipe (JupyterHub) ;
  • Compatible avec plus de 50 langages de programmation.

Qu’est-ce que JupyterHub ?

JupyterHub est un serveur multi-utilisateur. Il renforce la capacité et facilite l’utilisation de notebook. C’est JupyterHub qui donne la possibilité de partager sans difficulté son code et aussi d’effectuer l’intégration avec Moodle, une plateforme de formation.

C’est dans le cloud ou sur votre système que JupyterHub s’exécute, et il présente un environnement bien structuré pour les sciences de données.

Fonctionnalités de JupyterHub

Plusieurs fonctionnalités sont offertes par JupyterHub :

Personnalisable : Il est possible d’utiliser JupyterHub pour travailler avec divers environnements. Il est compatible avec plusieurs noyaux ainsi que le serveur Jupyter. Et enfin, il est utilisé pour afficher différentes interfaces utilisateur telles que JupyterLab, Jupyter Notebook, nteract, RStudio, etc.

Flexible : Configurer JupyterHub avec une authentification telle que OAuth et GitHub, donnent un accès à un sous-ensemble d’utilisateur.

Évolutif : Il prend en charge les conteneurs et peut être configuré avec la technologie de conteneur moderne. Il est aussi compatible avec Kubernetes.

Portable : JupyterHub est open source et est créé pour exécuter diverses infrastructures telles que les clouds, les machines virtuelles ou même sur votre ordinateur.

La différence entre Jupyter Notebook, JupyterLab et JupyterHub

Le projet Jupyter n’a pas seulement comme produit open source le Jupyter Notebook. Il y a également JupyterHub et JupyterLab qui sont deux autres produits du projet Jupyter.

JupyterHub est un serveur multi-utilisateur avec proxy qui a pour rôle de mettre en contact plusieurs instances Jupyter Notebook. Ce serveur peut se trouver dans le cloud ou dans votre propre ordinateur. 

L’administrateur du serveur définit les droits d’accès et met en place un système d’authentification aux documents selon les besoins et le rôle de chaque utilisateur.

JupyterLab est le produit open source créé juste après Jupyter Notebook et qui doit remplacer le programme de base sur une longue durée. JupyterLab donne plus d’options de réglages et autorise plus d’interactivité. 

C’est pourquoi son interface utilisateur permet non seulement d’ouvrir et d’afficher des éditeurs de textes ou des terminaux, mais peut aussi se connecter à Google Drive et certains autres services du cloud. Tout ceci rend le travail plus facile.

Comment écrire un programme sur JupyterLab ?

Pour procéder à la programmation à proprement dite, il faut suivre ces étapes :

  • Lancez JupyterLab
  • Cliquez sur Python 3
lancement de Python 3
  • Vous allez obtenir cette interface qui vous permettra de travailler :
espace de travail jupyterlab

Générer un fichier au format csv avec Jupyter Lab

Le format csv est tout simplement le format qui encode des données en colonnes. 

Ces colonnes sont composées de rangées et chaque rangée comporte des valeurs qui sont séparées par une virgule. CSV veut dire Comma Separated Values.

import random
first_names = ["Paul","Jule","Ivan","Maria","Elodie"]
last_names = ["Pernaud","Evian","Seri","Pasta","Bolivar"]
salaries = [500*random.randint(10,30) for _ in range(10)]
def generate_random_person(first_names, last_names, salaries):
   return {"firstname":random.sample(first_names,1)[0],
           "lastname":random.sample(last_names,1)[0],
           "salary":random.sample(salaries,1)[0]}
def generate_people(k):
   return [generate_random_person(first_names, last_names, salaries) for _ in range(k)]

Créez ensuite un DataFrame Pandas avec 30 personnes en utilisant la fonction generate_people(), où chaque colonne est une série Pandas :

import pandas as pd
df = pd.DataFrame(generate_people(30),
                 columns=["firstname","lastname","salary"])
df.to_csv("random_people.csv", index=False)

Et enfin, vous pouvez le remarquer, un Dataframe est généré sous la forme d’une liste de dictionnaires. Avec la méthode to_csv, on l’exporte simplement dans un fichier CSV avec un nom de fichier comme seul argument.

Résultat, on obtient un DataFrame avec 3O personnes.

Commençons par avoir un feeling avec nos données en affichant la tête du dataframe :

df = pd.read_csv("random_people.csv")
df.head(4)
dataframe pandas avec jupyterlab

Voilà, nous arrivons à la fin de ce tutoriel. Il vous aidera sans doute à mieux coder lors de vos prochains projets Python et Big Data. Nous espérons que vous avez pu comprendre et appréhender cet outil en appliquant les consignes que nous vous avons fournies.

Toujours pour vous aider dans le domaine de la Data Science, nous vous offrons cette formation sur la programmation Scala.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>