Aller au contenu principal

Leçon 2 — NumPy et pandas

Ces deux bibliothèques sont le socle. Tout le reste de l'écosystème est construit dessus : scikit-learn attend des tableaux NumPy, PyTorch convertit vers et depuis NumPy, et la quasi-totalité du travail préparatoire d'un projet réel se fait dans pandas. Elles résolvent deux problèmes différents et il est important de ne pas les confondre.

NumPy : le tableau homogène et rapide

Une liste Python peut contenir n'importe quoi : un entier, une chaîne, un autre objet. Cette souplesse a un prix. Chaque élément est un objet Python complet, avec son en-tête et son type, dispersé dans la mémoire. Additionner deux listes de un million de nombres demande un million d'aller-retours dans l'interpréteur.

Un tableau NumPy, à l'inverse, est un bloc de mémoire contigu contenant des nombres tous du même type. Cette contrainte est ce qui rend tout possible : le processeur peut charger plusieurs valeurs d'un coup, appliquer la même instruction à toutes, et écrire le résultat sans repasser par Python.

La vectorisation, en une idée

L'écriture naturelle pour un développeur venu d'un autre langage est la boucle : « pour chaque élément, fais ceci ». En NumPy, on écrit l'opération sur le tableau entier, et la bibliothèque s'occupe de la boucle en code compilé.

Boucle PythonOpération vectorisée
Ce que vous écrivez« pour chaque élément, multiplie par 2 »« multiplie le tableau par 2 »
Où tourne la boucledans l'interpréteur Pythondans du C compilé
Un million d'élémentsde l'ordre de la secondede l'ordre de la milliseconde
Lisibilitéverbeuseproche de la formule mathématique
L'erreur qui coûte le plus cher aux débutants

Écrire une boucle Python sur un tableau NumPy annule tout l'intérêt de NumPy, et le code est alors plus lent qu'avec une liste ordinaire, à cause du coût de conversion à chaque accès. Quand vous voyez « ne fais pas de boucle sur un tableau », c'est de cela qu'il s'agit. La règle pratique : si vous écrivez for sur des données numériques, cherchez d'abord la fonction NumPy qui fait la même chose.

Les notions à connaître

Trois mots reviennent partout et méritent d'être compris maintenant.

La forme (shape). Un tableau a des dimensions. Un vecteur de 100 nombres a la forme (100,). Une image en couleur de 224 par 224 pixels a la forme (224, 224, 3). Un lot de 32 de ces images a la forme (32, 224, 224, 3). La majorité des messages d'erreur en deep learning sont des désaccords de forme.

Le type (dtype). Tous les éléments partagent un type : entiers 32 bits, flottants 32 bits, flottants 64 bits. Le choix a un impact réel : passer de 64 à 32 bits divise la mémoire par deux, et sur un GPU c'est souvent aussi deux fois plus rapide, pour une perte de précision généralement sans conséquence en apprentissage.

La diffusion (broadcasting). NumPy sait combiner des tableaux de formes différentes selon des règles précises : ajouter un même nombre à tout un tableau, ou soustraire un vecteur de moyennes à chaque ligne d'une matrice. C'est élégant et c'est aussi une source d'erreurs silencieuses, car une opération qui « passe » sans erreur ne fait pas forcément ce que vous vouliez.

pandas : les vraies données ont des colonnes

NumPy est parfait pour des nombres homogènes. Les données d'entreprise ne le sont jamais. Un extrait de base clients contient un identifiant, un nom, une date d'inscription, un pays, un montant, une case cochée, et des trous partout.

pandas apporte le DataFrame : un tableau à colonnes nommées, chacune pouvant avoir son propre type, avec un index de lignes et une gestion explicite des valeurs manquantes. C'est un tableur, avec la puissance d'un langage derrière.

Ce que l'on y fait, et qui représente l'essentiel du temps d'un projet :

  • Charger un CSV, un Excel, une table SQL, un JSON, un Parquet.
  • Inspecter : combien de lignes, quels types, combien de valeurs manquantes par colonne, quelles valeurs aberrantes.
  • Nettoyer : corriger les types, uniformiser les libellés, décider quoi faire des trous.
  • Transformer : créer des colonnes dérivées, extraire le mois d'une date, calculer un ratio.
  • Regrouper : moyenne du panier par pays et par mois, comptage d'événements par client.
  • Joindre : croiser la table des commandes avec la table des clients.
La proportion que personne n'annonce

Dans un projet réel, la préparation des données occupe couramment 60 à 80 % du temps. Ce n'est pas un dysfonctionnement, c'est le métier. Le modèle, lui, tient souvent en cinq lignes. Une équipe qui pense que la difficulté est dans le choix de l'algorithme n'a pas encore livré de projet.

Comment les deux s'articulent

Le mouvement est toujours le même : pandas pour préparer, NumPy pour calculer, une bibliothèque de modèles pour apprendre. Un modèle ne consomme jamais des noms de pays ni des dates : il consomme des nombres. La conversion du monde lisible vers le monde numérique est ce que fait la préparation, et c'est là que se joue la qualité du résultat.

Les trois pièges les plus fréquents

Les valeurs manquantes traitées par réflexe. Supprimer les lignes incomplètes est tentant et souvent faux : si les valeurs manquent pour une raison — les clients mécontents ne répondent pas au questionnaire — les supprimer supprime le signal. Il faut comprendre pourquoi une valeur manque avant de décider quoi en faire.

Les fuites d'information. Calculer une moyenne sur l'ensemble des données puis découper en entraînement et test met de l'information du test dans l'entraînement. Le modèle paraîtra excellent et s'effondrera en production. Toute transformation apprise doit être calculée sur l'entraînement seul, puis appliquée au test.

Les types silencieux. Une colonne de montants chargée comme du texte parce qu'une ligne contient « N/A » ne provoque aucune erreur, et toutes vos statistiques deviennent absurdes. Inspecter les types après chaque chargement est une habitude qui économise des heures.


En trois phrases

NumPy fournit un tableau de nombres homogènes en mémoire contiguë, ce qui permet d'appliquer une opération à des millions de valeurs dans du code compilé au lieu d'une boucle Python. pandas ajoute par-dessus le DataFrame, tableau à colonnes nommées et typées qui correspond à la réalité désordonnée des données d'entreprise. La chaîne va toujours de pandas pour préparer vers NumPy pour calculer, et cette préparation représente l'essentiel du travail d'un projet.


SuiteLeçon 3 : notebooks et méthode de travail →