Flux de travail EDA et profilage des données
df.info(), df.describe(), audit des valeurs manquantes, vérification des types de données et analyse de la cardinalité.
Flux de travail EDA et profilage des données est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que l'analyse exploratoire des données ?
L'analyse exploratoire des données (EDA) est la première étape avec tout jeu de données, avant la modélisation. Son objectif est d'en comprendre la structure, de repérer les problèmes et de développer une intuition.
Une EDA rigoureuse répond aux questions de la liste de vérification initiale : quelle est la taille des données ? Quels sont les types des colonnes ? Où se trouvent les valeurs manquantes ? Y a-t-il des doublons ? Comment les valeurs sont-elles distribuées ?
- Repérer rapidement les problèmes de qualité des données
- Décider quelles caractéristiques doivent être nettoyées
- Formuler des hypothèses à tester ultérieurement
Chargement des données
Tout commence par le chargement d'un DataFrame et un rapide aperçu avec head() et shape.
shape renvoie un tuple (rows, columns), ce qui vous permet de connaître instantanément l'échelle des données sur lesquelles vous travaillez.
import pandas as pd
df = pd.read_csv("customers.csv")
print(df.shape) # (10000, 8)
print(df.head()) # first 5 rowsdf.info() — Types et nombres de valeurs non nulles
df.info() est la commande initiale la plus utile. Elle affiche le nom de chaque colonne, son type de données et le nombre de valeurs non nulles.
Si une colonne numérique apparaît comme object, il y a un problème (texte parasite, virgules ou symboles monétaires). Si les nombres de valeurs non nulles diffèrent selon les colonnes, vos données contiennent des valeurs manquantes.
df.info()
# <class pandas.DataFrame>
# RangeIndex: 10000 entries
# age 9800 non-null float64
# city 10000 non-null object
# income 9500 non-null float64df.describe() — Résumé numérique
df.describe() fournit le compte, la moyenne, l'écart type, le minimum, les quartiles (25/50/75 %) et le maximum pour chaque colonne numérique.
Recherchez les signaux d'alerte : un min de -1 dans une colonne d'âges, un max très supérieur au 75e percentile (valeurs aberrantes) ou une moyenne très éloignée de la médiane (skew).
print(df.describe())
# Use include="all" to also summarize categorical columns
print(df.describe(include="all"))df.isnull().sum() — Comptage des valeurs manquantes
En enchaînant isnull() et sum(), vous comptez les valeurs manquantes pour chaque colonne. Ajoutez un autre .sum() pour obtenir le total général.
Convertissez ce nombre en pourcentage pour en évaluer la gravité : une colonne contenant 60 % de valeurs manquantes peut mériter d'être supprimée, tandis que 2 % de valeurs manquantes s'imputent facilement.
print(df.isnull().sum())
missing_pct = df.isnull().sum() / len(df) * 100
print(missing_pct.sort_values(ascending=False))df.duplicated().sum() — Recherche des lignes en double
df.duplicated() renvoie une série booléenne indiquant les lignes qui sont des copies exactes d'une ligne précédente. En faisant sa somme, vous comptez le nombre de doublons.
Vous pouvez limiter les doublons à certaines colonnes clés avec subset — ce qui est utile lorsqu'un id doit être unique.
print(df.duplicated().sum()) # exact duplicate rows
print(df.duplicated(subset=["id"]).sum()) # duplicate ids
df = df.drop_duplicates()value_counts() — Fréquences des catégories
value_counts() comptabilise le nombre d'occurrences de chaque valeur unique dans une colonne. C'est l'outil de référence pour examiner les catégories.
Utilisez normalize=True pour afficher les proportions plutôt que les comptes bruts, et dropna=False pour inclure les valeurs manquantes dans le décompte.
print(df["city"].value_counts())
print(df["city"].value_counts(normalize=True))
print(df["city"].value_counts(dropna=False))Vérification de la cardinalité
La cardinalité est le nombre de valeurs distinctes d'une colonne, obtenu avec nunique().
- Faible cardinalité (quelques catégories) → adaptée à l'encodage par indicateurs binaires.
- Forte cardinalité (des milliers de chaînes uniques, par exemple des identifiants utilisateur) → généralement pas une caractéristique utile telle quelle.
for col in df.select_dtypes("object").columns:
print(col, "->", df[col].nunique(), "unique")Repérer les colonnes constantes et de type identifiant
Deux cas extrêmes méritent d'être signalés lors du profilage :
- Colonnes constantes (
nunique() == 1) : elles ne contiennent aucune information — supprimez-les. - Colonnes de type identifiant (
nunique() == len(df)) : elles sont uniques pour chaque ligne et ne fournissent généralement aucune information utile à la plupart des modèles.
n = len(df)
for col in df.columns:
u = df[col].nunique()
if u == 1:
print(col, "is constant")
elif u == n:
print(col, "is ID-like")Types de données et utilisation de la mémoire
Vérifiez df.dtypes pour confirmer que les colonnes sont correctement stockées, et df.memory_usage(deep=True) pour repérer les colonnes volumineuses.
La réduction de la taille des types numériques et la conversion des chaînes à faible cardinalité en category peuvent réduire considérablement l'utilisation de la mémoire pour les grands jeux de données.
print(df.dtypes)
print(df.memory_usage(deep=True))
df["city"] = df["city"].astype("category")Extrait réutilisable pour le profilage
Vous pouvez regrouper toute la liste de vérification dans une seule fonction utilitaire afin d'appliquer le même examen initial à chaque nouveau jeu de données.
Exécutez-la dès que vous chargez un DataFrame pour faire immédiatement apparaître sa forme, ses types, ses valeurs manquantes, ses doublons et sa cardinalité.
def profile(df):
print("Shape:", df.shape)
print(df.info())
print("Missing:\n", df.isnull().sum())
print("Dupes:", df.duplicated().sum())
for c in df.select_dtypes("object"):
print(c, df[c].nunique(), "unique")
profile(df)Vérification rapide : valeurs manquantes
Vous souhaitez obtenir le pourcentage de valeurs manquantes dans chaque colonne.
Récapitulatif : la liste de vérification initiale de l'EDA
Vous disposez maintenant d'une routine initiale reproductible pour tout jeu de données :
shapeethead()pour connaître l'échelle et obtenir un aperçuinfo()pour les types de données et le nombre de valeurs non nullesdescribe()pour les résumés numériques et les indices de valeurs aberrantesisnull().sum()pour les valeurs manquantesduplicated().sum()pour les lignes en doublevalue_counts()etnunique()pour les fréquences des catégories et la cardinalité
Nous allons ensuite examiner les colonnes individuelles avec l'analyse univariée.
Questions Fréquemment Posées
La leçon « Flux de travail EDA et profilage des données » est-elle gratuite ?
Oui — le texte complet de « Flux de travail EDA et profilage des données » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Flux de travail EDA et profilage des données » ?
df.info(), df.describe(), audit des valeurs manquantes, vérification des types de données et analyse de la cardinalité. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Flux de travail EDA et profilage des données » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Flux de travail EDA et profilage des données
- Analyse univariée
- Analyse bivariée et multivariée
- Distribution des caractéristiques et analyse de la cible