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.
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) ?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- 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égoriellesimport seaborn as sns # bibliothèque sur-couche de matplotlib
sns.pairplot(df, hue='cible')
sns.heatmap(df.corr(), annot=True)import pandas as pd
import numpy as npnp.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}')- é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 baseydata-profiling (ex pandas-profiling) génère un rapport eda complet en une ligne : df.profile_report(). Excellent pour démarrer.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →