summaryrefslogtreecommitdiff
path: root/PVCM/cama/fr/ma1 Jupyter.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'PVCM/cama/fr/ma1 Jupyter.ipynb')
-rw-r--r--PVCM/cama/fr/ma1 Jupyter.ipynb346
1 files changed, 346 insertions, 0 deletions
diff --git a/PVCM/cama/fr/ma1 Jupyter.ipynb b/PVCM/cama/fr/ma1 Jupyter.ipynb
new file mode 100644
index 0000000..41d16d1
--- /dev/null
+++ b/PVCM/cama/fr/ma1 Jupyter.ipynb
@@ -0,0 +1,346 @@
+{
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "# Utilisation de Jupyter\n",
+ "\n",
+ "#### Cellules\n",
+ "\n",
+ "Une feuille Jupyter est composée de cellules que vous pouvez deviner si vous cliquez sur le texte. Il existe différents\n",
+ "types de cellules que l'on choisit avec le menu déroulant au milieu des icônes en haut de la page :\n",
+ "\n",
+ "* du code Python (par défaut)\n",
+ "* du texte enrichi ([Markdown](https://en.wikipedia.org/wiki/Markdown))\n",
+ "* du texte brut (utile pour désactiver une cellule de code)\n",
+ "\n",
+ "Vous pouvez ajouter\n",
+ "une cellule avec le symbole + en haut de la page, supprimer une cellule avec les ciseaux, déplacer une cellule avec les flèches et l'éditer en double-cliquant dessus. On verra qu'on exécute les cellules pour obtenir le résultat du code écrit. Tout cela se retrouve dans le menu\n",
+ "`Cell`.\n",
+ "\n",
+ "#### Noyau (kernel)\n",
+ "\n",
+ "Jupyter tient son nom de 3 langages à savoir Julia, Python et R. Aujourd'hui la liste des langages que l'on peut\n",
+ "utiliser dans une feuille Jupyter est bien plus longue mais dans tous les cas il faut un noyau qui fasse l'interface\n",
+ "entre Jupyter et le langage. Dans le cas de Python le noyau est iPython. On le choisit à la création de la feuille\n",
+ "et on peut interagir dessus à l'aide du menu `Kernel`. \n",
+ "\n",
+ "Les autres menus sont plus classiques et ne demandent pas d'explication (oubliez `Widget`).\n",
+ "\n",
+ "#### Note\n",
+ "\n",
+ "Si vous ne connaissez pas Python ni Jupyter, il est conseillé de revenir ici après avoir lu le <a href=\"../lesson1 Python basics/\">premier chapitre</a>.\n",
+ "\n",
+ "## Manipulation des cellules\n",
+ "\n",
+ "#### Etat et exécution\n",
+ "\n",
+ "* Une cellule peut avoir 3 états :\n",
+ " * pas sélectionnée (pas de cadre autour de la cellule)\n",
+ " * sélectionnée (cadre bleu ou barre bleue à gauche)\n",
+ " * sélectionnée et en mode édition (changement de la couleur du fond et parfois cadre vert)\n",
+ "* Cliquer selectionne une cellule (voire la passe directement en mode édition pour les cellules de calcul)\n",
+ "* Double cliquer selectionne et passe en mode édition (sur une zone de texte, la syntaxe Markdown apparait)\n",
+ "* <kbd>Enter</kbd> comme cliquer permet de descendre dans les états quand <kbd>Esc</kbd> permet d'en remonter. \n",
+ "* Pour que Python recalcule le résultat d'une cellule\n",
+ " * <kbd>Shift</kbd>+<kbd>Enter</kbd> fait le calcul et passe à la cellule suivante\n",
+ " * <kbd>Crtl</kbd>+<kbd>Enter</kbd> fait le calcul et reste sur la cellule\n",
+ " * <kbd>Alt</kbd>+<kbd>Enter</kbd> fait le calcul et ajoute une cellule vide ensuite.\n",
+ "\n",
+ "#### Affichage \n",
+ " \n",
+ " * `[out]` Pour ne pas afficher de résultat, finir la dernière ligne de la cellule avec `;`.\n",
+ " * `[In]` Pour ne pas afficher une cellule, utiliser 'Hide input' de nbextessions (cf config dans le menu Edit).\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "print(2)\n",
+ "1+1; # remove the ; to see the difference"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "## Configuration\n",
+ "\n",
+ "Jupyter dispose de nombreuses commandes pour manipuler sa feuille de note et bien sûr il est possible de\n",
+ "définir des raccourcis clavier.\n",
+ "\n",
+ "Pour afficher la liste des commandes (la *palette de commandes*) cliquer sur le petit clavier dans la barre d'icones.\n",
+ "Avec Chrome, on peut afficher cette palette de commandes avec <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>.\n",
+ "\n",
+ "Pour afficher et définir ses raccourcis clavier vous pouvez passer le menu d'aide ou taper `shortcut` dans\n",
+ "la palette de commandes.\n",
+ "\n",
+ "Par exemple, pour mon usage j'ai redéfini le changement de type de cellule avec\n",
+ "\n",
+ "* <kbd>Crtl</kbd>+<kbd>1</kbd> pour le mode Code\n",
+ "* <kbd>Crtl</kbd>+<kbd>2</kbd> pour le mode Markdown\n",
+ "* <kbd>Crtl</kbd>+<kbd>3</kbd> pour le mode Raw (données non interprétées)\n",
+ "\n",
+ "Cela fonctionne lorsque la cellule est sélectionnée mais pas en mode édition (donc cadre bleu ou barre bleue)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "#### Exercice \n",
+ "\n",
+ "Choisir ses raccourcis pour passer d'un mode à un autre puis passer la cellule ci-dessous en mode Code et l'exécuter."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "print('$qsD!Me+nsodd= 1l lre3W$'[-2:2:-2])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "Les raccourcis de manipulation des cellules sont bons à connaitre ou à redéfinir lorsqu'on commence à utiliser Jupyter sérieusement."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "## IPython\n",
+ "\n",
+ "Lorsqu'on utilise Python dans Jupyter, on s'appuie sur [IPython](https://ipython.org/) qui enrichit Python.\n",
+ "\n",
+ "Cela donne les fonctionnalités suivantes :\n",
+ "\n",
+ "* Complétion en appuyant sur <kbd>Tab</kbd>\n",
+ "* Aide avec `?` et `??` pour encore plus d'aide pour les objets (voire le code)\n",
+ "* [Accès au shell](https://ipython.readthedocs.io/en/stable/interactive/shell.html) avec `!`\n",
+ "* Les commandes magiques"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "### Complétion et aide\n",
+ "\n",
+ "`a`<kbd>Tab</kbd> va donner une liste dont `abs`\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "Pour les exemples d'aide il faut lancer les cellules pour voir le résultat."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "abs?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "Pour fermer la fenêtre d'aide cliquer sur la croix en haut à droite de la fenêtre ou utiliser <kbd>Esc</kbd>.?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mot = \"Coucou\"\n",
+ "mot.split?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "### Shell sous IPython"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pwd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "vlib = '/var/lib/'\n",
+ "res = !ls $vlib\n",
+ "res = res.grep('lib')\n",
+ "for f in res:\n",
+ " print(f)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "print(type(res))\n",
+ "res??"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "### Commandes magiques\n",
+ "\n",
+ "Les commandes magiques améliorent l'usage de Python. Elles commencent par \n",
+ "\n",
+ " * `%` et s'appliquent à la ligne\n",
+ " * `%%` et s'appliquent à la cellule (lorsque cela a un sens)\n",
+ "\n",
+ "La première commande magique à lancer est `%quickref` pour avoir la liste des possibilités d'iPython."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%quickref"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "lang": "fr"
+ },
+ "source": [
+ "Voici une selection de quelques commandes magiques :\n",
+ " \n",
+ "* `%time` pour avoir le temps que prends la ligne (`%%time` pour le temps d'exécution de la cellule).\n",
+ "* `%timeit` est comme `%time` mais il relance plusieur fois la ligne pour avoir une estimation plus juste \n",
+ "* `%prun` pour lancer la ligne à travers le profiler de Python et voir où ca prend du temps\n",
+ "\n",
+ "* `%matplotlib inline` pour que les graphiques s'affichent dans la page Jupyter\n",
+ "* `%load` pour charger un ficher Pyhton dans la cellule (met %load en commentaire un fois exécuté)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!echo 'print(\"coucou\")' > /tmp/prog.py"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%load /tmp/prog.py"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import scipy.linalg as lin\n",
+ "\n",
+ "%prun lin.solve(np.random.random([3000,3000]), np.random.random(3000))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "{{ PreviousNext('Introduction.ipynb','../lesson1 Python basics/00 - Premiers calculs.ipynb') }}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ]
+} \ No newline at end of file