PE – Python numérique – S4

pandas 2 – trier, regrouper, croiser, combiner

S4 · mardi 6 octobre 2026

Aurélien Noce – UE12 Python numérique

mardi 6 octobre 2026
PE – Python numérique – S4

Au programme aujourd'hui 🎯

Quiz 3 (10 min, papier) sur la séance 3 et le devoir D3.

Notebooks, dans l'ordre, sur https://numerique.info-mines.paris :

  • 2-05 trier : sort_values, sort_index (10 min, allez vite)
  • 2-07 regrouper : groupby, agg, pd.cut, pivot_table (le gros morceau)
  • 2-08 créer une DataFrame à la main
  • 2-09 combiner : concat et merge, y compris la section « stratégies pour merge »

TP : exercice Titanic (groupby / pivot_table) puis TP « collages »

Devoir : D4 « l'énergie par région », pour le dimanche 11 octobre, 23 h 59

mardi 6 octobre 2026
PE – Python numérique – S4

L'idée de la séance 💡

Jusqu'ici, nous regardions une table ligne par ligne ; aujourd'hui, nous la regardons par paquets.

df.groupby("Sex")["Age"].mean()           # une question « par groupe » = un groupby
df.pivot_table(index="Pclass", columns="Sex", values="Survived")   # deux dimensions = un tableau croisé
pd.concat([d1, d2])                        # empiler des tables de même forme
d1.merge(d2, on="nom", how="left")         # joindre deux tables par une clé

En clair : groupby découpe, applique, recolle ; pivot_table est un groupby à deux clés remis à plat ; concat ajoute des lignes, merge ajoute des colonnes.

Je reprends la main trois fois : après le premier groupby, sur size contre count, et au tableau pour dessiner inner / left / outer.

mardi 6 octobre 2026
PE – Python numérique – S4

Les 3 pièges du jour ⚠️

  1. Après groupby, la clé est dans l'index. g["Sex"] → KeyError.
    as_index=False ou reset_index() si vous la voulez en colonne.

  2. concat empile, merge aligne. Si vous écrivez pd.concat(..., axis=1)
    pour rapprocher deux tables par une clé, c'est un merge qu'il vous faut.

  3. merge est inner par défaut : les lignes sans correspondance disparaissent
    sans un mot. Comparez les shape avant et après.

Bonus : sort_values garde l'index ; pd.cut ferme ses intervalles à droite.

mardi 6 octobre 2026
PE – Python numérique – S4

TP du jour

1. Titanic, groupby / pivot_table (exercices en fin de 2-07) :
taux de survie par classe × sexe, par tranche d'âge, effectifs croisés ; la même table par
groupby + unstack et par pivot_table, et vérifier qu'elles sont égales.

2. TP « collages » (collages1/2/3.csv, sur https://numerique-exos.info-mines.paris) :
trois fichiers partiels à empiler puis à joindre, avec des clés qui ne
correspondent pas toutes ; choisir how= en connaissance de cause.

À rendre : rien, mais le TP collages est le brouillon de D4.

Pour les rapides : exercices « groupby » et « merge » sur numerique-exos · catalogue tp-optionnels/.

Pour les très rapides 💰 : quatrième niveau secret, le sujet bonus B4 – La guerre des consoles.
Sur sa page ou celle des devoirs, tapez MOTHERLODE, le code des Sims.

mardi 6 octobre 2026
PE – Python numérique – S4

Devoir pour la prochaine séance

D4 — L'énergie par région

Pour le dimanche 11 octobre, 23 h 59.

Une table région ; filière ; production (GWh), plus une table de population par région.

  • un tableau croisé région × filière (pivot_table, aggfunc="sum", fill_value=0) ;
  • le graphique en barres empilées correspondant (.plot.bar(stacked=True)) ;
  • un merge avec la population pour calculer une production par habitant, puis trier ;
  • deux ou trois phrases de lecture : quelle région, quelle filière, pourquoi.

Ce qu'on rend : le notebook exécuté, figures titrées et légendées.

Ce qui est noté : pivot_table et merge employés à bon escient (how= justifié),
pas de calcul « à la main » qu'un groupby ferait, lisibilité des figures.

mardi 6 octobre 2026