Comment optimiser votre notebook Jupyter

introduction

Jupyter Notebook est aujourd'hui probablement l'environnement le plus utilisé pour résoudre des tâches d'apprentissage automatique / science des données en Python.

Jupyter Notebook est une application client-serveur utilisée pour exécuter des documents notebook dans le navigateur. Les documents Notebook sont des documents capables de contenir à la fois du code et des éléments de texte enrichi tels que des paragraphes, des équations, etc.

Dans cet article, je vais vous expliquer quelques astuces simples pour améliorer votre expérience avec Jupyter Notebook. Nous commencerons par des raccourcis utiles et nous finirons par ajouter des thèmes, une table des matières générée automatiquement, etc.

Raccourcis

Les raccourcis peuvent être vraiment utiles pour accélérer l'écriture de votre code. Je vais maintenant vous expliquer certains des raccourcis que j'ai trouvés les plus utiles à utiliser dans Jupyter.

Il existe deux manières d'interagir avec Jupyter Notebook: le mode commande et le mode d'édition. Certains raccourcis ne fonctionnent que sur un mode ou un autre tandis que d'autres sont communs aux deux modes.

Certains raccourcis communs dans les deux modes sont:

  • Ctrl + Entrée : pour exécuter toutes les cellules sélectionnées
  • Shift + Enter : exécuter la cellule actuelle et déplacer la suivante
  • Ctrl + s : enregistrer le cahier

Pour entrer en mode de commande Jupyter, nous devons appuyer sur Echap, puis sur l'une des commandes suivantes:

  • H : afficher tous les raccourcis disponibles dans Jupyter Notebook
  • Maj + Flèche haut / bas : pour sélectionner plusieurs cellules de bloc-notes en même temps (appuyer sur Entrée après avoir sélectionné plusieurs cellules les fera toutes fonctionner!)
  • A : insérez une nouvelle cellule ci-dessus
  • B : insérez une nouvelle cellule ci-dessous
  • X : coupe les cellules sélectionnées
  • Z : annuler la suppression d'une cellule
  • Y : changez le type de cellule en Code
  • M : changez le type de cellule en Markdown
  • Espace : faire défiler le carnet vers le bas
  • Maj + Espace : faire défiler le carnet vers le haut

Pour entrer en mode d'édition Jupyter à la place, nous devons appuyer sur Entrée et successivement sur l'une des commandes suivantes:

  • Onglet : suggestions de concours de codes
  • Ctrl +] : indenter le code
  • Ctrl + [ : code de déduction
  • Ctrl + z : annuler
  • Ctrl + y : refaire
  • Ctrl + a : tout sélectionner
  • Ctrl + Origine : déplacer le curseur au début de la cellule
  • Ctrl + Fin : déplace le curseur à la fin de la cellule
  • Ctrl + Gauche : déplacer le curseur d'un mot vers la gauche
  • Ctrl + Droite : déplace le curseur d'un mot vers la droite

Commandes Shell et installation de packages

Peu d'utilisateurs en sont conscients, mais il est possible d'exécuter des commandes shell dans une cellule de notebook Jupyter en ajoutant un point d'exclamation au début de la cellule. Par exemple, exécuter une cellule avec ! Ls renverra tous les éléments du répertoire de travail actuel. Exécuter une cellule avec ! Pwd affichera à la place le chemin du fichier du répertoire courant.

Cette même astuce peut également être appliquée pour installer des packages Python dans le notebook Jupyter.

!pip install numpy

Thèmes Jupyter

Si vous souhaitez modifier l'apparence de votre notebook Jupyter, il est possible d'installer un package avec une collection de thèmes différents. Le thème Jupyter par défaut ressemble à celui de la figure 1. Dans la figure 2, vous verrez comment nous pourrons personnaliser son aspect.

Nous pouvons installer notre package directement dans le notebook en utilisant l'astuce que je vous ai montrée dans la section précédente:

!pip install jupyterthemes

Nous pouvons exécuter la commande suivante pour lister les noms de tous les thèmes disponibles:

!jt -l # Cell output: # Available Themes: # chesterish # grade3 # gruvboxd # gruvboxl # monokai # oceans16 # onedork # solarizedd # solarizedl

Enfin, nous pouvons choisir un thème à l'aide de la commande suivante (dans cet exemple j'ai décidé d'utiliser le thème solarized1):

!jt -t solarizedl

Une fois que nous avons exécuté cette commande et actualisé la page, notre bloc-notes devrait ressembler à celui de la figure 2.

Si vous souhaitez à tout moment revenir au thème de bloc-notes Jupyter d'origine, vous pouvez simplement exécuter la commande suivante et actualiser votre page.

!jt -r

Extensions de notebook Jupyter

Les extensions Notebook peuvent être utilisées pour améliorer l'expérience utilisateur et offrir une grande variété de techniques de personnalisation.

Dans cet exemple, j'utiliserai la bibliothèque nbextensions afin d'installer tous les widgets nécessaires (cette fois, je vous suggère d'installer d'abord les packages via le terminal, puis d'ouvrir le notebook Jupyter). Cette bibliothèque utilise différents modèles Javascript afin d'enrichir le frontend du notebook.

! pip install jupyter_contrib_nbextensions ! jupyter contrib nbextension install --system

Une fois que nbextensions est installé, vous remarquerez qu'il existe un onglet supplémentaire sur la page d'accueil de votre notebook Jupyter (Figure 3).

En cliquant sur l'onglet Nbextensions, nous recevrons une liste des widgets disponibles. Dans mon cas, j'ai décidé d'activer ceux illustrés à la figure 4.

Certaines de mes extensions préférées sont:

  1. Table des matières

Auto-generate a table of contents from markdown headings (Figure 5).

2. Snippets

Sample codes to load common libraries and create sample plots which you can use as a starting point for your data analysis (Figure 6).

3. Hinterland

Code autocompletion for Jupyter Notebooks (Figure 7).

The nbextensions library provides many other extensions apart for these three, so I encourage you to experiment and test any other which can be of interest for you!

Markdown Options

By default, the last output in a Jupyter Notebook cell is the only one that gets printed. If instead we want to automatically print all the commands without having to use print(), we can add the following lines of code at the beginning of the notebook.

from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"

Additionally, it is possible to write LaTex in a Markdown cell by enclosing the text between dollar signs ($).

Notebook Slides

It is possible to create a slideshow presentation of a Jupyter Notebook by going to View -> Cell Toolbar -> Slideshow and then selecting the slides configuration for each cell in the notebook.

Finally, by going to the terminal and typing the following commands the slideshow will be created.

pip install jupyter_contrib_nbextensions # and successively: jupyter nbconvert my_notebook_name.ipynb --to slides --post serve

Magic

Magics are commands which can be used to perform specific commands. Some examples are: inline plotting, printing the execution time of a cell, printing the memory consumption of running a cell, and so on.

Magic commands which start with just one % apply their functionality just for one single line of a cell (where the command is placed). Magic commands which instead start with two %% are applied to the whole cell.

It is possible to print out all the available magic commands by using the following command:

%lsmagic

Contact info

If you want to keep updated with my latest articles and projects follow me and subscribe to my mailing list. These are some of my contact details:

  • Linkedin
  • Personal Blog
  • Personal Website
  • Medium Profile
  • GitHub
  • Kaggle

Cover photo from this article.