1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
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": []
}
]
}
|