Exercice 97 / 100

Projet — EDA

Analyse exploratoire de données complète

eda (Exploratory Data Analysis) = analyse exploratoire. L'étape entre les données brutes et le modèle : comprendre ce qu'on a, repérer les patterns, formuler des hypothèses.

Les 5 questions à se poser

1. Combien de lignes / colonnes ? Types ? 2. Y a-t-il des NaN ou des doublons ? 3. Distribution de chaque variable (forme, outliers) ? 4. Corrélations entre variables ? 5. Différences entre groupes (cible vs features) ?

Workflow standard

df.shape df.info() df.describe() stats numériques df.describe(include='object') stats catégorielles df.isnull().sum() df.duplicated().sum() df.corr().round(2) matrice de corrélation (numériques) df[col].value_counts() fréquences

Visualisations utiles

- histogrammes distribution d'une variable - boxplots outliers, comparaison de groupes - scatter plots corrélations 2 à 2 - heatmap matrice de corrélation - bar charts fréquences catégorielles
À chaque question de l'exploration son graphique : l'histogramme pour la forme d'une variable, le boxplot pour ses valeurs extrêmes, le nuage de points pour le lien entre deux variables, les barres pour le poids des catégories
import seaborn as sns # bibliothèque sur-couche de matplotlib sns.pairplot(df, hue='cible') sns.heatmap(df.corr(), annot=True)

Exemple : EDA d'un dataset de réussite

import pandas as pd import numpy as np
np.random.seed(42) n = 200 df = pd.DataFrame({ 'heures_etude': np.random.uniform(1, 15, n), 'nb_exercices': np.random.randint(5, 50, n), 'note_precedente': np.random.uniform(5, 18, n), 'reussite': np.random.choice([0, 1], n, p=[0.3, 0.7]) })
print('=== EDA ===') print(f'Shape: {df.shape}') print(f'Stats:\n{df.describe()}') print(f'Corrélations:\n{df.corr().round(2)}') print(f'Réussite: {df["reussite"].value_counts().to_dict()}')
# Comparer les moyennes par groupe (réussis vs échoués) for col in ['heures_etude', 'nb_exercices', 'note_precedente']: reussis = df[df['reussite']==1][col].mean() echoues = df[df['reussite']==0][col].mean() print(f'{col}: reussis={reussis:.1f}, echoues={echoues:.1f}')

Bonnes pratiques

- écrire un notebook EDA AVANT de modéliser - documenter les hypothèses au fur et à mesure - vérifier les valeurs absurdes (âge négatif, dates futures...) - identifier la cible et son taux de base

ydata-profiling (ex pandas-profiling) génère un rapport eda complet en une ligne : df.profile_report(). Excellent pour démarrer.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →