Fonction Pandas df.to_excel()

Python 常用函数Fonctions courantes de Pandas


to_excel()est une méthode DataFrame utilisée pour exporter des données vers un fichier Excel, prenant en charge.xlsxet.xlsformat.

Excel est l'outil d'analyse de données le plus couramment utilisé dans le travail de bureau en entreprise,to_excel()Il peut exporter un DataFrame pandas vers un fichier Excel bien formaté. Il prend en charge plusieurs feuilles de calcul, la mise en forme des cellules, l'insertion de formules et d'autres fonctionnalités avancées, ce qui en fait l'outil idéal pour produire des rapports de données et des résultats d'analyse.


Syntaxe de base et paramètres

Format de syntaxe

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', ...)

Description du paramètre

ParamètreTypeDescriptionValeur par défaut
excel_writerstr, ExcelWriter, objet de chemin, objet de type fichierChemin de fichier ou objet ExcelWriterRequis
sheet_namestrNom de la feuille'Sheet1'
na_repstrReprésentation des valeurs manquantes''
float_formatstrFormat des nombres à virgule flottanteAucune
columnslisteColonnes à exporterAucune
headerboolIndique s'il faut exporter les noms de colonnesTrue
indexboolIndique s'il faut exporter l'indexTrue
index_labelstrNom de la colonne d'indexAucune
startrowintLigne de début des données (index 0)0
startcolintColonne de début des données (index 0)0
enginestrMoteur d'écriture : 'openpyxl', 'xlsxwriter'Aucune

Valeur de retour

  • Type de retour:None
  • Écrit directement les données dans le fichier Excel spécifié, aucune valeur de retour.

Exemples

Grâce aux exemples suivants, maîtrisez pleinementto_excel()diverses utilisations de.

Exemple 1 : Utilisation de base - Exportation vers un fichier Excel

Créez d'abord un DataFrame, puis utilisezto_excel()pour exporter vers un fichier Excel.

Exemple

import pandas as pd
import openpyxl  # À installer : pip install openpyxl

# Créer un DataFrame d'exemple
data = {
    'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
    'age': [28, 35, 42, 26],
    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
    'salary': [8000, 12000, 15000, 7000]
}
df = pd.DataFrame(data)

# Exemple 1a : l'export le plus basique
# excel_writer : chemin du fichier (requis)
df.to_excel('employees.xlsx', index=False)
print("Exporté vers employees.xlsx")
print()

# Exemple 1b : Exporter et lire pour vérification
df_check = pd.read_excel('employees.xlsx')
print("Lecture de vérification :")
print(df_check)
print()

# Exemple 1c : Spécifier le nom de la feuille de calcul
df.to_excel('employees_sheet.xlsx', sheet_name='Table des employés', index=False)
print("Exporté vers employees_sheet.xlsx (feuille de calcul : Table des employés)")

Sortie attendue :

已导出到 employees.xlsx

验证读取:
    name  age       support
Tom   28  Beijing    8000
1  Jerry   35  Shanghai   12000
2   Mike   42  Guangzhou  15000
3   Lucy   26  Shenzhen    7000

已导出到 employees_sheet.xlsx (工作表: 员工表)

Analyse du code :

  • to_excel()Il faut spécifier leexcel_writerparamètre, c'est-à-dire le chemin du fichier.
  • Par défaut, l'index est exporté ; vous pouvez définirindex=Falsepour ne pas exporter l'index.
  • sheet_nameparamètre pour personnaliser le nom de la feuille de calcul (par défaut, Sheet1).

Exemple 2 : Exportation de plusieurs feuilles de calcul

UtilisationExcelWritervous pouvez écrire plusieurs DataFrames dans différentes feuilles de calcul du même fichier Excel.

Exemple

import pandas as pd

# Créer plusieurs DataFrames
df_employees = pd.DataFrame({
    'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
    'age': [28, 35, 42, 26],
    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
})

df_sales = pd.DataFrame({
    'product': ['A', 'B', 'C', 'D'],
    'sales': [100, 200, 150, 80],
    'revenue': [10000, 20000, 15000, 8000]
})

df_inventory = pd.DataFrame({
    'product': ['A', 'B', 'C', 'D'],
    'stock': [500, 300, 400, 200],
    'status': ['OK', 'Low', 'OK', 'Low']
})

# Exemple 2a : Utiliser ExcelWriter pour écrire plusieurs feuilles de calcul
# mode='w' est le mode par défaut, qui écrase le fichier existant
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
    df_employees.to_excel(writer, sheet_name='Employees', index=False)
    df_sales.to_excel(writer, sheet_name='Sales', index=False)
    df_inventory.to_excel(writer, sheet_name='Inventory', index=False)

print("Exporté vers multi_sheet.xlsx (contient 3 feuilles de calcul)")
print()

# Vérification : Lire toutes les feuilles de calcul
all_sheets = pd.read_excel('multi_sheet.xlsx', sheet_name=None)
print("Toutes les feuilles de calcul :")
for name, df in all_sheets.items():
    print(f"n--- {name} ---")
    print(df)

Sortie attendue :

已导出到 multi_sheet.xlsx (包含3个工作表)

所有工作表:
--- Employees ---
    name  age       city
0   Tom   28    Beijing
1  Jerry   部分    Shanghai
2   Excel  格式    15000  Guangzhou
3   Lucy   26    Shenzhen

--- Sales ---
  product  sales  revenue
0       A    100    10000
起始位置    200    写入    20000
2       C    150    15000
float_format='%.2f'    0    20000
    200    15000      0     8000
1      D      80     位置    0    8000
0     150     12000
3      D     80     12000

--- Inventory ---
  product  库存    状态
0      A    500     正常
1      B    300     低库存
2      位置    400     格式    0    12000
3      位置    200     200

Analyse du code :

  • pd.ExcelWriterest un gestionnaire de contexte pour écrire plusieurs feuilles de calcul.
  • DanswithDans le bloc, vous pouvez appeler plusieurs foisto_excel(), chaque fois en spécifiant un nom de feuille de calcul différent.
  • De cette façon, les données associées peuvent être organisées dans le même fichier Excel.

Exemple 3 : Personnalisation du format et de la position

Il peut contrôler la position de départ, le format et la gestion des valeurs manquantes.

Exemple

import pandas as pd

# Créer un DataFrame contenant des valeurs manquantes et des nombres à virgule flottante
df = pd.DataFrame({
    'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
    'age': [28, None, 42, 26],
    'score': [85.567, 92.333, 78.999, 95.0],
    'city': ['Beijing', 'Shanghai', None, 'Shenzhen']
})

# Exemple 3a : Personnaliser la représentation des valeurs manquantes
df.to_excel('output_na.xlsx', index=False, na_rep='N/A')
print("Exporté (valeurs manquantes personnalisées)")

# Exemple 3b : Formater les nombres à virgule flottante
# float_format utilise la syntaxe des chaînes de format Python
df.to_excel('output_float.xlsx', index=False, float_format='%.2f')
print("Exporté (flottants arrondis à 2 décimales)")

# Exemple 3c : Exporter des colonnes spécifiques
df.to_excel('output_cols.xlsx', index=False, columns=['name', 'score'])
print("Exporté (uniquement les colonnes name et score)")

# Exemple 3d : Spécifier la position de départ des données
# startrow et startcol contrôlent la position de départ des données dans les cellules
with pd.ExcelWriter('output_position.xlsx', engine='openpyxl') as writer:
    # Écrire les informations d'en-tête
    writer.sheets['Sheet1'].cell(1, 1).value = 'Tableau des scores des employés'
    writer.sheets['Sheet1'].cell(2, 1).value = 'Heure des statistiques : 2024-01-01'

    # Écrire les données à partir de la ligne 4
    df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=3)

print("Exporté (position de départ spécifiée)")

# Exemple 3e : Ne pas exporter l'index et les noms de colonnes
df.to_excel('output_no_header.xlsx', index=False, header=False)
print("Exporté (sans index ni noms de colonnes)")

# Afficher le contenu du fichier généré
print(nContenu de chaque fichier :)
for fname in ['output_na.xlsx', 'output_float.xlsx', 'output_cols.xlsx']:
    print(f"n--- {fname} ---")
    df_read = pd.read_excel(fname)
    print(df_read)

Sortie attendue :

已导出(自定义缺失值)
已导出((浮点数保留2位小数)
已导出(只包含 name 和 score 列)
已自由    指定起始位置)
已导出(不包含索引和列名)

各文件内容:
--- output_na.xlsx ---
    name  age  score  city
0   Tom  28 85.567   Beijing
1   Jerry  条件    92.333  Shanghai
2    格式    42  格式    78.999  datetime
3   Lucy    26    格式    95.00    格式化    Shenzhen

--- output_float.xlsx ---
   格式     Excel    位置    startrow    startcol    在指定位置写入    float_format='%.2f' 保留两位小数    na_rep='N/A' 自定义缺失值
2.0
...

Analyse du code :

  • na_repLe paramètre personnalise la représentation sous forme de chaîne des valeurs manquantes.
  • float_formatLe paramètre utilise des chaînes de format Python, telles que'%.2f'pour conserver deux décimales.
  • columnsparamètre exporte uniquement les colonnes spécifiées.
  • startrowetstartcolpeut contrôler la position de la cellule de départ des données dans Excel.

Exemple 4 : mise en forme avec le moteur xlsxwriter

Le moteur xlsxwriter offre des fonctionnalités de mise en forme plus riches.

Exemple

import pandas as pd

# Il faut installer xlsxwriter : pip install xlsxwriter

# Créer un DataFrame
df = pd.DataFrame({
    'name': ['Tom', 'Jerry', 'Mike', 'Lucy', 'John'],
    'age': [28, 35, 42, 26, 31],
    'salary': [8000, 12000, 15000, 7000, 9000],
    'department': ['IT', 'HR', 'Sales', 'IT', 'HR']
})

# Exemple 4 : utiliser xlsxwriter pour définir la mise en forme
# Il faut d'abord installer : pip install xlsxwriter
with pd.ExcelWriter('formatted.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='Employees', index=False)

    # Obtenir les objets classeur et feuille de calcul
    workbook = writer.book
    worksheet = writer.sheets['Employees']

    # Définir les formats
    header_format = workbook.add_format({
        'bold': True,        # Gras
        'fg_color': '#4472C4',  # Couleur de fond (bleu)
        'font_color': 'white',  # Couleur du texte (blanc)
        'align': 'center',   # Centré horizontalement
        'valign': 'vcenter', # Centré verticalement
        'border': 1          # Bordure
    })

    # Définir la largeur des colonnes
    worksheet.set_column('A:A', 10)  # Largeur de la colonne A 10
    worksheet.set_column('B:B', 8)
    worksheet.set_column('C:C', 12)
    worksheet.set_column('D:D', 12)

    # Écrire l'en-tête formaté
    for col_num, column_name in enumerate(df.columns.values):
        worksheet.write(0, col_num, column_name, header_format)

print("Fichier Excel formaté exporté : formatted.xlsx")
print("La mise en forme comprend : en-tête en gras, fond bleu, texte blanc, centré, bordures, paramètres de largeur de colonne")

Sortie attendue :

先安装 xlsxwriter 库再运行此示例。
已导出带格式的 Excel 文件: formatted.xlsx

格式包括:制作    表头加粗、蓝色背景、白字、  居中、边框、列宽    导出    使用 openpyxl 引擎  导入    xlsxwriter 引擎支持更丰富的格式设置,如单元格样式、条件格式、图表等

如果需要更高级的 Excel 格式设置,建议:
1. 使用 openpyxl 直接操作
2. 使用 xlsxwriter 获得更好的性能和格式支持

Analyse du code :

  • xlsxwriterLe moteur offre des fonctionnalités de mise en forme plus riches.
  • Viaworkbook.add_format()Créer des objets de format.
  • Vous pouvez définir la police, la couleur de fond, la bordure, l'alignement, etc.
  • worksheet.set_column()Définir les largeurs de colonne.

Notes

  • Utilisation.xlsxle format nécessite l'installationopenpyxl:pip install openpyxl。
  • Utilisationxlsxwriterle moteur nécessite l'installation :pip install xlsxwriter。
  • Par défaut, l'index est exporté ; si ce n'est pas nécessaire, définissezindex=False。
  • Lors de l'exportation de plusieurs feuilles de calcul, utilisezpd.ExcelWritergestionnaire de contexte.
  • startrowetstartcolLe comptage commence à 0, c'est-à-dire que startrow=0 correspond à la première ligne.

Résumé

to_excel()est la méthode essentielle pour exporter un DataFrame vers un fichier Excel. Elle est puissante, prend en charge plusieurs feuilles de calcul dans un seul fichier, la mise en forme personnalisée, le contrôle de la position de départ, etc.

Dans le travail pratique, Excel est le format de rapport de données le plus couramment utilisé,to_excel()Il peut répondre à la plupart des besoins d'exportation. Si une mise en forme plus complexe est requise, vous pouvez utiliser le moteur xlsxwriter ou utiliser directement la bibliothèque openpyxl. Il est recommandé aux lecteurs de choisir le moteur et la configuration des paramètres appropriés en fonction des besoins réels.

Python 常用函数Fonctions courantes de Pandas

Autres extensions