Y aura-t-il du monde demain ?
Un loueur de vélos doit décider chaque matin combien de vélos sortir. Trop peu, et des clients repartent à pied. Trop, et les vélos restent sous la pluie. Une année de relevés répond mieux qu'une intuition, à condition de savoir les lire.
À la fin de cette leçon
Remarque
Je peux utiliser pandas pour charger un tableau de données et le résumer.
Mots clés
- Jeu de données : un ensemble d'enregistrements sur un même sujet.
- Fichier CSV : un tableau enregistré en texte, une ligne par enregistrement, des virgules entre les valeurs.
- DataFrame : un tableau dans pandas, avec des colonnes nommées.
- Moyenne : la somme divisée par le nombre de valeurs.
- Notebook : une page de code, de résultats et de texte, exécutée une cellule à la fois.
- Modèle : une règle tirée des données qui prédit une valeur.
Pour commencer : ce que tu sais déjà
Remarque
Réponds dans ta tête. 1. Que contient une ligne d'un tableau ? 2. Comment calcules-tu la moyenne de 2, 4 et 6 ? 3. À quoi sert print en Python ? Tu vas te servir des trois dans cette leçon. Réponses : un enregistrement ; on les additionne et on divise par 3, ce qui donne 4 ; elle affiche une valeur à l'écran.
Avant de commencer
Remarque
Appuie sur Démarrer le lab dans la barre en haut de la leçon et attends qu'il indique qu'il est en marche. Il y a un seul conteneur, jupyter, et le terminal atteint son Python avec docker exec jupyter, qui lance une commande à l'intérieur. Le lien JupyterLab ouvre sa page web, sur le port 8888. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l'une après l'autre, dans la même session. Pour suivre les commandes ou taper les tiennes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.
Un projet de données, c'est un dossier de données et de code
ls liste le dossier de travail : les données hires.csv (les locations), le notebook start.ipynb et le dossier steps. cat affiche le premier script. Il tient en quatre lignes de Python : importer pandas, lire le fichier, puis afficher sa taille et ses premières lignes.
docker exec jupyter lsAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
docker exec jupyter cat steps/load.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
pandas lit un fichier CSV dans un DataFrame
pd.read_csv lit tout le fichier dans un DataFrame nommé hires. La réponse commence par (365, 7) : 365 lignes, une par jour, et 7 colonnes. Viennent ensuite les cinq premières lignes. La première est le 1er janvier 2025, un mercredi nuageux à 0,9 degré, avec 137 vélos loués.
docker exec jupyter python3 steps/load.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un résumé décrit toute une colonne
describe résume une colonne en huit nombres. La colonne hires a une moyenne de 270,3 vélos par jour, un jour le plus calme à 41 et un jour le plus chargé à 487. Le deuxième script utilise groupby pour répartir les lignes selon la météo et calculer la moyenne de chaque groupe : sunny (ensoleillé) 312,2, cloudy (nuageux) 267,0 et rainy (pluvieux) 227,6.
docker exec jupyter python3 steps/summary.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
docker exec jupyter python3 steps/weather.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Vérifie
Astuce
Selon quelle colonne groupby a-t-il réparti les lignes, et quelle météo a eu le plus de locations ? Réponse : la colonne weather, et les jours ensoleillés, avec une moyenne de 312,2.
Un graphique montre ce qu'un tableau cache
Matplotlib dessine des graphiques. Ce script place un point par jour, la température en abscisse et les vélos loués en ordonnée, puis l'enregistre sous hires.png. Ouvre-le depuis la liste des fichiers dans JupyterLab : les points montent de gauche à droite, donc les jours plus chauds sont plus chargés.
docker exec jupyter python3 steps/picture.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un modèle transforme la tendance en règle
scikit-learn ajuste une régression linéaire : une règle en ligne droite qui relie la température et la pluie aux locations. La réponse dit qu'un degré de plus vaut environ 11,2 locations, et qu'un millimètre de pluie de plus en coûte environ 8,2. Le R² vaut 0,776 : la règle explique environ les trois quarts des variations d'un jour à l'autre.
docker exec jupyter python3 steps/model.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent qu'un modèle qui colle bien aux données montre ce qui cause le changement. Il montre seulement que les valeurs varient ensemble dans ces données. Les jours chauds sont plus chargés, mais ils sont aussi plus secs, et en été ils tombent plus souvent un week-end. Dis « va avec », pas « cause », sauf si autre chose le prouve.
Le même travail dans un notebook
Ouvre JupyterLab depuis la barre et double-clique sur start.ipynb. Il fait ce que faisaient les cinq scripts, une cellule à la fois. Clique sur une cellule et appuie sur Maj et Entrée pour l'exécuter. La réponse s'affiche sous la cellule, et le graphique dans la page. La dernière cellule attend ta propre question.
Vérification finale
Astuce
Réponds sans revenir en arrière. 1. Quelle fonction de pandas lit un fichier CSV ? 2. Combien de lignes a hires.csv, et pourquoi ce nombre ? 3. Quelle méthode répartit les lignes en groupes ? 4. Un bon modèle prouve-t-il ce qui cause le changement ? Réponses : pd.read_csv ; 365, une pour chaque jour de 2025 ; groupby ; non, il montre que les valeurs varient ensemble.
Pour les enseignants
Astuce
Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Le lab est un seul service, JupyterLab avec pandas, NumPy, Matplotlib et scikit-learn, et rien ici ne se corrige tout seul : l'élève rend un notebook à lui sur hires.csv, téléchargé depuis JupyterLab, et une phrase sur ce qu'il a montré. Points clés : 1. pandas lit un fichier CSV dans un DataFrame. 2. describe et groupby résument une colonne. 3. Un graphique et un modèle montrent une tendance. Erreur fréquente : prendre un bon ajustement pour une cause. Matériel : le lab et un navigateur. Conseil : demandez aux élèves de deviner chaque nombre avant d'appuyer sur Exécuter. Les données sont inventées à partir d'une graine fixe, donc chaque copie donne les mêmes nombres. Copiez-la dans votre propre module et modifiez-la, ou créez-en une de zéro avec le menu Lab du créateur de leçons.