viewof classification_game = ui.cablingExercise({
title: "PANNEAU DE BRASSAGE DES INDICES",
instructions: "Reliez chaque piÚce à conviction de gauche à sa catégorie de données logique de droite en cliquant d'abord sur la fiche de gauche puis sur la prise femelle de droite.",
leftItems: [
{ id: "postal", label: "Le code postal du suspect (ex: 75001)", match: "nominale" },
{ id: "salaire", label: "Le salaire annuel en euros (ex: 45200.50)", match: "continue" },
{ id: "mention", label: "La mention au bac (Passable, Bien, TrĂšs Bien)", match: "ordinale" },
{ id: "fraud", label: "Le nombre de transactions frauduleuses", match: "discrete" }
],
rightItems: [
{ id: "nominale", label: "Nominale" },
{ id: "ordinale", label: "Ordinale" },
{ id: "discrete", label: "DiscrĂšte" },
{ id: "continue", label: "Continue" }
],
feedbacks: {
postal: "Le code postal est bien nominal. MĂȘme s'il s'agit de chiffres, leur somme, leur moyenne ou leur comparaison n'a aucun sens mathĂ©matique.",
salaire: "Le salaire est quantitatif continu. Il s'exprime sur une échelle infinie de valeurs décimales mesurables.",
mention: "La mention au bac est qualitative ordinale. Ce sont des catégories textuelles, mais dotées d'une hiérarchie stricte indiscutable.",
fraud: "Le nombre de transactions est quantitatif discret. On dénombre des unités entiÚres distinctes (pas de demi-transaction)."
},
successMessage: "Excellent ! Tous les signaux sont parfaitement synchronisés. Votre diagnostic d'expert des données est validé !",
errorMessage: "Alerte : Des courts-circuits subsistent dans votre brassage de signal. Relisez attentivement la nature de chaque indice."
})1 đ„ Acquisition et ComprĂ©hension des DonnĂ©es
1.1 đïž Types de DonnĂ©es
đĄ Concept ClĂ© : La Taxonomie des DonnĂ©es
Avant dâĂ©crire la moindre ligne de code, lâenquĂȘteur doit classifier ses piĂšces Ă conviction. Cette taxonomie dicte les futures dĂ©cisions dâencodage et la structure mĂȘme de votre futur modĂšle prĂ©dictif (Chugh 2025).
Lâunivers des donnĂ©es se divise en deux grandes familles imposant des contraintes techniques distinctes.
1.1.1 âïž Les Deux Grandes Familles
Données Qualitatives
Catégorielles Représentent des étiquettes ou caractéristiques non mathématiques.
- Nominales : Sans hiérarchie (ex: Code pays, Couleur).
- Ordinales : Avec une logique de rang (ex: Niveau de satisfaction, Tailles S/M/L).
Données Quantitatives
Numériques Représentent des quantités mesurables supportant les opérations mathématiques.
- DiscrĂštes : Valeurs entiĂšres dĂ©nombrables (ex: Nb dâenfants).
- Continues : Valeurs décimales mesurables (ex: Température, Salaire).
1.1.2 â ïž Impact sur lâAlgorithme
Pourquoi passer du temps sur cette classification ? Parce quâelle modifie radicalement votre matrice en mĂ©moire :
- Le PiĂšge des DonnĂ©es Nominales : Une forte cardinalitĂ© (ex: Code Postal) peut faire exploser la RAM lors de lâencodage et risquer le Surapprentissage (Overfitting).
- La Perte du Rang : Traiter une donnĂ©e ordinale comme nominale dĂ©truit lâinformation de hiĂ©rarchie indispensable aux arbres de dĂ©cision.
đ Astuce Pro : Validation Continue
Utilisez des outils comme Pandera pour sanctuariser le typage dĂšs lâentrĂ©e du pipeline. Un enquĂȘteur ne travaille jamais sur des preuves dont le type est incertain.
đĄ Concept ClĂ© : CardinalitĂ©
Nombre de valeurs uniques dans une variable. Une cardinalitĂ© trop Ă©levĂ©e sur des donnĂ©es nominales est un signal dâalerte pour lâarchitecte de donnĂ©es.
đ”ïžââïž Atelier Pratique : Qualifiez vos preuves
Une bombe statistique est sur la scÚne du crime. Saurez-vous classifier correctement ces variables avant de les intégrer à votre modÚle pour la désamorçer ?
đ Simulateur de Sanity Check : LâImpact dâun Outlier
Observez la distribution de lâĂąge de nos suspects. Ă lâĂ©tat brut, le graphique est illisible. Pourquoi ? Parce quâune erreur de saisie sâest glissĂ©e dans le fichier CSV. Activez le filtre pour nettoyer la donnĂ©e et rĂ©vĂ©ler la vĂ©ritable distribution.
1.2 đ§± Anatomie du DataFrame
đĄ Concept ClĂ© : Au-delĂ du tableau Excel
Un DataFrame nâest pas quâun simple tableau visuel. Pour le raffineur de donnĂ©es, câest un agencement complexe en mĂ©moire vive (RAM) dont la structure physique dicte la vitesse de vos calculs. Passer dâun code âqui marcheâ Ă un code industriel demande de comprendre comment ces donnĂ©es sont stockĂ©es.
1.2.1 đïž LâAnatomie du DataFrame
Un DataFrame moderne est composĂ© de trois briques fondamentales qui collaborent pour optimiser lâaccĂšs aux donnĂ©es (The pandas development team 2026) :
- LâIndex (La Colonne VertĂ©brale) : Structure de hachage optimisĂ©e. Il permet de passer dâune recherche lente (parcours complet) Ă une recherche instantanĂ©e en O(1).
- Les Séries (Series) : Chaque colonne est une
Series. En science des donnĂ©es, on considĂšre la colonne comme lâunitĂ© atomique de calcul. - Le Backend (Le Moteur) : GĂšre rĂ©ellement les octets en RAM. Historiquement NumPy, aujourdâhui Apache Arrow pour plus de performance.
1.2.2 ⥠La Révolution Columnar (Stockage Colonnaire)
La grande diffĂ©rence entre une base de donnĂ©es classique (SQL) et un DataFrame rĂ©side dans lâorganisation des donnĂ©es en mĂ©moire.
- Stockage par lignes (Transactionnel) : Idéal pour modifier un utilisateur précis.
- Stockage par colonnes (Analytique/IA) : IdĂ©al pour calculer la moyenne dâun million de prix.
đ Astuce Pro : Pourquoi le format colonnaire ?
En stockant les donnĂ©es dâune mĂȘme colonne cĂŽte Ă cĂŽte en mĂ©moire, le processeur peut utiliser des instructions SIMD (Single Instruction Multiple Data). Cela permet dâappliquer une opĂ©ration sur un vecteur entier en un seul cycle dâhorloge. Câest lâessence mĂȘme de la performance en Data Science (Bato 2026).
1.2.3 đïž Eager vs Lazy
- ExĂ©cution ImmĂ©diate (Eager - Pandas) : Chaque instruction est exĂ©cutĂ©e dĂšs quâelle est lue. Intuitif, mais gĂ©nĂšre souvent des copies inutiles en RAM.
- ExĂ©cution DiffĂ©rĂ©e (Lazy - Polars) : Le moteur construit un plan dâoptimisation (Query Plan) et ne calcule le rĂ©sultat quâau dernier moment, permettant dâignorer les donnĂ©es inutiles dĂšs la source.
đ§ Simulateur : La MĂ©moire RAM en action
Observez comment le processeur accĂšde aux donnĂ©es selon le type de stockage. Le format colonnaire est le secret de la rapiditĂ© des enquĂȘteurs modernes.
đĄ Concept ClĂ© : SIMD
CapacitĂ© dâun processeur Ă effectuer la mĂȘme opĂ©ration sur plusieurs donnĂ©es simultanĂ©ment. Essentiel pour le traitement massif de donnĂ©es.
â ïž Danger : Copie de DonnĂ©es
Ăvitez de multiplier les copies de DataFrames intermĂ©diaires. En mode âEagerâ, chaque copie consomme une portion prĂ©cieuse de votre RAM.
đĄ Concept ClĂ© : Ăvaluation Paresseuse (Lazy Evaluation)
Ăvaluation Paresseuse (Lazy Evaluation) : StratĂ©gie consistant Ă attendre le dernier moment pour calculer un rĂ©sultat, permettant dâoptimiser lâensemble des Ă©tapes de calcul.
1.3 đ„ Ingestion des DonnĂ©es
đĄ Concept ClĂ© : LâOptimisation Ă la Source
Lâoptimisation dâun projet IA commence Ă lâoctet prĂšs lors de la lecture du disque. Charger lâintĂ©gralitĂ© dâun Ă©norme fichier CSV avec les paramĂštres par dĂ©faut est une erreur dâamateur qui peut saturer la mĂ©moire vive (RAM) instantanĂ©ment.
1.3.1 đ Structure des Dossiers
Avant dâingĂ©rer, un bon enquĂȘteur organise ses dossiers. Voici la structure attendue pour vos projets :
1.3.2 đ„ Ingestion Multi-Format
Le Standard Industriel : Apache Parquet
Pour lâIA moderne, le format Apache Parquet est le roi. OrientĂ© colonne et fortement compressĂ©, il prĂ©serve le typage des donnĂ©es et rĂ©duit drastiquement lâempreinte disque.
import pandas as pd
# â
L'approche industrielle (Optimisation Ă la lecture)
colonnes_utiles = ['ID', 'Age', 'Score_Credit']
types_optimises = {'ID': 'int32', 'Age': 'int8', 'Score_Credit': 'float32'}
df = pd.read_csv(
"data/raw/clients.csv",
usecols=colonnes_utiles, # Sélection sélective
dtype=types_optimises # Downcasting préventif
)import polars as pl
# đ Lecture Lazy (Planification sans exĂ©cution)
q = (
pl.scan_csv("data/raw/clients.csv")
.filter(pl.col("Age") > 18) # Filtre appliqué à la source
.select(["ID", "Age"])
)
# .collect() déclenche le calcul multi-threadé
df = q.collect()â ïž Danger : Surcharge de RAM
Si votre fichier dépasse votre capacité RAM, utilisez le Chunking (chunksize en Pandas) ou passez en mode Streaming avec Polars. Ne laissez jamais un fichier saturer votre établi.
1.3.3 đ Le Sanity Check
Une donnĂ©e ingĂ©rĂ©e nâest pas une donnĂ©e fiable. ImplĂ©mentez un protocole systĂ©matique pour dĂ©tecter les anomalies :
- Audit de Mémoire : Utilisez
df.info(memory_usage='deep')pour voir la consommation réelle (incluant les textes). - Typologie du Vide : Identifiez les
NaN(flottants),None(objets) etNaT(dates). - Distribution Statistique : Utilisez
.describe()pour repérer immédiatement les valeurs aberrantes (ex: un ùge négatif).
đ Astuce Pro : Le Sanity Check
Automatisez ces vĂ©rifications avec des bibliothĂšques comme Great Expectations. Une preuve dont la structure change en cours de route peut invalider toute votre enquĂȘte.
1.4 đ Conclusion et Transition
Maintenant que nous savons comment acquérir des données et les structurer dans des DataFrames, nous allons voir comment les nettoyer pour les rendre exploitables.
Câest lâobjectif du Chapitre 2 : Data Wrangling (Nettoyage et PrĂ©paration).
Bato. 2026. âPandas 3.0âs PyArrow String Revolution: A Deep Dive into Memory and Performance.â DEV Community. February 2026.
Chugh, Vidhi. 2025. âTutoriel Python Pandas : Le Guide Ultime Pour Les DĂ©butants.â DataCamp. February 2025.
The pandas development team. 2026. Pandas 3.0.3 Documentation. PyData. https://pandas.pydata.org/docs/.