Numérique et Sciences Informatiques

Apprentissage de jupyter Notebook - Exercice de prise en main

Cet exercice a pour objectif de vous faire rapidement explorer les fonctionnalités de base de l'interpréteur interactif jupyter en mode Notebook.

Mais tout d'abord félicitations d'être déjà parvenu à ouvrir ce notebook !


Édition et exécution d'une cellule de code

Un notebook jupyter consiste en cellules individuelles pouvant contenir du code Python, du texte (avec formatage Markdown, HTML et LaTeX) ou des graphiques. Commençons par les cellules de type Code.

1) Placez le curseur dans la 1ère cellule Entrée []: ci-dessous puis frappez <enter>. Que se passe-t-il ? Rien d'autre que l'insertion d'un saut de ligne... C'est normal, car dans une cellule de type "Code" (c'est-à-dire préfixée par Entrée[ ]:) on est par défaut en mode édition de code Python !

Pour exécuter le code Python d'une cellule, il faut en effet frapper <maj-enter> (ou cliquer sur le bouton , ou encore utiliser le menu Cell>Run and Select Below...). Essayez !

In [ ]:
15 + 24
In [ ]:
'Hello tout le monde !'

Une ligne Out[ ]: devrait être apparue en dessous de la 1ère expression, affichant le résultat de celle-ci ! Le curseur est alors automatiquement passé dans la cellule d'en-dessous que vous pouvez exécuter à son tour.

Notez qu'il est aussi possible de frapper <ctrl-enter> (identique à Cell>Run). Dans ce cas, le curseur reste dans la cellule après l'exécution du code.

2) Exécutez maintenant le code de la cellule ci-dessous.

In [ ]:
a, b = 10, 6      # affectation simultanée de 2 variables
print('La somme de ces 2 nombres vaut :', a + b)

Remarquez que l'exécution du code ci-dessus n'a retourné aucune valeur. Il n'y a pas de prompt Out[ ].

3) Peut-on modifier le code d'une cellule puis le ré-exécuter ? Bien sûr !
Expérimentez cela dans la cellule ci-dessus en modifiant la valeur des variables a et b, puis frappez à nouveau <maj-enter>

Création de cellules de code

4) Comment puis-je créer mes propres cellules de code ? Tout simplement de la façon suivante :

  • sélectionnez d'abord la cellule juste au-dessus de l'emplacement où vous désirez insérer votre propre cellule
    (ou respectivement juste en-dessous)
  • puis cliquez sur le bouton ou faites Insert>Insert Cell Below
    (ou respectivement Insert>Insert Cell Above)

Exercez-vous en créant, juste en-dessous de la présente cellule, une nouvelle cellule.

Insérez-y le code :

print('Ouaouh... c'est ma première cellule !')

puis exécutez le code de cette cellule.

In [ ]:
print("Ouaouh... c'est ma première cellule !")

5) Nous vous avons tendu un piège : si vous avez repris cette instruction print telle quelle, son exécution a dû générer une erreur, car l'apostrophe de la partie de chaîne ...c'est... n'était pas préfixé de "\". Peu importe, corrigez votre code et réexécutez-le, ce qui illustre bien l'intérêt de jupyter Notebook !

Destruction de cellules

6) Pour détruire une cellule, sélectionnez-la puis cliquez sur le bouton (ou faites Edit>Delete Cell). Exercez-vous en détruisant la cellule ci-dessous. Puis rétablissez-la avec Edit>Undo Delete Cell

In [ ]:
Une cellule à jeter !!!

Notez qu'il existe également : le bouton (correspondant au menu Edit>Copy Cell) ainsi que le bouton (et divers articles de menus Edit>Paste Cell...)

Déplacement, splittage et fusionnement de cellules

7) Vous trouvez ci-dessous 2 cellules de type texte (on verra dans un instant comment on peut créer de telles cellules).

Commencez par spliter la première cellule : pour cela double-cliquez d'abord dans la cellule pour l'éditer, puis placez le curseur entre les 2 lignes, et faites finalement Edit>Split Cell

Ceci est la troisième cellule de texte, blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla.

Ceci est la seconde cellule de texte, blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla.

Ceci est la première cellule de texte, blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla.

8) Vous devriez maintenant avoir ci-dessus 3 cellules de texte. Déplacez-les de façon à les mettre dans l'ordre, en utilisant les boutons et ou menus Edit>Move ...)

9) Puis expérimentez le fusionnement de cellules en fusionnant ces 3 cellules de texte avec Edit>Merge Cell Above ou Edit>Merge Cell Below

Création de cellules de texte

Il existe 2 types de cellules de texte, selon le choix effectué à l'aide du menu déroulant de droite ou avec Cell>Cell Type>... :

  • Raw NBConvert (texte) : cellules de texte sans aucun formatage, directement éditables sans devoir double-cliquer dedans ;
  • Markdown : cellules dans lesquelles le texte est soumis à un formatage selon la syntaxe Markdown ; les éventuelles balises HTML et le code LaTeX sont également interprétés...

**Remarque** : le type Heading n'est plus supporté.

10) Créez juste ci-dessous une cellule de type Raw NBConvert (texte). Pour cela, créez une cellule par le procédé standard (elle sera donc de type Code), puis changez son type à l'aide du menu déroulant. Constatez que la cellule reste toujours en mode édition.

11) S'agissant des cellules de texte au format Markdown, cela suppose quelques notions relatives au langage de balisage Markdown : Rédigez en Markdown !.

Pour vous donner une idée de la simplicité du balisage Markdown, vous pouvez double-cliquer dans les cellules de texte du présent notebook qui sont toutes au format Markdown.

Et comme vous le voyez ci-dessous, il est donc même possible d'introduire du code LaTeX (placé entre deux caractères $) dans une cellule de type Markdown :

$$f(x) = x^2 - x^{1 \over \pi}$$

Sauvegarder et imprimer un notebook

13) Lorsque vous avez terminé de travailler dans un notebook, n'oubliez pas de le sauvegarder avec le bouton (ou le menu File>Save and Checkpoint). Sachez que jupyter effectue par défaut des sauvegardes à intervalle régulier, et que File>Revert to Checkpoint permet de revenir à un état enregistré.

14) _Si vous désirez imprimer un notebook, n'utilisez pas la commande d'impression de votre navigateur web depuis la fenêtre de notebook, le résultat sera très mauvais. La bonne méthode consiste à faire au préalable depuis le menu File>Print Preview. Mais il est peut être préférable de télécharger une version numérique du notebook sur l'ordinateur local dans le format qui vous convient comme le HTML pour obtenir une page web statique avec le menu File>Download as...

Graphiques dans un notebook

Si vous exécutez la fonction magique %pylab inline, les packages Numpy et Matplotlib sont importés et il sera possible de dessiner des graphiques de façon "inline" (intégrés au notebook).

In [ ]:
%pylab inline

L'exemple de code suivant sera alors exécutable.

In [ ]:
# Fait appel à numpy (linspace et pi)
x = linspace(0, 3*pi, 500)

# Fait appel à matplotlib (plot et title)
plot(x, sin(x))
title('Graphique sin(x)')

Documents Multimedia dans un notebook

Intégrer une image :

In [ ]:
from IPython.display import Image
Image("http://api.si.lycee.ecmorlaix.fr/APprentissagePythonJupyter/img/jupyter.png")
Ou simplement en Markdown tel que : ![Logo de jupyter](http://api.si.lycee.ecmorlaix.fr/APprentissagePythonJupyter/img/jupyter.png)

Intégrer une vidéo youtube :

In [ ]:
from IPython.display import YouTubeVideo
YouTubeVideo('Rc4JQWowG5I')

Intégrer une page web :

In [ ]:
from IPython.display import HTML
HTML('<IFrame src="https://fr.wikipedia.org/wiki/Jupyter" width=700 height=350>')

Pour terminer...

Mentionnons quelques autres fonctionnalités utiles :

  • En mode édition, bordures vertes, lorsque le curseur est en début de ligne ou lorsque vous avez sélectionné du texte, l'appui sur la touche <Tab> (respectivement <Shift-TAB>) indente (respectivement désindente) les lignes correspondantes.
  • La touche <ESC> passe en mode commande, les bordures sont alors bleues. Notez bien que dans ce mode, certaines touches du clavier sont associées à des actions sur le notebook. Tenter de saisir du texte dans ce mode peut donc produire des effets inattendus.
  • Le bouton [open the command palette] affiche une fenêtre qui liste l'ensemble des commandes.
  • Pour créer vos propres notebooks, utilisez le bouton [New Notebook] dans la première fenêtre "jupyter Dashboard", ou faites File>New depuis n'importe quelle fenêtre de notebook. N'oubliez ensuite pas de donner un nom de fichier à votre notebook en cliquant dans le champ "Untitled" au haut de la fenêtre du nouveau notebook
  • Pour effacer tous les outputs d'un notebook, vous pouvez faire Cell>All Output>Clear
  • Si jupyter Notebook semble bloqué, c'est surement qu'il tourne indéfiniment en raison par exemple d'une boucle mal contrôlée (consommant 100% de CPU d'1 core de votre machine). Vous deviez voir le message "Kernel busy" au haut de l'écran. Pour l'interrompre, cliquez sur le bouton (ou menu Kernel>Interrupt). Si ça ne fonctionne vraiment pas, il faudra se résoudre à tuer le serveur web avec <ctrl-C>
  • Sous Help>Keyboard Shortcuts vous trouverez la liste des nombreux raccourcis clavier améliorant grandement l'efficacité d'utilisation de jupyter Notebook !
  • Sous Help>Notebook Help vous accéderez à la documentation complète de jupiter Notebook.

Licence Creative Commons
Ce document adapté d'un travail de Jean-Daniel.Bonjour@epfl.ch est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International. Pour toute question : eric.madec@ecmorlaix.fr