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

4.1 🔎 Philosophie de l’Analyse Exploratoire (EDA)

Historiquement, cette philosophie de dĂ©couverte de la valeur puise ses racines dans l’Analyse Exploratoire des DonnĂ©es (EDA), un concept popularisĂ© par le mathĂ©maticien John Tukey dans les annĂ©es 1970 (IBM, n.d.).

Contrairement Ă  l’analyse confirmatoire classique (oĂč l’on cherche simplement Ă  valider ou infirmer une hypothĂšse préétablie), l’EDA se distingue par une approche d’investigation systĂ©matique. Le but ? Laisser la donnĂ©e “parler” d’elle-mĂȘme pour rĂ©vĂ©ler des structures, des anomalies (Outliers) ou des motifs cachĂ©s avant d’appliquer le moindre algorithme de Machine Learning complexe (IBM, n.d.).

C’est ce travail de dĂ©tective qui constitue le premier rempart contre les conclusions hĂątives et les biais algorithmiques.

💡 Concept ClĂ© : EDA

EDA (Exploratory Data Analysis) : Phase d’investigation utilisant des statistiques descriptives et des outils visuels pour rĂ©sumer les caractĂ©ristiques d’un jeu de donnĂ©es et dĂ©couvrir des modĂšles cachĂ©s avant toute modĂ©lisation prĂ©dictive.

đŸ•”ïžâ€â™‚ïž Simulateur d’Illusion : Ne faites jamais confiance aux rĂ©sumĂ©s

SĂ©lectionnez les diffĂ©rents jeux de donnĂ©es. Observez bien les statistiques descriptives (moyennes, corrĂ©lation) : elles sont strictement identiques. Pourtant, regardez ce que l’Analyse Exploratoire Visuelle (EDA) rĂ©vĂšle


4.2 📊 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.

4.2.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.

4.2.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.

4.2.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.

4.2.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

4.3 🔗 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.

4.3.1 đŸ—ș Le Pairplot : La Vision Globale

Avant de plonger dans des coefficients mathĂ©matiques isolĂ©s, le premier rĂ©flexe d’un explorateur de donnĂ©es est de gĂ©nĂ©rer un Pairplot (ou matrice de nuages de points).

Cet outil projette l’ensemble des relations bivariĂ©es possibles d’un jeu de donnĂ©es sous forme d’une grille de graphiques : * Sur la diagonale : Il affiche l’analyse univariĂ©e (histogramme ou courbe de densitĂ© KDE) de chaque variable, permettant de voir sa distribution individuelle. * Hors diagonale : Il affiche un nuage de points (Scatter Plot) croisant la variable de la ligne avec celle de la colonne. * L’argument magique hue : Permet de colorer les points en fonction d’une variable catĂ©gorielle (ex: le type de produit, le diagnostic mĂ©dical ou le type de bien). Cette simple coloration rĂ©vĂšle instantanĂ©ment des regroupements naturels (clusters) ou des sĂ©parations Ă©videntes dans l’espace des caractĂ©ristiques.

📊 Matrice Interactive de Pairplot (Analyse CroisĂ©e)

Explorez ci-dessous une véritable matrice de Pairplot 3 \times 3 sur des données immobiliÚres.

Instructions : 1. Cliquez sur n’importe quelle cellule de la grille pour afficher son analyse pĂ©dagogique dĂ©taillĂ©e dans le panneau de droite. 2. Changez la coloration via le menu dĂ©roulant hue pour observer comment la sĂ©paration des donnĂ©es en classes de biens (Maison vs Appartement) apparaĂźt Ă  l’écran.

đŸ’» ImplĂ©mentation en Python avec Seaborn

La librairie Seaborn simplifie cette génération complexe en une seule ligne de code :

import seaborn as sns
import matplotlib.pyplot as plt

# Chargement d'un jeu de données et affichage du pairplot
# 'hue' colore les points par catégorie et dessine des KDE séparés sur la diagonale
sns.pairplot(df, hue="Type_Bien", palette="solarized", diag_kind="kde")
plt.show()

4.3.2 📉 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.

4.3.3 🚀 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).

4.3.4 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.

📈 Les Limites de Pearson

Sélectionnez les différents profils de distribution et observez comment le coefficient de corrélation linéaire de Pearson réagit par rapport à une force prédictive non-linéaire.

4.3.5 ⚖ 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.

4.4 đŸ§© 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.

4.4.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.

🔄 Pipeline Split-Apply-Combine

SĂ©lectionnez la fonction d’agrĂ©gation et observez comment le moteur scinde le jeu de donnĂ©es d’origine, calcule les valeurs intermĂ©diaires pour chaque groupe et les recombine dans une structure propre.

4.4.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.

4.4.3 📊 DĂ©coupage et DiscrĂ©tisation (Binning)

Une autre forme de segmentation statistique trĂšs courante consiste Ă  transformer une variable continue (ex : l’ñge ou le poids des marchandises) en une variable catĂ©gorielle ordonnĂ©e (ex : tranches de poids [0-200], [200-1000], etc.). C’est ce qu’on appelle la discrĂ©tisation ou le binning.

Pandas propose deux outils fondamentaux pour réaliser cela :

  1. pd.cut (DĂ©coupage par intervalles rĂ©guliers ou spĂ©cifiques) : Divise la plage de valeurs en intervalles dĂ©finis ou d’égale largeur. C’est parfait lorsque vous voulez des catĂ©gories mĂ©tiers bien dĂ©finies.
  2. pd.qcut (DĂ©coupage par quantiles/effectifs Ă©gaux) : Divise les donnĂ©es de sorte que chaque groupe contienne le mĂȘme nombre d’observations (ex : quartiles, dĂ©ciles). C’est idĂ©al pour crĂ©er des groupes de taille homogĂšne.
import pandas as pd

# Exemple de découpage par intervalles spécifiques (pd.cut)
df_manifeste['categorie_poids'] = pd.cut(
    df_manifeste['poids_kg'], 
    bins=[0, 200, 1000, float('inf')], 
    labels=['Léger', 'Moyen', 'Lourd']
)

# Exemple de découpage par quantiles (pd.qcut en 4 groupes égaux / quartiles)
df_manifeste['quartile_poids'] = pd.qcut(
    df_manifeste['poids_kg'], 
    q=4, 
    labels=['Q1', 'Q2', 'Q3', 'Q4']
)

4.5 🔗 Croiser les DonnĂ©es : Les Jointures

💡 Le Pouvoir du Croisement : Reconstituer la Scùne de Crime

En situation rĂ©elle, les donnĂ©es d’enquĂȘte sont rarement concentrĂ©es dans une seule et unique table. Pour des raisons d’optimisation de stockage et de cohĂ©rence (les principes de normalisation des bases de donnĂ©es), les informations sont dĂ©coupĂ©es et rĂ©parties dans plusieurs fichiers.

Pour mener votre analyse exploratoire complĂšte (EDA), le premier rĂ©flexe consiste Ă  croiser les sources. L’opĂ©ration reine pour cela s’appelle la jointure (Join).

4.5.1 đŸ—ș Anatomie des DiffĂ©rentes Jointures

Une jointure consiste à associer les lignes de deux tables en se basant sur une clé commune (un identifiant unique, un nom, etc.). Selon la question posée, vous devez choisir le type de jointure approprié :

Inner Join (Interne)

Le strict minimum commun

Il conserve uniquement les lignes dont la clĂ© de jointure existe Ă  la fois dans la table de gauche ET dans la table de droite. C’est l’intersection mathĂ©matique pure.

  • Syntaxe Pandas : how='inner' (comportement par dĂ©faut).
  • Exemple : Lister uniquement les suspects pour lesquels nous avons un enregistrement de dĂ©part maritime.

Left Join (Gauche)

La table de gauche est prioritaire

Il conserve toutes les lignes de la table de gauche. Si une clĂ© n’existe pas Ă  droite, les colonnes correspondantes de droite sont remplies avec des valeurs manquantes (NaN).

  • Syntaxe Pandas : how='left'.
  • Exemple : Lister tous nos suspects, et ajouter leurs informations de voyage s’ils en ont une (sinon, laisser vide).

Right Join (Droite)

La table de droite est prioritaire

Le miroir parfait de la jointure gauche : il conserve toutes les lignes de la table de droite, complĂ©tant Ă  gauche avec des NaN si aucune correspondance n’est trouvĂ©e.

  • Syntaxe Pandas : how='right'.
  • Exemple : Lister tous les dĂ©parts de navires, et y associer les suspects correspondants s’il y en a.

Outer Join (Externe)

L’union totale sans exclusion

Il conserve toutes les lignes des deux tables (gauche et droite). Partout oĂč une correspondance manque, Pandas injecte automatiquement un NaN.

  • Syntaxe Pandas : how='outer'.
  • Exemple : Obtenir la vue d’ensemble absolue de tous les passagers enregistrĂ©s et de tous nos suspects.

4.5.2 ⚙ Le Match Visuel des Jointures

Pour bien appréhender les différences de rétention de lignes, visualisez ce schéma relationnel :

flowchart TD
    subgraph Table_Gauche [Suspects]
        G1["1: Alice"]
        G2["2: Bob"]
        G3["3: Charlie"]
    end

    subgraph Table_Droite [Ferrys]
        D1["3: La Mouette"]
        D2["4: Le Poséidon"]
    end

    G3 <-->|Clé commune: 3| D1

    classDef left fill:#268bd2,stroke:#073642,color:#fdf6e3;
    classDef right fill:#cb4b16,stroke:#073642,color:#fdf6e3;
    class Table_Gauche left;
    class Table_Droite right;

  • Inner Join : Seul Charlie (clĂ© 3) est conservĂ© car il est prĂ©sent dans les deux tables.
  • Left Join : Garde Alice (1), Bob (2) et Charlie (3). Alice et Bob auront NaN pour la colonne navire.
  • Outer Join : Garde Alice (1), Bob (2), Charlie (3) et le passager anonyme du ferry 4 (Le PosĂ©idon).

4.5.3 đŸ’» ImplĂ©mentation pratique avec Pandas

L’outil universel sous Pandas est la fonction pd.merge(). Elle offre une flexibilitĂ© totale grĂące Ă  ses paramĂštres clĂ©s :

import pandas as pd

# Cas 1 : Les clĂ©s de jointure ont le mĂȘme nom dans les deux tables
df_fusion = pd.merge(df_gauche, df_droite, on='id', how='inner')

# Cas 2 : Les clés de jointure ont des noms différents
df_fusion = pd.merge(
    left=df_gauche,
    right=df_droite,
    left_on='nom_suspect',   # Clé dans la table de gauche
    right_on='nom_passager',  # Clé dans la table de droite
    how='left'
)

4.6 đŸ•”ïžâ€â™‚ïž Mission 2

Votre instinct Ă©tait bon : Charlie tente de fuir par la mer ! L’inspecteur principal vient de vous faire parvenir le registre piratĂ© des dĂ©parts maritimes d’aujourd’hui.

Exécutez la cellule ci-dessous pour consulter ce nouveau registre :

import pandas as pd

# On recrée l'état de la Mission 1
df_coupables_potentiels = pd.DataFrame({
    'nom': ['Charlie'],
    'age': [35.0],
    'has_alibi': [False]
})

# On charge la nouvelle table
df_embarquements = pd.DataFrame({
    'passager': ['Alice', 'Bob', 'Charlie', 'Diana', 'Zoe'],
    'navire': ['Le Triton', 'L\'Océan', 'La Mouette', 'L\'Océan', 'Le Poséidon'],
    'quai': [4, 12, 7, 12, 2]
})

Votre objectif : Croiser (joindre) la liste de vos coupables potentiels avec ce registre maritime pour dĂ©couvrir oĂč se cache Charlie. Indice : Regardez bien le nom des colonnes contenant les noms des individus dans les deux tables !

4.7 đŸ•”ïžâ€â™‚ïž Mission 4

Vous descendez sur le pont infĂ©rieur face au conteneur suspect marquĂ© d’un “C”. Il est verrouillĂ© 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.

4.8 TP2 : L’EnquĂȘte Dimensionnelle (EDA)

Félicitations ! Grùce à votre travail de Data Wrangling (TP1), la base de données du Spaceship Titanic est propre et exploitable. Néanmoins, une question fondamentale subsiste : quel est le profil des passagers qui ont été transportés dans une autre dimension spatio-temporelle ?

Dans ce deuxiĂšme TP, vous incarnerez un Analyste de l’équipe de sauvetage et explorerez ces donnĂ©es pour identifier des tendances et des profils types qui permettront d’aider les Ă©quipes de recherche spatiale.

4.8.1 🎯 Objectifs PĂ©dagogiques

  • Statistiques Descriptives Globales : Dresser un Ă©tat des lieux de base de la population Ă  l’aide de mĂ©thodes globales (.describe() et .value_counts()) pour Ă©valuer le taux de disparition global et l’ñge moyen des passagers.
  • Tris CroisĂ©s & Analyse CroisĂ©e : Croiser des variables qualitatives stratĂ©giques (le statut VIP et la cible Transported) via pd.crosstab() pour vĂ©rifier scientifiquement la rumeur selon laquelle les cabines VIP offraient une protection contre l’anomalie.
  • Regroupement et Profilage : Regrouper les passagers selon leur planĂšte d’origine (HomePlanet) Ă  l’aide de .groupby() et .agg() pour modĂ©liser leurs comportements et leurs dĂ©penses moyennes.
  • Matrice de CorrĂ©lation : Évaluer et cartographier les interactions financiĂšres des passagers (RoomService, Spa, VRDeck, etc.) Ă  l’aide de matrices de corrĂ©lation (.corr()) pour dĂ©tecter des motifs d’achat corrĂ©lĂ©s.

4.8.2 📁 Fichiers du TP

Vous pouvez explorer l’arborescence des fichiers du TP ci-dessous et tĂ©lĂ©charger directement l’archive de dĂ©part :

4.9 🌉 Conclusion et Transition

L’analyse exploratoire et la visualisation nous ont permis de comprendre les tendances, les profils types et les corrĂ©lations au sein de nos donnĂ©es. ArmĂ©s de ces connaissances, nous sommes maintenant prĂȘts Ă  passer Ă  la modĂ©lisation pour prĂ©dire des tendances ou segmenter nos donnĂ©es.

C’est ce que nous allons explorer dans le Chapitre 5 : ModĂ©lisation et Machine Learning.

IBM. n.d. “What Is Exploratory Data Analysis?” https://www.ibm.com/think/topics/exploratory-data-analysis.