OUJOOD.COM
Pourquoi explorer avant d'analyser
Charger un fichier CSV ou Excel ne dit rien sur ce qu'il contient vraiment. Les colonnes sont-elles bien nommées ? Les premières lignes ont-elles du sens ? Y a-t-il des valeurs étranges dès le départ ? Répondre à ces questions avant d'écrire une seule ligne d'analyse évite de passer une heure à déboguer un calcul qui reposait sur des données mal chargées.
Pandas propose plusieurs méthodes pour ça. head() et tail() sont les plus immédiates, mais elles s'utilisent toujours avec quelques autres commandes complémentaires.
head() : voir les premières lignes
df.head() retourne les 5 premières lignes du DataFrame par défaut. Passez un entier en argument pour en afficher plus ou moins.
import pandas as pd
df = pd.read_csv("ventes.csv")
# 5 premières lignes (par défaut)
print(df.head())
# 10 premières lignes
print(df.head(10))
# 2 premières lignes seulement
print(df.head(2))
En pratique, head() sert à vérifier trois choses d'un coup de œil : les noms de colonnes sont-ils corrects, les valeurs ont-elles l'air cohérentes, et les types semblent-ils bien inférés. Si la première ligne de données ressemble à un en-tête, c'est souvent le signe que skiprows était nécessaire à la lecture.
tail() : voir les dernières lignes
df.tail() fonctionne exactement comme head() mais depuis la fin du DataFrame. C'est utile pour vérifier que le fichier a été lu jusqu'au bout et qu'il n'y a pas de lignes parasites en bas — totaux, mentions légales, lignes vides.
import pandas as pd
df = pd.read_csv("ventes.csv")
# 5 dernières lignes (par défaut)
print(df.tail())
# 3 dernières lignes
print(df.tail(3))
# Vérifier que le fichier ne finit pas sur une ligne "Total" parasite
print(df.tail(1))
Un cas fréquent : un export Excel converti en CSV qui termine par une ligne Total : 15 240,00. tail(1) le révèle immédiatement. Sans cette vérification, cette ligne se retrouve dans les calculs et fausse tous les agrégats.
sample() : observer des lignes aléatoires
head() et tail() montrent les extrémités du fichier. Mais si les données sont triées ou si les premières lignes ne sont pas représentatives du reste, vous risquez de manquer des anomalies au milieu. sample() retourne N lignes choisies au hasard dans le DataFrame.
import pandas as pd
df = pd.read_csv("clients.csv")
# 5 lignes aléatoires
print(df.sample(5))
# Résultat reproductible avec random_state
print(df.sample(5, random_state=42))
# 10 % des lignes choisis aléatoirement
print(df.sample(frac=0.1))
random_state=42 fixe le générateur aléatoire : vous obtenez toujours les mêmes lignes à chaque exécution, ce qui est utile pour documenter une observation ou partager un exemple reproductible. frac=0.1 retourne 10 % du DataFrame — pratique sur un jeu de données de plusieurs milliers de lignes quand vous voulez un aperçu proportionnel.
Combiner head(), tail() et shape pour un premier bilan
En pratique, la séquence d'exploration standard après un chargement tient en quatre lignes. Elle donne une vue d'ensemble complète avant d'aller plus loin.
import pandas as pd
df = pd.read_csv("transactions.csv", sep=";", encoding="utf-8")
# 1. Dimensions du DataFrame
print("Dimensions :", df.shape)
# 2. Premières lignes
print("\nPremières lignes :")
print(df.head())
# 3. Dernières lignes
print("\nDernières lignes :")
print(df.tail())
# 4. Noms et types des colonnes
print("\nTypes des colonnes :")
print(df.dtypes)
Ce bloc de quatre commandes prend dix secondes à écrire et évite la plupart des mauvaises surprises. Il devient un réflexe dès que vous travaillez régulièrement sur des données. La page suivante, consacrée à info() et describe(), complète ce tableau avec les statistiques et la détection des valeurs manquantes.
Par carabde | Mis à jour le 26 avril 2026