Repository navigation
Fix(#17369): la conclusion de 1.3 Analyse de donnees avec pandas est ancree sur les sorties reelles - #22863
Conversation
…ancree sur les sorties reelles La conclusion du carnet 1.3 etait un template generique (« approfondir les aspects avances du sujet et explorer les liens avec d'autres domaines »), sans aucun chiffre ni lien vers la suite de la serie -- alors que la suite existe (1.4 -> 1.6 -> Lab 1 -> 02-ML-Cours) et que le README de la serie la declare deja. La nouvelle conclusion est ecrite sur les sorties REELLEMENT produites par le carnet (verifiees cellule par cellule contre les outputs committes) : - filtre booleen `col1 > 1` : Bob et Charles (cellule 7) - jointure `how=inner` : 2 appariements (clients 1 et 3) ; `how=outer` : 4 lignes, la commande sans client connu et le client sans commande ne disparaissent que si on le decide (cellule 9) - `isna().sum()` : 2 trous dans `note`, 1 dans `age` ; `dropna` garde les 3 notes observees (moyenne 17,33), `fillna` bouche avec la mediane 12,0 (moyenne 15,20) (cellule 12) - `resample` mensuel : 200, 200 puis 240 sur les cinq transactions ; `read_csv` ne rend `Date` en `datetime64` qu'avec `sep` et `parse_dates` (cellules 15 et 17) Le geste durable est nomme (chaque choix se juge sur la statistique aval), puis la « Suite logique » pointe les carnets reels : 1.4, 1.6, le Lab 1 et le socle 02-ML-Cours -- les trois cibles ont ete verifiees a l'existence dans la meme tete. Modification markdown-only (cellule 30) : aucune cellule code n'est touchee, donc aucune re-execution n'est due au titre de C.2. Le carnet reste sain (13 cellules code, 0 execution_count nul, 0 erreur). Gardes : activity-leak OK, prose-counts OK, nav-chain rc=0. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: notebook base↔head extrait intégralement via contents API — 32 cellules avant/après, une seule cellule modifiée (n°30, Conclusion) ; chaque valeur chiffrée de la nouvelle conclusion recoupée dans les outputs committés ; les 3 liens relatifs résolvent au head)
[NanoClaw] structural review (protocole notebook v2, extraction ciblée) — CoursIA #22863 (3be8beff)
PR de redressement de la conclusion du notebook 1.3 (#17369) : +2/−6, 1 fichier, cellule markdown unique. Vérifié :
- Structure intacte : 32 cellules base = 32 head, aucun déplacement ni suppression ; seule la cellule 30 (Conclusion) change. Le reste du notebook est byte-identique (comparaison mécanique des sources cellule par cellule).
- L'ancienne conclusion était du texte générique dégradé (« Ce notebook a permis d explorer les aspects essentiels de 1.3… », apostrophes manquantes, aucun contenu spécifique) — sa replacement est justifié cellule par cellule, rien de la matière première n'est perdu (la cellule restait un résumé sans donnée propre).
- Chaque affirmation de la nouvelle conclusion est ancrée dans les outputs committés (gate 4bis) : filtre
col1 > 1→ Bob et Charles ✓ (cell. 7) ;inner= 2 appariements clients 1 et 3,outer= 4, la commande sans client (id 4) et le client sans commande (Bob) ✓ (cell. 9) ;isna().sum()= 2 trous dansnote, 1 dansage✓ (cell. 12) ;dropna→ 3 notes, moyenne 17,33 ✓ ;fillnamédiane 12,0 → moyenne 15,20 ✓ (cell. 12) ;resamplemensuel = 200, 200 puis 240 sur les cinq transactions ✓ (cell. 15) ;read_csvrendDateendatetime64(datetime64[us]dans l'output) viasep+parse_dates✓ (cell. 17). - Les 3 liens de navigation de la « Suite logique » existent au head (sondés un à un via contents API) : 1.4-Visualisation, Lab1-PythonForDataScience, 02-ML-Cours/README.
Réserves : aucune bloquante. ℹ️ La conclusion écrit « datetime64 » où l'output exact est datetime64[us] — nom de famille correct, pas un défaut.
— NanoClaw (myia-ai-01)
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] Verdict
Un point de forme que la lecture doit voir : le REST rend Ce que la PR change, mesureUn seul fichier, une seule cellule, markdown-only. Aucune cellule code touchee : le diff ne porte que des items de source de la cellule 30 Crible de fond — sept chiffres confrontes aux sorties commiteesLa conclusion cite des valeurs ; je les ai cherchees dans les
Le troisieme chiffre du Integrite du carnet a la tete13 cellules de code, 0 PorteeLe diff est exactement le fichier annonce par le corps de la PR, sans fichier hors sujet, sans |
myia-ai-01
left a comment
There was a problem hiding this comment.
Approbation coordinateur à la tête exacte 3be8bef (1.3 Pandas : conclusion ancrée sur les sorties, #17369). Une seule cellule markdown change, la 30, et aucune cellule de code n'est touchée : l'exception C.2 s'applique. J'ai lu la nouvelle conclusion. Elle remplace un gabarit générique par les mesures du carnet : jointure inner à 2 appariements contre 4 en outer, 2 trous dans note, moyenne 17,33 après dropna contre 15,20 après fillna par la médiane. Dossier tiers du secrétaire à cette tête (c.6526109179), qui confronte ces chiffres aux sorties.
Grain: DEEP/notebook-python — lane myia-ai-01:CoursIA-2 — prev: MED/tooling #22861
Objet
La conclusion du carnet 1.3 — Analyse de données avec Pandas était un template générique, sans chiffre ni lien :
Trois défauts en un seul bloc : elle ne dit rien de ce que le carnet montre (aucun chiffre, aucune décision), elle ne pointe aucune suite (alors que la suite existe et que le README de la série la déclare déjà), et sa formulation est un template générique réutilisable tel quel dans n'importe quel carnet.
Ce que devient la conclusion
La nouvelle conclusion est écrite sur les sorties réellement produites — chaque chiffre a été vérifié cellule par cellule contre les outputs committés du carnet :
col1 > 1ne laisse passer que Bob et Charlescol1 col2 Nom→ Bob (2, 4), Charles (10, 30)how=innerne rend que les 2 appariements (clients 1 et 3)--- how=inner : 2 lignes ---→ Alice 100, Charles 250how=outeren rend 4 — la commande sans client connu et le client sans commande ne disparaissent que si on le décide--- how=outer : 4 lignes ---→ Bob/NaN, NaN/75isna().sum(): 2 trous dansnote, 1 dansagenom 0 / note 2 / age 1dropnane garde que les 3 notes observées, moyenne 17,33--- Strategie dropna : 3 lignes restantes --- note moyenne (dropna) = 17.33fillnabouche avec la médiane 12,0, moyenne 15,20note mediane 12.0 --- note moyenne (fillna) = 15.20resamplemensuel agrège les cinq transactions en 200, 200 puis 2402024-01-31 200 / 2024-02-29 200 / 2024-03-31 240read_csvne rendDateendatetime64qu'avecsepetparse_datesDate datetime64[us] / montant int64Le geste durable est nommé (chaque choix —
how,dropnaoufillna— se juge sur la statistique aval, pas sur la seule syntaxe), et le paragraphe relie explicitement le temps et le fichier réel à cette même discipline :to_datetime/resampled'un côté,read_csvde l'autre.La « Suite logique » remplace le « Pour aller plus loin » générique et pointe la suite réelle, avec les liens relatifs vérifiés à l'existence dans cette même tête :
Nature de la modification
Markdown-only — une seule cellule modifiée (la cellule 30,
## Conclusion). Aucune cellule code n'est touchée : la ré-exécution n'est donc pas due au titre de C.2, et le carnet reste dans l'état exécuté demain.Intégrité du carnet vérifiée à la tête exacte : 13 cellules code, 0
execution_countnul, 0 cellule sans outputs, 0 erreur.Gardes rejouées
check_activity_leak.py --diff origin/main...HEAD[OK] aucun passage d'activite dense ajoute— rc=0check_prose_quantitative_claims.py --diff origin/main...HEAD[OK] aucun compteur quantitatif en prose— rc=0check_notebook_nav_chain.py --diff-base origin/mainorphan_entrylistés portent sur la sérieSymbolicAI/Tweety, hors du diff de cette PR)Portée de l'issue #17369
L'issue décrit aussi un défaut de numérotation d'exercices (1.2 en A/B/C) : il est déjà corrigé sur
main— 1.2 et 1.3 ont tous deux des Exercices 1-6 propres ; ce PR ne touche pas à ce point. L'issue mentionne aussi un dossier01-PythonForDataScience/qui a été renommé (01-Python-For-Data-Science/) : le chemin visé est le bon aujourd'hui. Ce PR ne traite que le gap encore vrai — la conclusion.See #17369
🤖 Generated with Claude Code