Opérations sur les fichiers Excel avec Pandas

Pandas offre de riches fonctionnalités de manipulation de fichiers Excel, nous aidant à lire et écrire facilement.xlset.xlsxdes fichiers, avec prise en charge d'opérations complexes telles que plusieurs feuilles, l'indexation et la sélection de colonnes. C'est un outil essentiel dans l'analyse de données.

Opération Méthode Description
Lire un fichier Excel pd.read_excel() Lire un fichier Excel et renvoyer un DataFrame
Écrire un DataFrame dans Excel DataFrame.to_excel() Écrire un DataFrame dans un fichier Excel
Charger un fichier Excel pd.ExcelFile() Charger un fichier Excel et accéder à plusieurs feuilles
Utiliser ExcelWriter pour écrire dans plusieurs feuilles pd.ExcelWriter() Écrire plusieurs DataFrames dans différentes feuilles du même fichier Excel

pd.read_excel() - 读取 Excel 文件

pd.read_excel()La méthode est utilisée pour lire des données à partir d’un fichier Excel et les charger en tant que DataFrame. Elle prend en charge la lecture.xlset.xlsxde fichiers formatés.

La syntaxe est la suivante :

pandas.read_excel(io, sheet_name=0, *, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=<no_default>, date_format=None, thousands=None, decimal='.', comment=None, skipfooter=0, storage_options=None, dtype_backend=<no_default>, engine_kwargs=None)

Description du paramètre :

  • io: Il s’agit d’un paramètre obligatoire, spécifiant le chemin ou l’objet fichier du fichier Excel à lire.

  • sheet_name=0: Spécifiez le nom ou l’index de la feuille à lire. La valeur par défaut est 0, c’est-à-dire la première feuille.

  • header=0: Spécifiez la ligne à utiliser comme noms de colonnes. La valeur par défaut est 0, c’est-à-dire la première ligne.

  • names=None: Une liste utilisée pour spécifier les noms de colonnes. Si elle est fournie, elle remplacera les noms de colonnes du fichier.

  • index_col=None: Spécifiez la colonne à utiliser comme index de ligne. Elle peut être un nom de colonne ou un numéro.

  • usecols=None: Spécifiez les colonnes à lire. Cela peut être une liste de noms de colonnes ou une liste d’indices de colonnes.

  • dtype=None: Spécifiez les types de données des colonnes. Cela peut être au format dictionnaire, avec les clés comme noms de colonnes et les valeurs comme types de données.

  • engine=None: Spécifiez le moteur d'analyse. La valeur par défaut estNone, pandas choisira automatiquement.

  • converters=None: Un dictionnaire de fonctions utilisées pour convertir les données.

  • true_values=None: Spécifiez les valeurs qui doivent être traitées comme booléennesTruevaleurs.

  • false_values=None: Spécifiez les valeurs qui doivent être traitées comme booléennesFalsevaleurs.

  • skiprows=None: Spécifiez le nombre de lignes à ignorer ou une liste de lignes à ignorer.

  • nrows=None: Spécifiez le nombre de lignes à lire.

  • na_values=None: Spécifiez les valeurs qui doivent être traitées comme des valeurs manquantes.

  • keep_default_na=True: Spécifiez s'il faut traiter les valeurs manquantes par défaut (telles queNaN) analyser commeNA。

  • na_filter=True: Spécifiez s'il faut convertir les données enNA。

  • verbose=False: Spécifiez s'il faut afficher des informations détaillées sur la progression.

  • parse_dates=False: Spécifiez s'il faut analyser les dates.

  • date_parser=<no_default>: Une fonction utilisée pour analyser les dates.

  • date_format=None: Spécifier le format des dates.

  • thousands=None: Spécifier le séparateur de milliers.

  • decimal='.': Spécifier le caractère de séparation décimale.

  • comment=None: Spécifier le caractère de commentaire.

  • skipfooter=0: Spécifier le nombre de lignes à ignorer à la fin du fichier.

  • storage_options=None: Un dictionnaire de paramètres pour le stockage cloud.

  • dtype_backend=<no_default>: Spécifier le backend de type de données.

  • engine_kwargs=None: Un dictionnaire de paramètres supplémentaires à transmettre au moteur.

Cet article utiliseexample_pandas_data.xlsxcomme exemple. Vous pouveztélécharger example_pandas_data.xlsxpour tester.

Exemple

import pandas as pd

# Lire le fichier data.xlsx
df = pd.read_excel('example_pandas_data.xlsx')

# Afficher le DataFrame lu
print(df)

La sortie est :

      表格 1 Unnamed: 1   Unnamed: 2
0     Name        Age         City
1    Alice         25     New York
2      Bob         30  Los Angeles
3  Charlie         35      Chicago

read_excel lit la première feuille par défaut (sheet_name=0). En supposant que le fichier data.xlsx n'ait qu'une seule feuille, les données lues sont stockées dans un DataFrame.

Si le fichier data.xlsx contient plusieurs feuilles, vous pouvez spécifier sheet_name pour lire les données d'une feuille particulière, par exemplepd.read_excel('data.xlsx', sheet_name='Sheet1')。

Exemple

import pandas as pd

# Lire la première feuille par défaut
df = pd.read_excel('data.xlsx')
print(df)

# Lire le contenu d'une feuille spécifiée (par nom de feuille)
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df)

# Lire plusieurs feuilles, en retournant un dictionnaire
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(dfs)

# Personnaliser les noms de colonnes et ignorer les deux premières lignes
df = pd.read_excel('data.xlsx', header=None, names=['A', 'B', 'C'], skiprows=2)
print(df)

DataFrame.to_excel() - Écrire un DataFrame dans un fichier Excel

to_excel()La méthode est utilisée pour écrire un DataFrame dans un fichier Excel, prenant en charge.xlset.xlsxdes formats.

La syntaxe est la suivante :

DataFrame.to_excel(excel_writer, *, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep='inf', freeze_panes=None, storage_options=None, engine_kwargs=None)

Description du paramètre :

  • excel_writer: Ceci est un paramètre obligatoire, spécifiant le chemin du fichier Excel ou l'objet fichier dans lequel écrire.

  • sheet_name='Sheet1': Spécifiez le nom de la feuille de calcul dans laquelle écrire, avec pour valeur par défaut'Sheet1'。

  • na_rep='': Spécifiez la chaîne représentant les valeurs manquantes (NaN) dans le fichier Excel. La valeur par défaut est une chaîne vide.

  • float_format=None: Spécifiez le format des nombres à virgule flottante. S'il estNone, le format par défaut d'Excel est utilisé.

  • columns=None: Spécifiez les colonnes à écrire. Si c'estNone, toutes les colonnes sont écrites.

  • header=True: Spécifiez s'il faut écrire les noms de colonnes comme première ligne. Si c'estFalse, les noms de colonnes ne sont pas écrits.

  • index=True: Spécifiez s'il faut écrire l'index comme première colonne. Si c'estFalse, l'index n'est pas écrit.

  • index_label=None: Spécifiez le libellé de la colonne d'index. Si c'estNone, le libellé de l'index n'est pas écrit.

  • startrow=0: Spécifiez le numéro de ligne à partir duquel commencer à écrire. La valeur par défaut est la ligne 0.

  • startcol=0: Spécifiez le numéro de colonne à partir duquel commencer à écrire. La valeur par défaut est la colonne 0.

  • engine=None: Spécifiez le moteur utilisé lors de l'écriture dans le fichier Excel. La valeur par défaut estNone, pandas choisira automatiquement.

  • merge_cells=True: Spécifiez s'il faut fusionner les cellules. Si c'estTrue, les cellules ayant la même valeur sont fusionnées.

  • inf_rep='inf': Spécifiez la chaîne représentant les valeurs infinies dans le fichier Excel. La valeur par défaut est'inf'。

  • freeze_panes=None: Spécifiez la position des volets figés. Si elle estNone, les volets ne sont pas figés.

  • storage_options=None: Un dictionnaire de paramètres pour le stockage cloud.

  • engine_kwargs=None: Un dictionnaire de paramètres supplémentaires à transmettre au moteur.

Exemple

import pandas as pd

# Créer un DataFrame simple
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})

# Écrire le DataFrame dans un fichier Excel, dans la feuille 'Sheet1'
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)

# Écrire plusieurs feuilles avec ExcelWriter
with pd.ExcelWriter('output.xlsx') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
df.to_excel(writer, sheet_name='Sheet2', index=False)

ExcelFile - Charger un fichier Excel

ExcelFileIl s'agit d'une classe pour lire les fichiers Excel. Elle peut gérer plusieurs feuilles et accéder aux données qu'elles contiennent sans rouvrir le fichier.

La syntaxe est la suivante :

excel_file = pd.ExcelFile('data.xlsx')

Méthodes courantes :

Méthode Description de la fonction
sheet_names Renvoie une liste des noms de toutes les feuilles du fichier
parse(sheet_name) Analyser la feuille spécifiée et renvoyer un DataFrame
close() Fermer le fichier pour libérer les ressources

Exemple

import pandas as pd

# Utiliser ExcelFile pour charger un fichier Excel
excel_file = pd.ExcelFile('data.xlsx')

# Afficher les noms de toutes les feuilles
print(excel_file.sheet_names)

# Lire la feuille spécifiée
df = excel_file.parse('Sheet1')
print(df)

# Fermer le fichier
excel_file.close()

ExcelWriter - Écrire un fichier Excel

ExcelWriter est une classe fournie par pandas, utilisée pour écrire des objets DataFrame ou Series dans des fichiers Excel. Avec ExcelWriter, vous pouvez écrire plusieurs feuilles de calcul dans un seul fichier Excel et disposer d'un contrôle plus flexible sur le processus d'écriture.

La syntaxe est la suivante :

pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None)

Description du paramètre :

  • path: Il s'agit d'un paramètre obligatoire, spécifiant le chemin, l'URL ou l'objet fichier du fichier Excel à écrire. Il peut s'agir d'un chemin de fichier local, d'un chemin de stockage distant (comme S3), d'un lien URL ou d'un objet fichier déjà ouvert.。

  • engine: Il s'agit d'un paramètre facultatif utilisé pour spécifier le moteur d'écriture dans le fichier Excel. S'il estNone, pandas sélectionnera automatiquement un moteur disponible (par défaut, il préfèreopenpyxl, et s'il n'est pas disponible, il sélectionne un autre moteur disponible). Les moteurs courants incluent'openpyxl'(pour.xlsx),'xlsxwriter'(fournit des fonctionnalités avancées de mise en forme et de graphiques),'odf'(pour les formats OpenDocument tels que.ods) etc.。

  • date_format: Il s'agit d'un paramètre facultatif, spécifiant la chaîne de format pour les dates écrites dans le fichier Excel, par exemple"YYYY-MM-DD"。

  • datetime_formatCeci est un paramètre facultatif qui spécifie la chaîne de format pour les objets datetime écrits dans le fichier Excel, par exemple"YYYY-MM-DD HH:MM:SS"。

  • modeCeci est un paramètre facultatif, dont la valeur par défaut est'w', indiquant le mode d'écriture. S'il est défini sur'a', cela signifie le mode ajout, ajout de données à un fichier existant (pris en charge uniquement par certains moteurs, tels queopenpyxl)。

  • storage_optionsIl s'agit d'un paramètre facultatif utilisé pour spécifier des options supplémentaires pour la connexion au backend de stockage, telles que les informations d'authentification, les autorisations d'accès, etc., applicables à l'écriture vers un stockage distant (tel que S3, GCS)。

  • if_sheet_existsCeci est un paramètre facultatif, dont la valeur par défaut est'error', en spécifiant le comportement lorsqu'une feuille de calcul existe déjà. Les options incluent'error'(lever une erreur),'new'(créer une nouvelle feuille de calcul),'replace'(remplacer le contenu de la feuille de calcul existante),'overlay'(écraser sur la feuille de calcul existante)。

  • engine_kwargsIl s'agit d'un paramètre facultatif utilisé pour transmettre d'autres arguments nommés au moteur. Ces arguments sont transmis aux fonctions du moteur correspondant, par exemplexlsxwriter.Workbook(file, **engine_kwargs)ouopenpyxl.Workbook(**engine_kwargs)wait。

Création d'un objet ExcelWriter :

Exemple

with ExcelWriter('output.xlsx') as writer:
    df.to_excel(writer, sheet_name='Sheet1')

Ici, ExcelWriter est utilisé comme gestionnaire de contexte pour garantir que le fichier est correctement fermé une fois l'opération terminée.

Écriture dans plusieurs feuilles de calcul :

Vous pouvez utiliser le même objet ExcelWriter pour écrire différents DataFrames dans différentes feuilles de calcul du même fichier Excel.

Exemple

df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
with pd.ExcelWriter("path_to_file.xlsx") as writer:
    df1.to_excel(writer, sheet_name="Sheet1")  
    df2.to_excel(writer, sheet_name="Sheet2")

Définition du format de date ou du format datetime :

Exemple

from datetime import date, datetime  
df = pd.DataFrame(
    [
        [date(2014, 1, 31), date(1999, 9, 24)],
        [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
    ],
    index=["Date", "Datetime"],
    columns=["X", "Y"],
)  
with pd.ExcelWriter(
    "path_to_file.xlsx",
    date_format="YYYY-MM-DD",
    datetime_format="YYYY-MM-DD HH:MM:SS"
) as writer:
    df.to_excel(writer)

Ajout de contenu à un fichier Excel existant :

Exemple

with pd.ExcelWriter("path_to_file.xlsx", mode="a", engine="openpyxl") as writer:
    df.to_excel(writer, sheet_name="Sheet3")

Utilisation du paramètre if_sheet_exists pour remplacer une feuille de calcul existante :

Exemple

with ExcelWriter(
    "path_to_file.xlsx",
    mode="a",
    engine="openpyxl",
    if_sheet_exists="replace",
) as writer:
    df.to_excel(writer, sheet_name="Sheet1")

Écriture de plusieurs DataFrames dans la même feuille de calcul, notez que le paramètre if_sheet_exists doit être défini sur overlay :

Exemple

with ExcelWriter("path_to_file.xlsx",
    mode="a",
    engine="openpyxl",
    if_sheet_exists="overlay",
) as writer:
    df1.to_excel(writer, sheet_name="Sheet1")
    df2.to_excel(writer, sheet_name="Sheet1", startcol=3)

Stockage du fichier Excel en mémoire :

Exemple

import io
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
buffer = io.BytesIO()
with pd.ExcelWriter(buffer) as writer:
    df.to_excel(writer)

Emballage du fichier Excel dans un fichier zip compressé :

Exemple

import zipfile  
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
with zipfile.ZipFile("path_to_file.zip", "w") as zf:
    with zf.open("filename.xlsx", "w") as buffer:
        with pd.ExcelWriter(buffer) as writer:
            df.to_excel(writer)

Passage d'arguments supplémentaires au moteur sous-jacent :

Exemple

with pd.ExcelWriter(
    "path_to_file.xlsx",
    engine="xlsxwriter",
    engine_kwargs={"options": {"nan_inf_to_errors": True}}
) as writer:
    df.to_excel(writer)

En mode ajout, engine_kwargs sera transmis à load_workbook d'openpyxl :

Exemple

with pd.ExcelWriter(
    "path_to_file.xlsx",
    engine="openpyxl",
    mode="a",
    engine_kwargs={"keep_vba": True}
) as writer:
    df.to_excel(writer, sheet_name="Sheet2")
Autres extensions