logo oujood
🔍

Résumé statistique Pandas (info, describe)

Après head() et tail(), deux méthodes vont beaucoup plus loin dans l'inspection d'un DataFrame : info() révèle les types et les valeurs manquantes, describe() calcule les statistiques descriptives. Ensemble, elles donnent un portrait complet de vos données en quelques secondes.

OUJOOD.COM

info() : le bilan technique du DataFrame

df.info() affiche un résumé structurel complet : nombre de lignes, nom et type de chaque colonne, nombre de valeurs non nulles par colonne, et occupation mémoire totale. C'est la méthode à appeler en premier quand vous ne connaissez pas encore un jeu de données.

  📋 Copier le code

import pandas as pd

df = pd.read_csv("commandes.csv")
df.info()

Résultat typique :

  📋 Copier le code

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1200 entries, 0 to 1199
Data columns (total 6 columns):
 #   Column          Non-Null Count  Dtype
---  ------          --------------  -----
 0   id_commande     1200 non-null   int64
 1   client          1200 non-null   object
 2   date_commande   1200 non-null   object
 3   montant         1187 non-null   float64
 4   statut          1200 non-null   object
 5   date_livraison  1043 non-null   object
dtypes: float64(1), int64(1), object(4)
memory usage: 56.4+ KB

Ce résultat révèle immédiatement deux problèmes : la colonne montant a 13 valeurs manquantes (1187 au lieu de 1200), et date_livraison en a 157. Les colonnes de dates sont en object — elles devront être converties avant tout calcul temporel. Tout ça sans afficher une seule ligne de données.

Détecter les valeurs manquantes avec isnull()

info() montre le nombre de valeurs non nulles. Pour avoir directement le nombre de valeurs manquantes par colonne, combinez isnull() et sum() :

  📋 Copier le code

import pandas as pd

df = pd.read_csv("commandes.csv")

# Nombre de valeurs manquantes par colonne
print(df.isnull().sum())

# Pourcentage de valeurs manquantes par colonne
print((df.isnull().sum() / len(df) * 100).round(2))

Le pourcentage est souvent plus parlant que le nombre brut. 13 valeurs manquantes sur 1200 lignes, c'est 1 % — traitable. 157 valeurs manquantes sur 1200, c'est 13 % — ça mérite réflexion avant de décider si on remplit, on supprime ou on ignore ces lignes.

describe() : les statistiques descriptives

df.describe() calcule automatiquement les statistiques clés pour toutes les colonnes numériques : nombre de valeurs, moyenne, écart-type, minimum, quartiles (25 %, 50 %, 75 %) et maximum.

  📋 Copier le code

import pandas as pd

data = {
    "âge":     [23, 45, 31, 28, 67, 19, 52, 38, 44, 29],
    "salaire": [1800, 3200, 2400, 2100, 4500, 1600, 3800, 2900, 3100, 2200],
    "score":   [72, 88, 65, 91, 78, 55, 83, 70, 87, 69]
}
df = pd.DataFrame(data)

print(df.describe())

Résultat :

  📋 Copier le code

             âge       salaire      score
count  10.000000     10.000000  10.000000
mean   37.600000   2760.000000  75.800000
std    14.640892    861.684705  11.390349
min    19.000000   1600.000000  55.000000
25%    28.250000   2125.000000  68.250000
50%    34.500000   2650.000000  75.000000
75%    44.750000   3275.000000  86.250000
max    67.000000   4500.000000  91.000000

La ligne 50% est la médiane — plus robuste que la moyenne face aux valeurs extrêmes. L'écart entre mean et 50% révèle un biais : si la moyenne est bien supérieure à la médiane, quelques valeurs élevées tirent la distribution vers le haut. L'écart entre min et 25%, ou entre 75% et max, peut signaler des valeurs aberrantes.

Étendre describe() aux colonnes texte

Par défaut, describe() ignore les colonnes de type object. Le paramètre include="all" les inclut, avec des statistiques adaptées : nombre de valeurs uniques, valeur la plus fréquente et sa fréquence.

  📋 Copier le code

import pandas as pd

df = pd.read_csv("commandes.csv")

# Inclure toutes les colonnes, y compris les textes
print(df.describe(include="all"))

# Uniquement les colonnes texte (object)
print(df.describe(include="object"))

# Nombre de valeurs uniques par colonne texte
print(df.select_dtypes("object").nunique())

Pour une colonne statut avec les valeurs "en cours", "livré", "annulé", describe(include="object") indique combien de valeurs uniques il y a et laquelle revient le plus souvent. C'est une façon rapide de vérifier qu'il n'y a pas de fautes de frappe ou de catégories non prévues dans vos données catégorielles.

Par carabde | Mis à jour le 26 avril 2026