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 :
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.
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.).
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.
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.
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