logo oujood
🔍

Créer un DataFrame depuis Excel

Pandas peut lire directement des fichiers Excel .xlsx et .xls avec la fonction read_excel(). Cette page vous montre comment charger une feuille de calcul en DataFrame, avec les options les plus utiles pour les fichiers réels.

OUJOOD.COM

Ce qu'il faut installer en plus de Pandas

Pandas ne peut pas lire les fichiers Excel seul — il s'appuie sur des bibliothèques externes selon le format :

  • openpyxl pour les fichiers .xlsx (format Excel moderne, recommandé)
  • xlrd pour les anciens fichiers .xls (Excel 97–2003)

Installez openpyxl si ce n'est pas déjà fait :

  📋 Copier le code

pip install openpyxl

Si vous tentez de lire un .xlsx sans openpyxl, Pandas lève une erreur claire qui vous demande de l'installer. C'est un oubli courant la première fois.

Lecture de base d'un fichier Excel

La syntaxe de pd.read_excel() ressemble beaucoup à pd.read_csv(). La différence principale : Excel peut contenir plusieurs feuilles, donc il faut parfois préciser laquelle charger.

  📋 Copier le code

import pandas as pd

# Lecture de la première feuille (comportement par défaut)
df = pd.read_excel("rapport_ventes.xlsx")
print(df.head())
print(df.shape)

Par défaut, Pandas charge la première feuille du classeur. La première ligne est utilisée comme en-tête de colonnes. Un index numérique est créé automatiquement, comme avec read_csv().

Choisir une feuille spécifique

Un classeur Excel contient souvent plusieurs feuilles : données brutes, résumé, paramètres. Le paramètre sheet_name permet de cibler celle dont vous avez besoin — par son nom ou par sa position (0 pour la première, 1 pour la deuxième, etc.).

  📋 Copier le code

import pandas as pd

# Par nom de feuille
df = pd.read_excel("rapport_ventes.xlsx", sheet_name="Janvier")

# Par position (0 = première feuille, 1 = deuxième...)
df2 = pd.read_excel("rapport_ventes.xlsx", sheet_name=1)

# Charger toutes les feuilles d'un coup → retourne un dict
toutes = pd.read_excel("rapport_ventes.xlsx", sheet_name=None)
print(list(toutes.keys()))   # ['Janvier', 'Février', 'Mars']

# Accéder à la feuille Février
df_fev = toutes["Février"]

Quand vous passez sheet_name=None, Pandas retourne un dictionnaire où chaque clé est le nom d'une feuille et chaque valeur est le DataFrame correspondant. C'est pratique pour traiter toutes les feuilles d'un coup dans une boucle.

Sélectionner les colonnes et définir l'index

Comme pour les CSV, vous pouvez limiter les colonnes chargées et désigner une colonne comme index. Les paramètres sont identiques : usecols et index_col.

  📋 Copier le code

import pandas as pd

# Charger seulement certaines colonnes
df = pd.read_excel(
    "rapport_ventes.xlsx",
    sheet_name="Janvier",
    usecols=["Produit", "Quantité", "Total HT"]
)

# Utiliser la colonne "Référence" comme index
df2 = pd.read_excel(
    "rapport_ventes.xlsx",
    sheet_name="Janvier",
    index_col="Référence"
)

print(df.head())
print(df2.loc["REF-042"])

usecols accepte aussi une notation Excel en lettres de colonnes : usecols="A:D" charge les colonnes A à D, usecols="A,C,F" charge les colonnes A, C et F. C'est utile quand les colonnes n'ont pas d'en-tête ou que vous préférez vous repérer à la position.

Gérer les en-têtes décalés et les lignes vides

Les fichiers Excel reçus de collègues ou téléchargés depuis des portails contiennent souvent un titre en haut, des lignes vides, ou des totaux en bas. Les paramètres header, skiprows et nrows gèrent ces cas sans avoir à modifier le fichier source.

  📋 Copier le code

import pandas as pd

# L'en-tête des colonnes est à la ligne 3 (index 2)
df = pd.read_excel(
    "export_comptable.xlsx",
    header=2
)

# Ignorer 4 lignes de titre avant les données
df2 = pd.read_excel(
    "export_comptable.xlsx",
    skiprows=4
)

# Charger seulement 500 lignes (exploration rapide d'un gros fichier)
df3 = pd.read_excel(
    "gros_fichier.xlsx",
    nrows=500
)

header=2 indique que la ligne d'index 2 (la troisième ligne du fichier) contient les noms de colonnes. Toutes les lignes avant sont ignorées. skiprows=4 fait la même chose mais en comptant depuis le début : les 4 premières lignes sautées, la suivante devient l'en-tête.

Une fois votre DataFrame chargé depuis Excel, toutes les opérations de Pandas s'appliquent exactement de la même façon que si les données venaient d'un CSV ou d'un dictionnaire.

Par carabde | Mis à jour le 26 avril 2026