Partie 1 · Structures
De NumPy à pandas : ndarray, Series, DataFrame
NumPy (Numerical Python) est la bibliothèque de base du calcul numérique ; pandas est construit dessus. Son objet central est le ndarray : un tableau à N dimensions de données homogènes (un seul type).
| Atout du ndarray | Sens |
|---|---|
| Rapidité | Opérations implémentées en C |
| Mémoire | Stockage optimisé |
| Homogénéité | Un seul type, calculs optimisés |
| Vectorisation | Opération sur tout le tableau sans boucle explicite |
Création : np.array(), np.zeros(), np.ones(), np.arange(), np.random.rand(). Les opérations (+, *, > 5) s'appliquent élément par élément, et un masque booléen filtre.
Le TP le montre : mélanger 1, 2.5 et 'trois' dans un np.array donne un tableau de chaînes : tout est converti vers un type commun.
Vérifie que tu as compris
np.array([1, 2.5, 'trois']) ?Et en Python pur ?
Sans NumPy, la « vectorisation » s'écrit avec une compréhension de liste ; le masque booléen avec une condition :
a = [1, 2, 3] [x + 1 for x in a] # a + 1 -> [2, 3, 4] [x * y for x, y in zip(a, a)] # a * b -> [1, 4, 9] [x >= 2 for x in a] # masque a >= 2 -> [False, True, True] [x for x in a if x >= 2] # a[a >= 2] -> [2, 3]
À toi de coder
Series et DataFrame
- Une Series est un tableau 1D étiqueté : des valeurs (
.values, comme un ndarray) et un index (.index). Image utile : un dictionnaire ordonné. - Un DataFrame est une structure 2D tabulaire, équivalent d'une feuille Excel ou d'une table SQL : une collection de Series partageant le même index.
| index | nom | age | ville |
|---|---|---|---|
| 0 | Alice | 25 | Paris |
| 1 | Bob | 30 | Lyon |
| 2 | Chloé | 41 | Paris |
Chaque colonne est une Series ; toutes partagent le même index de lignes. (exemple ajouté)
| Attribut | Renvoie |
|---|---|
.shape | tuple (lignes, colonnes) |
.dtypes | le type de chaque colonne |
.index | étiquettes des lignes |
.columns | noms des colonnes |
Création : dictionnaire de listes (clé = nom de colonne), ou lecture d'un fichier (pd.read_csv()…).
Vérifie que tu as compris
.shape ?Vérifie que tu as compris
Traduction en Python pur
df = [ {"nom": "Alice", "age": 25, "ville": "Paris"}, {"nom": "Bob", "age": 30, "ville": "Lyon"}, ] len(df) # nombre de lignes (shape[0]) list(df[0]) # noms des colonnes (columns) [ligne["age"] for ligne in df] # une colonne (df["age"]) df[1] # une ligne for ligne in df: ligne["majeur"] = ligne["age"] >= 18 # nouvelle colonne
Une liste de dictionnaires joue le rôle du DataFrame : une ligne = un dict. C'est le format qu'on utilise dans tout ce site.
À toi de coder