3  📊 Analyse Exploratoire des DonnĂ©es (EDA)

3.1 📊 Statistiques Descriptives

L’EDA n’est pas qu’un graphique

Dans l’écosystĂšme analytique de 2026, l’Analyse Exploratoire des DonnĂ©es (EDA) n’est plus une simple Ă©tape visuelle : c’est une discipline d’ingĂ©nierie rigoureuse. C’est la phase critique de validation de l’intĂ©gritĂ© structurelle de vos donnĂ©es avant de dĂ©ployer le moindre algorithme IA. La premiĂšre Ă©tape consiste Ă  prendre le “pouls” de vos variables grĂące aux statistiques descriptives.

L’analyse univariĂ©e (l’étude d’une seule variable Ă  la fois) constitue le premier rempart contre les donnĂ©es chaotiques.

3.1.1 🎯 Tendance Centrale

L’objectif est de trouver la valeur qui rĂ©sume le mieux l’ensemble des donnĂ©es. L’arbitrage classique se fait entre la moyenne et la mĂ©diane.

  • La Moyenne (Mean) : C’est la somme de toutes les valeurs divisĂ©e par leur nombre total. Si elle est mathĂ©matiquement Ă©lĂ©gante, elle est structurellement trĂšs vulnĂ©rable aux valeurs aberrantes (Outliers) en raison de sa dĂ©pendance Ă  chaque point de donnĂ©es.
  • La MĂ©diane (Median) : C’est la valeur centrale une fois les donnĂ©es triĂ©es (elle coupe le jeu en deux moitiĂ©s de 50%). Elle offre une robustesse statistique bien supĂ©rieure face aux valeurs extrĂȘmes.
    • Attention Architecturale : Le calcul de la mĂ©diane est beaucoup plus coĂ»teux en ressources CPU, car il nĂ©cessite d’effectuer une opĂ©ration de tri (Sort) sur des millions de lignes.
  • Le Mode : ReprĂ©sente la valeur la plus frĂ©quente, trĂšs utile pour les variables textuelles/catĂ©gorielles.

3.1.2 📏 Dispersion

Savoir oĂč est le centre ne suffit pas ; il faut savoir si les donnĂ©es sont trĂšs resserrĂ©es autour de ce centre ou au contraire trĂšs Ă©talĂ©es.

  • La Variance et l’Écart-type (Standard Deviation) : Ces mesures Ă©valuent la fluctuation des donnĂ©es autour de la moyenne (\mu). Un Ă©cart-type (\sigma) Ă©levĂ© indique une forte volatilitĂ© des donnĂ©es.
  • Quartiles et Percentiles : Ils divisent l’ensemble de donnĂ©es en sections de taille Ă©gale (les quartiles divisent en 4 blocs de 25%). Ils sont Ă  la base des graphiques “BoĂźtes Ă  moustaches” (Boxplots) pour dĂ©tecter visuellement les valeurs aberrantes.

3.1.3 ⚙ PrĂ©cision NumĂ©rique

En tant qu’ingĂ©nieur, vous devez savoir que les statistiques sur ordinateur sont soumises aux limites du matĂ©riel.

L’arithmĂ©tique en virgule flottante standard (IEEE 754) est notoirement non-associative : l’ordre des opĂ©rations modifie les dĂ©cimales du rĂ©sultat. Pour l’IA financiĂšre, on utilise dĂ©sormais des types spĂ©cifiques comme Decimal (Ă©chelle fixe Ă©vitant les dĂ©bordements) ou Int128. LĂ  oĂč le type classique Int64 est limitĂ© Ă  9 quintillions, le Int128 capture une plage 18 quintillions de fois plus large, Ă©vitant la saturation de la RAM lors de calculs d’agrĂ©gation massive.

3.1.4 đŸ—ș Moyenne vs MĂ©diane

Pour choisir la mesure de tendance centrale la plus adaptée, vous devez évaluer la sensibilité aux valeurs aberrantes (outliers) et la complexité de calcul induite.

Ce schéma résume la stratégie de choix et son impact sur les ressources matérielles :

flowchart LR
    A[Données avec Outliers ?] -->|Oui| B(Utiliser la Médiane)
    A -->|Non| C(Utiliser la Moyenne)
    
    B --> D{Coût en RAM/CPU}
    D -.->|ÉlevĂ©| E[NĂ©cessite un Tri complet]
    
    C --> F{Coût en RAM/CPU}
    F -.->|Faible| G[Opération SIMD directe]
    
    style A fill:#cb4b16,stroke:#073642,color:#fdf6e3
    style B fill:#859900,stroke:#073642,color:#fdf6e3
    style C fill:#859900,stroke:#073642,color:#fdf6e3

3.2 🔗 Relations et CorrĂ©lations

Le terrain de jeu des interprétations fallacieuses

L’analyse bivariĂ©e permet de dĂ©celer les structures cachĂ©es et les dĂ©pendances entre vos colonnes. Cependant, c’est aussi le domaine oĂč les Data Scientists dĂ©butants commettent le plus d’erreurs d’interprĂ©tation. Distinguer une simple co-occurrence statistique d’une vĂ©ritable relation causale est tout l’enjeu de cette Ă©tape.

Pour Ă©valuer la force des liens entre vos variables, la communautĂ© s’est longtemps reposĂ©e sur des matrices mathĂ©matiques classiques. Mais face Ă  la complexitĂ© des donnĂ©es modernes (non-linĂ©aires, catĂ©gorielles), de nouveaux outils sont apparus.

3.2.1 📉 LinĂ©aritĂ© et Rangs

  • CorrĂ©lation de Pearson : Le test statistique le plus cĂ©lĂšbre. Il Ă©value le degrĂ© de dĂ©pendance linĂ©aire exacte entre deux variables numĂ©riques continues.
    • Indicateur : Il renvoie un score entre -1 (corrĂ©lation nĂ©gative parfaite) et 1 (corrĂ©lation positive parfaite). Un score de 0 indique l’absence de corrĂ©lation linĂ©aire.
    • Le PiĂšge : Il suppose une relation proportionnelle constante. Si la relation dessine une courbe (ex: une parabole en forme de U), Pearson renverra 0, vous faisant croire Ă  tort qu’il n’y a aucun lien.
  • CorrĂ©lation de Spearman : Contrairement Ă  Pearson, Spearman s’appuie sur les rangs des valeurs plutĂŽt que sur les valeurs brutes.
    • L’Avantage : Il est capable de capturer des relations monotones non-linĂ©aires (si X augmente, Y augmente, peu importe la vitesse) et se montre totalement insensible aux valeurs extrĂȘmes qui pollueraient une matrice de Pearson.

3.2.2 🚀 Coefficients AvancĂ©s

L’échec des corrĂ©lations linĂ©aires a poussĂ© l’industrie Ă  adopter des mĂ©triques agnostiques, capables de gĂ©rer le mĂ©lange de textes et de nombres.

  • Predictive Power Score (PPS) : Score asymĂ©trique de 0 Ă  1. Au lieu de faire des mathĂ©matiques pures, il entraĂźne un mini-Arbre de DĂ©cision en arriĂšre-plan pour voir si la variable A permet de deviner la variable B.
    • Avantage : Il dĂ©tecte les relations non-linĂ©aires.
    • AsymĂ©trie : Le fait que “Code Postal” prĂ©dise le “Prix du loyer” ne signifie pas que le “Prix du loyer” permet de prĂ©dire exactement un “Code Postal”. Pearson, lui, est toujours symĂ©trique.
  • Coefficient Phik (\phi_k) : Coefficient de corrĂ©lation extrĂȘmement robuste qui fonctionne de maniĂšre cohĂ©rente pour des types de variables mixtes (catĂ©gorielles, ordinales, intervalles).

3.2.3 Simulation : Les limites de Pearson

Pour bien comprendre la différence entre Pearson (linéaire) et une véritable force prédictive (non-linéaire), observez comment les scores réagissent face à différentes distributions de données.

{"component":"LlmGeneratedComponent","props":{"height":"650px","prompt":"Create an interactive scatter plot simulator to teach the limitations of Pearson Correlation. \n\nObjective: Show that a Pearson score of ~0 does not mean there is no relationship, just no LINEAR relationship.\n\nStructure:\n1. A central 2D Scatter Plot canvas showing data points.\n2. A dropdown or button group to select 'Data Patterns': \n   - 'Linear Positive'\n   - 'Linear Negative'\n   - 'Quadratic (U-shape)'\n   - 'Sine Wave'\n   - 'Random Cloud'\n3. A prominent 'Scoreboard' panel displaying two metrics calculated in real-time based on the pattern:\n   - 'Pearson Correlation (r)': Should be near 1 for Linear Positive, -1 for Linear Negative, and near 0 for Quadratic, Sine, and Random.\n   - 'Predictive Power (Non-linear)': Should be high (>0.8) for Linear, Quadratic, and Sine, but near 0 for Random.\n\nBehavior: When the user selects 'Quadratic', explicitly highlight the fact that Pearson drops to 0 despite the clear visual relationship.","id":"im_1110e01afce77639"}}

3.2.4 ⚖ CorrĂ©lation n’est pas CausalitĂ©

C’est le mantra de la Data Science. Si l’EDA permet d’observer que deux variables Ă©voluent de pair, ce lien mathĂ©matique n’implique jamais de facto qu’une variable est la cause de l’évolution de l’autre.

  • La variable de confusion : Par exemple, il existe une forte corrĂ©lation positive entre les ventes de crĂšmes glacĂ©es et les noyades. Est-ce que manger une glace provoque la noyade ? Non. La variable de confusion cachĂ©e est la chaleur estivale, qui provoque simultanĂ©ment l’augmentation des deux phĂ©nomĂšnes.
  • L’EDA sert de gĂ©nĂ©rateur d’hypothĂšses, qui doivent ensuite ĂȘtre validĂ©es par le mĂ©tier ou par des tests A/B.

3.3 đŸ§© Regroupement et Segmentation

Méfiez-vous de la moyenne globale

Calculer le salaire moyen de l’ensemble d’une entreprise donne une information, mais elle masque les rĂ©alitĂ©s locales. C’est en segmentant ces donnĂ©es (ex: Salaire moyen par dĂ©partement et par niveau d’anciennetĂ©) que l’on extrait la vĂ©ritable valeur mĂ©tier. La transformation de donnĂ©es brutes en segments actionnables repose sur une mĂ©canique que tout ingĂ©nieur Data doit maĂźtriser : le Split-Apply-Combine.

3.3.1 đŸ§© Split-Apply-Combine

DerriĂšre la cĂ©lĂšbre fonction .groupby(), le moteur de calcul (qu’il s’agisse de Pandas ou de Polars) effectue toujours trois opĂ©rations distinctes :

  1. Split (Diviser) : Le jeu de données original est scindé en sous-groupes selon des clés définies (ex: le genre, la ville). Cette étape repose sur des algorithmes de hachage (hashing) en mémoire.
  2. Apply (Appliquer) : Une fonction d’agrĂ©gation (moyenne, somme, comptage, ou mĂȘme un modĂšle IA) est exĂ©cutĂ©e indĂ©pendamment sur chaque sous-groupe.
  3. Combine (Recombiner) : Les résultats isolés sont réassemblés dans une nouvelle structure de données propre et unifiée.

flowchart TD
    A[Données Brutes\n A:10, B:20, A:5, B:5] -->|1. Split| B(Groupe A\n 10, 5)
    A -->|1. Split| C(Groupe B\n 20, 5)
    
    B -->|2. Apply \n Somme| D[15]
    C -->|2. Apply \n Somme| E[25]
    
    D -->|3. Combine| F[Résultat Final\n A:15, B:25]
    E -->|3. Combine| F
    
    style A fill:#268bd2,stroke:#073642,color:#fdf6e3
    style F fill:#859900,stroke:#073642,color:#fdf6e3

3.3.2 đŸŽïž GroupBy vs Pivot Table

Un point de friction classique pour le Data Scientist est de choisir entre .groupby().agg() et .pivot_table(). Bien qu’elles produisent des rĂ©sultats similaires, leur mĂ©canique interne est fondamentalement diffĂ©rente.

  • **L’implĂ©mentation de pivot_table** utilise souvent des boucles Python pures sous le capot pour appliquer vos fonctions, ce qui est extrĂȘmement lent.
  • L’implĂ©mentation de groupby().agg()** vĂ©rifie d’abord si une fonction optimisĂ©e en C/Cython** est disponible pour ce que vous demandez (comme sum ou mean). Si oui, le moteur court-circuite Python et utilise le code C compilĂ©. Sur des millions de lignes, groupby peut ĂȘtre jusqu’à 60 fois plus rapide.

3.3.3 ⚙ Évolutions Modernes

Face Ă  l’explosion volumĂ©trique, les bibliothĂšques ont dĂ» repenser leur comportement par dĂ©faut.

  • Pandas 3.0 : Le paramĂštre observed=True est devenu le standard par dĂ©faut. Si vous groupez par une catĂ©gorie existante mais absente des donnĂ©es (un “groupe non-observĂ©â€), Pandas n’insĂšre plus de ligne vide remplie de NaN. Cela Ă©vite la saturation inutile de la RAM.
  • Polars : Pousse l’optimisation encore plus loin grĂące au “Morsel-Driven Parallelism”. Au lieu de traiter un groupe entier sur un seul cƓur, Polars dĂ©coupe les donnĂ©es en petits fragments (morsels) distribuĂ©s et calculĂ©s en parallĂšle sur tous les cƓurs CPU disponibles simultanĂ©ment.

3.4 đŸ•”ïžâ€â™‚ïž Mission 3

Vous arrivez en trombe sur le quai n°7. La “Mouette” est amarrĂ©e. Sur le pont supĂ©rieur, vous repĂ©rez une caisse massive marquĂ©e d’un “C”. Elle est verrouillĂ©e par un cadenas numĂ©rique Ă  4 chiffres.

Le capitaine du port vous transmet le manifeste des marchandises chargĂ©es aujourd’hui. ExĂ©cutez la cellule pour examiner le manifeste :

import pandas as pd

# Manifeste des marchandises du port
data_manifeste = {
    'proprietaire': ['Alice', 'Bob', 'Charlie', 'Alice', 'Charlie', 'Diana', 'Charlie'],
    'type_marchandise': ['Textiles', 'Electronique', 'Poissons', 'Meubles', 'Glace', 'Livres', 'Produits Chimiques'],
    'poids_kg': [150, 420, 1042, 300, 2105, 50, 1000]
}
df_manifeste = pd.DataFrame(data_manifeste)

print("Manifeste récupéré avec succÚs !")
display(df_manifeste)

Un docker vous glisse une information : “Le code du cadenas est toujours le poids total cumulĂ© des marchandises du propriĂ©taire.”

Votre objectif : Utiliser le regroupement de données (groupby) pour calculer le poids total des marchandises de chaque propriétaire, et déduire le code de Charlie.

3.5 🌉 Conclusion et Transition

L’analyse exploratoire nous a permis de comprendre les tendances et les corrĂ©lations au sein de nos donnĂ©es. Pour rendre ces dĂ©couvertes plus percutantes et accessibles, nous allons maintenant apprendre Ă  les visualiser efficacement.

C’est ce que nous allons explorer dans le Chapitre 4 : Visualisation des DonnĂ©es.