pandas : le SQL en mémoire
Tu écris déjà du pandas sans le savoir
Un DataFrame = une table. Chaque concept SQL a son jumeau :
| SQL | pandas |
|---|---|
SELECT col1, col2 | df[['col1', 'col2']] |
WHERE montant > 100 | df[df.montant > 100] |
GROUP BY client + SUM | df.groupby('client').montant.sum() |
JOIN | df.merge(autre, on='client_id') |
ORDER BY date DESC | df.sort_values('date', ascending=False) |
CASE WHEN | np.where(cond, a, b) |
En ML, pandas sert à préparer les features : nettoyer, joindre, agréger — 60 % du temps réel d'un projet.
Les pièges qui font mal en vrai
- Tout tient en RAM… jusqu'au jour où non. Un CSV de 2 Go peut occuper 10 Go en DataFrame (objets Python pour les strings). Parades :
dtype=explicites,categorypour les colonnes répétitives, lire en morceaux (chunksize), ou passer à polars (successeur multithread et paresseux, adopté massivement) ; - Les boucles sur les lignes :
df.iterrows()est l'anti-pattern absolu — tout ce que tu as appris sur la vectorisation s'applique ; SettingWithCopyWarning: modifier une vue filtrée sans effet sur l'original. Réflexe :.loc[cond, 'col'] = valeuren une seule expression.
L'équivalent pandas de GROUP BY client + SUM(montant) est…