Corrigé D3 — TP marathon
Les résultats d'un marathon : read_csv avec sep et names, recherches, sélections loc/iloc, agrégats, puis les durées avec to_timedelta et l'accesseur .dt.
D3rendu pour le
Le corrigé
Lire le corrigéNotebook corrigé (.ipynb)
Votre note et son commentaire sont sur votre page personnelle (lien reçu par mail).
Bilan de la classe
- Copies
- 17
- Moyenne
- 19.2
- Médiane
- 19.5
- Min – max
- 17 – 20
- Bonus rendus
- 17
- 16–181
- 18–2016
Ce qu'il faut retenir
- Extraits #2 et #3 : la forme attendue est df.loc[masque, 'year'] (ou df.loc[masque, ['year', 'seconds']]), en une seule opération. Plus de la moitié des copies ont écrit df[masque]['year'] : cela marche ici, mais c'est une indexation "enchaînée", qui posera souci dès qu'on voudra modifier la table.
- Le type de df.city.unique() n'est pas une Series : c'est un tableau (un ndarray jusqu'à pandas 2, un StringArray avec pandas 3). Plusieurs copies ont répondu « une series », d'autres n'ont pas répondu du tout.
- Une vérification doit afficher un seul True : (df.duration.dt.total_seconds() == df.seconds).all(), pas une colonne de 359 booléens ni un unique(). Et c'est bien total_seconds() qu'il faut, pas dt.seconds, qui ignore les jours.
- Pour hour, minute et second « à la main », le sujet demandait de travailler sur les durées (df.duration // one_hour, puis % one_hour) : repartir de la colonne seconds en entiers contourne l'exercice.
- Les cellules « pour vérifier » ne se modifient pas : trois copies en ont retiré une condition ou les ont réécrites. Décommentez-les telles quelles.
- Le dossier data/ fait partie du rendu : sans lui, le notebook s'arrête dès la première lecture du fichier.
- Quatre copies seulement ont tenté la figure du bonus, alors qu'une ligne suffisait : df[df.city == 'PARIS'].plot(x='year', y='seconds', marker='o').
Le marathon du D3

Chaque copie est un coureur, avec un dossard tiré au hasard : le chrono court de la fin de la séance 3 jusqu'au dernier commit du dossier D3/ (la date qui fait foi).
