Avant de modéliser ou nettoyer, on explore. Pandas a quelques méthodes incontournables pour avoir un aperçu rapide.
df.head(n) n premières lignes (5 par défaut)
df.tail(n) n dernières
df.sample(n) n lignes aléatoires (utile pour ne pas biaiser le coup d'œil)
df.shape (lignes, colonnes)Affiche
- nb de lignes/colonnes
- nom et type de chaque colonne
- nombre de valeurs NON-NULLES par colonne
- mémoire utiliséeC'est le 1er coup d'œil indispensable sur un dataset.
Pour les colonnes numériques uniquement (par défaut) :
count, mean, std, min, 25%, 50%, 75%, maxdf.describe()
df.describe(include='all') # inclut object/category
df.describe(include=['object']) # uniquement les colonnes textePour une colonne texte :
count, unique, top, freqdf.isnull() DataFrame de booléens (True = NaN)
df.isnull().sum() nb de NaN par colonne (TRÈS utilisé)
df.isnull().any() True si au moins un NaN par colonne
df.notnull() inverse
df.isnull().sum().sum() nb total de NaN dans tout le DataFramedf['produit'].value_counts() absolu, trié décroissant
df['produit'].value_counts(normalize=True) en pourcentages
df['produit'].value_counts().head(10) top 10
df['produit'].nunique() nombre de valeurs distinctes
df['produit'].unique() array des valeurs distinctesdf = pd.DataFrame({
'produit': ['A', 'B', 'A', 'C', 'B', 'A', 'C', 'B'],
'prix': [10, 25, 10, 15, 25, 10, 15, 25],
'note': [4.5, 3.8, 4.2, np.nan, 4.0, 4.8, 3.5, np.nan]
})df.describe() # stats numériques
df.isnull().sum() # nb de NaN par colonne
df['produit'].value_counts() # A:3, B:3, C:2Workflow eda : .head() → .info() → .describe() → .isnull().sum() → .value_counts() sur les catégorielles. Sur un nouveau dataset, c'est toujours par là qu'on commence.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →