Función Pandas df.to_excel()
to_excel()es un método de DataFrame, que se utiliza para exportar datos a un archivo en formato Excel, admite.xlsxy.xlsformatos.
Excel es la herramienta de análisis de datos más utilizada en el trabajo empresarial,to_excel()Puede exportar un DataFrame de pandas a un archivo de Excel bien formateado. Admite funciones avanzadas como múltiples hojas de cálculo, configuración de formato de celdas, inserción de fórmulas, etc., y es muy adecuado para la salida de informes de datos y resultados de análisis de datos.
Sintaxis básica y parámetros
Formato de sintaxis
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', ...)
Descripción de parámetros
| Parámetros | Tipo | Descripción | Valor predeterminado |
|---|---|---|---|
| excel_writer | str, ExcelWriter, path object, file-like object | Ruta del archivo o objeto ExcelWriter | Obligatorio |
| sheet_name | str | Nombre de la hoja de cálculo | 'Sheet1' |
| na_rep | str | Representación de valores faltantes | '' |
| float_format | str | Formato de números de punto flotante | None |
| columns | list | Especificar las columnas a exportar | None |
| header | bool | Si exportar los nombres de las columnas | True |
| index | bool | Si exportar el índice | True |
| index_label | str | Nombre de la columna de índice | None |
| startrow | int | Fila de inicio de los datos (comienza en 0) | 0 |
| startcol | int | Columna de inicio de los datos (comienza en 0) | 0 |
| engine | str | Motor de escritura: 'openpyxl', 'xlsxwriter' | None |
Valor de retorno
- Tipo de retorno:
None - Escribe directamente los datos en el archivo de Excel especificado, sin valor de retorno.
Ejemplos
A través de los siguientes ejemplos, domine completamenteto_excel()los diversos usos.
Ejemplo 1: Uso básico - Exportar a archivo de Excel
Primero cree un DataFrame, luego useto_excel()para exportar a un archivo de Excel.
Ejemplo
import openpyxl # Se necesita instalar: pip install openpyxl
# Crear un DataFrame de ejemplo
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)
# Ejemplo 1a: La exportación más básica
# excel_writer: ruta del archivo (obligatorio)
df.to_excel('employees.xlsx', index=False)
print(Exportado a employees.xlsx)
print()
# Ejemplo 1b: Exportar y verificar leyendo
df_check = pd.read_excel('employees.xlsx')
print(Verificación de lectura:)
print(df_check)
print()
# Ejemplo 1c: Especificar el nombre de la hoja de cálculo
df.to_excel('employees_sheet.xlsx', sheet_name='Tabla de empleados', index=False)
print("Se ha exportado a employees_sheet.xlsx (hoja: Empleados)")
Resultado esperado al ejecutar:
已导出到 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 (工作表: 员工表)
Análisis del código:
to_excel()Debe especificarexcel_writerel parámetro, es decir, la ruta del archivo.- Por defecto se exporta el índice; puede configurar
index=Falsepara no exportar el índice. sheet_nameEl parámetro permite personalizar el nombre de la hoja de cálculo (por defecto es Sheet1).
Ejemplo 2: Exportar múltiples hojas de cálculo
UsandoExcelWriterpuede escribir múltiples DataFrames en diferentes hojas de trabajo del mismo archivo de Excel.
Ejemplo
# Crear múltiples 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']
})
# Ejemplo 2a: Usar ExcelWriter para escribir múltiples hojas de cálculo
# mode='w' es el modo predeterminado, sobrescribirá archivos existentes
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(Exportado a multi_sheet.xlsx (con 3 hojas de trabajo))
print()
# Verificar: leer todas las hojas de cálculo
all_sheets = pd.read_excel('multi_sheet.xlsx', sheet_name=None)
print(Todas las hojas de cálculo:)
for name, df in all_sheets.items():
print(f"n--- {name} ---")
print(df)
Resultado esperado al ejecutar:
已导出到 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
Análisis del código:
pd.ExcelWriteres un administrador de contexto (context manager), utilizado para escribir múltiples hojas de cálculo.- En
withDentro del bloque, se puede llamar varias veces ato_excel(), especificando cada vez un nombre de hoja de cálculo diferente. - De esta manera, se pueden organizar los datos relevantes en el mismo archivo de Excel.
Ejemplo 3: Formato y posición personalizados
Permite controlar la posición inicial de los datos, el formato y el manejo de los valores faltantes.
Ejemplo
# Crear un DataFrame con valores faltantes y números de punto flotante
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']
})
# Ejemplo 3a: Personalizar la representación de valores faltantes
df.to_excel('output_na.xlsx', index=False, na_rep='N/A')
print("Exportado (valores faltantes personalizados)")
# Ejemplo 3b: Formatear números de punto flotante
# float_format usa la sintaxis de cadenas de formato de Python
df.to_excel('output_float.xlsx', index=False, float_format='%.2f')
print(Exportado (flotantes con 2 decimales))
# Ejemplo 3c: Exportar solo algunas columnas
df.to_excel('output_cols.xlsx', index=False, columns=['name', 'score'])
print(Exportado (solo incluye las columnas name y score))
# Ejemplo 3d: Especificar la posición inicial de los datos
# startrow y startcol controlan la posición inicial de los datos en las celdas
with pd.ExcelWriter('output_position.xlsx', engine='openpyxl') as writer:
# Escribir información de encabezado
writer.sheets['Sheet1'].cell(1, 1).value = Tabla de calificaciones de empleados
writer.sheets['Sheet1'].cell(2, 1).value = 'Tiempo de estadísticas: 2024-01-01'
# Escribir datos desde la fila 4
df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=3)
print("Exportado (posición inicial especificada)")
# Ejemplo 3e: No exportar índice ni nombres de columnas
df.to_excel('output_no_header.xlsx', index=False, header=False)
print(Exportado (sin índice ni nombres de columnas))
# Ver el contenido del archivo generado
print(n Contenido de cada archivo:)
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)
Resultado esperado al ejecutar:
已导出(自定义缺失值)
已导出((浮点数保留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
...
Análisis del código:
na_repEl parámetro personaliza la representación de cadena de los valores faltantes.float_formatEl parámetro usa cadenas de formato de Python, como'%.2f'conservar dos decimales.columnsEl parámetro exporta solo las columnas especificadas.startrowystartcolPuede controlar la posición de la celda inicial de los datos en Excel.
Ejemplo 4: Usar el motor xlsxwriter para configurar el formato
El motor xlsxwriter ofrece funciones de formato más completas.
Ejemplo
# Se necesita instalar xlsxwriter: pip install xlsxwriter
# Crear 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']
})
# Ejemplo 4: Usar xlsxwriter para configurar el formato
# Se debe instalar primero: pip install xlsxwriter
with pd.ExcelWriter('formatted.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='Employees', index=False)
# Obtener los objetos de libro y hoja de trabajo
workbook = writer.book
worksheet = writer.sheets['Employees']
# Definir formato
header_format = workbook.add_format({
'bold': True, # Negrita
'fg_color': '#4472C4', # Color de fondo (azul)
'font_color': 'white', # Color de fuente (blanco)
'align': 'center', # Centrado horizontal
'valign': 'vcenter', # Centrado vertical
'border': 1 # Borde
})
# Establecer ancho de columna
worksheet.set_column('A:A', 10) # Ancho de la columna A: 10
worksheet.set_column('B:B', 8)
worksheet.set_column('C:C', 12)
worksheet.set_column('D:D', 12)
# Escribir encabezado formateado
for col_num, column_name in enumerate(df.columns.values):
worksheet.write(0, col_num, column_name, header_format)
print("Archivo Excel con formato exportado: formatted.xlsx")
print(El formato incluye: encabezado en negrita, fondo azul, texto blanco, centrado, bordes, configuración del ancho de columna.)
Resultado esperado al ejecutar:
先安装 xlsxwriter 库再运行此示例。 已导出带格式的 Excel 文件: formatted.xlsx 格式包括:制作 表头加粗、蓝色背景、白字、 居中、边框、列宽 导出 使用 openpyxl 引擎 导入 xlsxwriter 引擎支持更丰富的格式设置,如单元格样式、条件格式、图表等 如果需要更高级的 Excel 格式设置,建议: 1. 使用 openpyxl 直接操作 2. 使用 xlsxwriter 获得更好的性能和格式支持
Análisis del código:
xlsxwriterEl motor ofrece funciones de formato más completas.- A través de
workbook.add_format()se crea el objeto de formato. - Se pueden configurar la fuente, el color de fondo, los bordes, la alineación, etc.
worksheet.set_column()Establece el ancho de columna.
Notas importantes
- Usar
.xlsxel formato requiere instalar.openpyxl:pip install openpyxl。 - Usar
xlsxwriterel motor requiere instalar:pip install xlsxwriter。 - Por defecto se exporta el índice; si no lo necesita, puede configurar
index=False。 - Al exportar múltiples hojas de cálculo, use
pd.ExcelWriterel administrador de contexto. startrowystartcolLa numeración comienza en 0, es decir, startrow=0 representa la primera fila.
Resumen
to_excel()es el método central para exportar un DataFrame a un archivo de Excel. Es potente y admite múltiples hojas de cálculo en un solo archivo, formato personalizado, control de la posición inicial, etc.
En el trabajo real, Excel es el formato de informe de datos más utilizado,to_excel()puede satisfacer la mayoría de las necesidades de exportación. Si se necesitan configuraciones de formato más complejas, se puede usar el motor xlsxwriter o usar directamente la librería openpyxl. Se recomienda a los lectores elegir el motor y la configuración de parámetros adecuados según sus necesidades reales.
Funciones comunes de Pandas