Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

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 ndarraySens
RapiditéOpérations implémentées en C
MémoireStockage optimisé
HomogénéitéUn seul type, calculs optimisés
VectorisationOpé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

Que se passe-t-il avec 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

Un masque booléen en Python pur

Avec NumPy, a[a >= 2] filtre sans boucle. En Python pur, on construit d'abord le masque (une liste de booléens de même longueur), puis on garde les éléments où il vaut True. Séparer les deux étapes aide à comprendre ce que fait pandas en coulisses. Complète masque et gardes.

Ctrl/⌘+Entrée

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.
indexnomageville
0Alice25Paris
1Bob30Lyon
2Chloé41Paris

Chaque colonne est une Series ; toutes partagent le même index de lignes. (exemple ajouté)

AttributRenvoie
.shapetuple (lignes, colonnes)
.dtypesle type de chaque colonne
.indexétiquettes des lignes
.columnsnoms 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

Un DataFrame de 3 lignes et 4 colonnes : que renvoie .shape ?

Vérifie que tu as compris

Quel lien existe entre Series et DataFrame ?

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

Colonne, forme et nouvelle colonne

Un DataFrame se représente ici par une liste de dictionnaires. Extraire une colonne, c'est parcourir les lignes ; ajouter une colonne, c'est ajouter une clé à chaque dict. Complète ages (la colonne age), nb_lignes et nb_colonnes (nombre de clés de la première ligne, avant l'ajout de la nouvelle colonne), puis crée la colonne adulte.

Ctrl/⌘+Entrée