Función Pandas df.to_excel()

Python 常用函数Funciones comunes de Pandas


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ámetrosTipoDescripciónValor predeterminado
excel_writerstr, ExcelWriter, path object, file-like objectRuta del archivo o objeto ExcelWriterObligatorio
sheet_namestrNombre de la hoja de cálculo'Sheet1'
na_repstrRepresentación de valores faltantes''
float_formatstrFormato de números de punto flotanteNone
columnslistEspecificar las columnas a exportarNone
headerboolSi exportar los nombres de las columnasTrue
indexboolSi exportar el índiceTrue
index_labelstrNombre de la columna de índiceNone
startrowintFila de inicio de los datos (comienza en 0)0
startcolintColumna de inicio de los datos (comienza en 0)0
enginestrMotor 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 pandas as pd
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 configurarindex=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

import pandas as pd

# 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.
  • EnwithDentro 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

import pandas as pd

# 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

import pandas as pd

# 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 deworkbook.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。
  • Usarxlsxwriterel motor requiere instalar:pip install xlsxwriter。
  • Por defecto se exporta el índice; si no lo necesita, puede configurarindex=False。
  • Al exportar múltiples hojas de cálculo, usepd.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.

Python 常用函数Funciones comunes de Pandas

Otras extensiones