Extraction de données Excel avec Python

Préparation de l'environnement

Pour manipuler des fichiers Excel (.xlsx) en Python, l'installation de pandas et openpyxl est indispensable. La première est idéale pour l'analyse de données massives, tandis que la seconde offre un contrôle précis au niveau des cellules.

pip install pandas openpyxl

Manipulation de fichiers Excel avec Pandas

La bibliothèque pandas simplifie l'importation de données tabulaires grâce à la fonction read_excel. Elle convertit directement le contenu en DataFrame, une structure de données optimisée pour les calculs.

Importation basique et multi-feuilles

import pandas as pd

# Chargement d'une feuille spécifique
tableau = pd.read_excel('fichier.xlsx', sheet_name='Donnees')

print(tableau.head())

# Extraction de toutes les feuilles dans un dictionnaire
toutes_feuilles = pd.read_excel('fichier.xlsx', sheet_name=None)

for nom, df in toutes_feuilles.items():
    print(f"Feuille active : {nom}")
    print(df.head())

Personnalisation des en-têtes et des index

Il est possible d'ajuster la ligne d'en-tête ou de définir une colonne comme index du DataFrame.

# Définir la deuxième ligne comme en-tête (index 1)
df_header = pd.read_excel('fichier.xlsx', header=1)

# Utiliser la colonne 'Identifiant' comme index
df_index = pd.read_excel('fichier.xlsx', index_col='Identifiant')

Accès avancé avec Openpyxl

Lorsqu'une manipulation plus fine est requise (styles, cellules non contiguës), openpyxl devient l'outil de choix. Il permet de charger le classeur entier et d'interagir directement avec les cellules.

Chargement et accès aux cellules

from openpyxl import load_workbook

# Ouverture du classeur
classeur = load_workbook('fichier.xlsx')

# Sélection de la feuille
feuille = classeur['Donnees']

# Lecture d'une cellule spécifique (Ligne 1, Colonne 2)
valeur = feuille.cell(row=1, column=2).value

# Recherche d'une valeur via le nom de la colonne
en_tetes = [cellule.value for cellule in feuille[1]]
idx_col = en_tetes.index('Age') + 1
val_cible = feuille.cell(row=2, column=idx_col).value

Extraction de lignes et de colonnes

La récupération de données entières s'effectue par itération sur les lignes ou par compréhension de liste pour les colonnes.

# Récupération de la première ligne
ligne_complete = [cellule.value for cellule in feuille[1]]

# Récupération de la colonne A
colonne_complete = [feuille[f'A{i}'].value for i in range(1, feuille.max_row + 1)]

Considérations techniques

En termes de performances, pandas consomme plus de mémoire mais excelle dans la vitesse de traitement des gros volumes grâce à la vectorisation. À l'inverse, openpyxl est privilégié pour la lecture partielle de fichiers volumineux ou la gestion de la mise en forme. Concernant la compatibilité, l'extension .xls nécessite des configurations spécifiques (comme xlrd), tandis que le format .xlsx est parfaitement supporté nativement par ces deux bibliothèques modernes.

Étiquettes: Python Pandas openpyxl Excel DataFrame

Publié le 20 juillet à 04h00