Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Ce lab donne à chaque élève un JupyterLab à lui, avec les bibliothèques Python de science des données déjà installées : pandas pour les tableaux, NumPy pour les nombres, Matplotlib pour les graphiques et scikit-learn pour les modèles. Le dossier de travail contient une année de locations de vélos inventées, une ligne par jour avec la météo, et un notebook de départ qui les charge, les résume, les représente et les modélise.

Ce n’est pas un lab d’attaque. Chaque copie n’a aucun accès à internet ni à aucun autre élève : rien ne peut y être téléchargé et rien n’y peut atteindre quelqu’un d’autre.

Ce que les élèves apprennent

Comment un fichier CSV devient un DataFrame avec pandas, et comment describe et groupby résument une colonne et comparent des groupes : les jours ensoleillés ont le plus de locations, les jours de pluie le moins. Puis un nuage de points avec Matplotlib, qui montre que les jours plus chauds sont plus chargés, et une première régression linéaire avec scikit-learn, qui transforme cette tendance en règle, avec le R² pour dire quelle part des variations elle explique. En chemin, ils travaillent dans un notebook, une cellule à la fois, comme le font les data scientists. Il convient aux introductions à la science des données, aux statistiques avec du code et à l’apprentissage automatique ; vérifiez la formulation exacte dans l’unité de votre propre organisme certificateur, aucune n’est citée ici.

Le lancer dans votre navigateur

Le lab démarre un seul service, jupyter, qui écrit les données, le notebook et les petits scripts dans son dossier de travail, et il est prêt en quelques secondes. Il utilise environ 75 Mo au repos et environ 235 Mo quand un notebook tourne, sur les 512 Mo qu’un service peut avoir. JupyterLab ne demande aucun jeton, car la porte de la plateforme sait déjà qui l’ouvre. Le terminal à côté du lab n’a pas de Python à lui : il atteint celui du lab avec docker exec jupyter, suivi de la commande à lancer à l’intérieur.

  1. Ouvrir la page Conteneur. Ouvrez « Créer » dans la barre et choisissez « Lancer un conteneur ». Tout le monde peut ouvrir la page, et le lab Git et le lab SQL se lancent sans compte. Tous les autres labs demandent un compte gratuit : créez-en un, connectez-vous, puis appuyez sur « Démarrer ».
  2. Trouver le lab. La carte « Laboratoires d’exemple » liste tous les exemples. Trouvez JupyterLab : science des données avec pandas.
  3. Appuyer sur Démarrer. « Démarrer » le lance tel quel, en un clic. « Modifier le fichier d’abord » ouvre le fichier compose pour que vous puissiez le changer avant de démarrer.
  4. L’ouvrir. Sur la page du lab, la barre du lab a un lien nommé JupyterLab : appuyez dessus pour ouvrir JupyterLab dans votre navigateur, puis double-cliquez sur start.ipynb. Appuyez ensuite sur « Ouvrir le terminal » et tapez docker exec jupyter python3 steps/load.py pour voir la taille des données, 365 lignes et 7 colonnes, et leurs cinq premières lignes.

Que demander aux élèves de rendre

Un notebook à eux sur hires.csv qui répond à une question qu’ils ont choisie, par exemple quelle météo est la plus chargée le week-end, quel mois est le plus calme, ou si un modèle fait mieux quand il connaît le jour de la semaine, téléchargé depuis JupyterLab avec File, Download. Puis une ou deux phrases, de leurs propres mots, sur ce que les données ont montré et sur ce qu’elles ne prouvent pas. Rien n’est noté automatiquement : la phrase montre si c’était compris. Pour un travail plus poussé, demandez un graphique qui appuie la réponse et un modèle comparé à un modèle plus simple.

Une leçon de base sur ce lab

JupyterLab Basics est une petite leçon qui se fait dans ce lab. L’élève y liste le dossier de travail, charge les données avec pandas, résume les locations et les compare selon la météo, enregistre un graphique, ajuste une régression linéaire, puis retrouve le même travail dans le notebook de départ.

Un compte personnel gratuit la reçoit dans le module Basics, qui se trouve sur « Accueil », chaque établissement peut la copier depuis le dossier Basics de la Bibliothèque, et un nouvel établissement l’a dans un module appelé Data Labs (Sample). Elle est volontairement petite : elle montre à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-la dans un module à vous pour la modifier.

Le code sur GitHub

Le fichier compose n’a pas de Dockerfile : il lance une seule image publique, scipy-notebook des Jupyter Docker Stacks, figée sur une étiquette datée, avec son propre compte sans privilèges et 512 Mo de mémoire. L’image est sous licence BSD-3-Clause et n’est pas distribuée par nous. Le fichier écrit les données à partir d’une graine fixe au démarrage : chaque copie a les mêmes nombres et rien n’est téléchargé. Les limites sont honnêtes : les données sont inventées et petites, il n’y a pas de GPU, rien ne peut être installé depuis internet, et un modèle qui demande beaucoup plus de mémoire que la copie n’en a échouera. Rien n’est conservé quand le lab s’arrête : l’élève télécharge son notebook avant.

En faire un travail

Indiquez dans la tâche ce qu’il faut rendre.

  1. Créer le lab. Dans votre module, ajoutez une tâche et choisissez la carte « Lab de conteneurs », puis « Dans un dépôt GitHub ». Indiquez https://github.com/mitsurutech/lab-jupyter-data avec la branche main. Le fichier compose par défaut est compose.yaml. Faites d’abord un fork du dépôt si vous voulez le modifier, par exemple pour utiliser votre propre fichier CSV.
  2. Publier et l’essayer. « Publier » fige le commit qui vous a été montré : un changement ultérieur dans le dépôt ne modifie donc pas un lab que vous avez déjà proposé. Démarrez d’abord votre propre copie.
  3. Le distribuer. Attribuez-le comme n’importe quelle tâche, avec une échéance si vous le souhaitez, et indiquez dans la tâche ce qu’il faut faire et ce qu’il faut rendre.
  4. Noter ce qui est rendu. Ouvrez la copie d’un élève et le travail rendu, notez-le et renvoyez-le avec un motif s’il demande un complément.

Questions fréquentes

Pourquoi n’y a-t-il ni jeton ni mot de passe à taper ?
La page web d’un lab ne s’atteint que par la porte de la plateforme, qui sait déjà qui vous êtes et ne laisse entrer que vous et les enseignants de votre module. JupyterLab démarre donc sans jeton. Ne le lancez pas ainsi sur une machine que d’autres peuvent atteindre.
Pourquoi le terminal utilise-t-il docker exec jupyter ?
Le terminal du lab contient curl, psql et quelques autres clients, mais pas Python. docker exec jupyter lance une commande dans le conteneur du lab, qui a Python et toutes les bibliothèques. JupyterLab a aussi son propre terminal, sous File, New, Terminal.
Les élèves peuvent-ils installer d’autres paquets ou utiliser leurs propres données ?
Pas depuis internet, qu’une copie ne peut pas atteindre : les bibliothèques sont celles de l’image. Pour d’autres données, faites un fork du dépôt, changez les lignes qu’écrit le fichier compose, et proposez le fork comme lab.