Fonction Pandas df.to_excel()
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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
| excel_writer | str, ExcelWriter, objet de chemin, objet de type fichier | Chemin de fichier ou objet ExcelWriter | Requis |
| sheet_name | str | Nom de la feuille | 'Sheet1' |
| na_rep | str | Représentation des valeurs manquantes | '' |
| float_format | str | Format des nombres à virgule flottante | Aucune |
| columns | liste | Colonnes à exporter | Aucune |
| header | bool | Indique s'il faut exporter les noms de colonnes | True |
| index | bool | Indique s'il faut exporter l'index | True |
| index_label | str | Nom de la colonne d'index | Aucune |
| startrow | int | Ligne de début des données (index 0) | 0 |
| startcol | int | Colonne de début des données (index 0) | 0 |
| engine | str | Moteur 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 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éfinir
index=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
# 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.- Dans
withDans 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
# 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
# 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.- Via
workbook.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。 - Utilisation
xlsxwriterle moteur nécessite l'installation :pip install xlsxwriter。 - Par défaut, l'index est exporté ; si ce n'est pas nécessaire, définissez
index=False。 - Lors de l'exportation de plusieurs feuilles de calcul, utilisez
pd.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.
Fonctions courantes de Pandas