HOWTO · Pandas

Exportar un DataFrame de Pandas a un archivo de Excel

Este tutorial representa varios métodos sobre cómo exportar un DataFrame de pandas a un archivo de Excel

En esta página

Exporta un DataFrame de Pandas a un libro de Excel con DataFrame.to_excel(). Usa index=False si no quieres que las etiquetas de fila aparezcan como una columna de la hoja. Usa ExcelWriter para escribir varias tablas en un mismo libro o configurar el motor de escritura.

Exportar un DataFrame a un archivo de Excel con to_excel()

Llama a to_excel() con un nombre de archivo para guardar un DataFrame. De forma predeterminada, Pandas escribe el índice del DataFrame en la primera columna de la hoja; pasa index=False si quieres que la hoja contenga solo las columnas con nombre del DataFrame. Consulta la referencia de DataFrame.to_excel() para ver las opciones disponibles.

Este ejemplo crea una pequeña tabla de ventas y escribe sus columnas en sales.xlsx, dentro del directorio de trabajo actual. Pandas selecciona un motor de escritura de Excel instalado para el archivo .xlsx; si el entorno no cuenta ya con uno, instala un motor compatible, como openpyxl o XlsxWriter.

import pandas as pd

sales = pd.DataFrame(
    {
        "product": ["Keyboard", "Mouse"],
        "units": [12, 25],
    }
)
sales.to_excel("sales.xlsx", index=False)
print("Saved sales.xlsx")
Saved sales.xlsx

El libro guardado contiene las columnas product y units, sin una columna adicional para el índice. Estas etiquetas de columna permanecen en inglés en el ejemplo sin cambios. Para incluir las etiquetas de fila, omite index=False. El proceso resuelve un nombre de archivo relativo desde su directorio de trabajo actual; indica una ruta absoluta o una ruta que incluya el directorio para guardar el archivo en otro lugar.

Elige cómo tratar el índice según el uso que tendrá la hoja de cálculo. Consérvalo si contiene etiquetas de fila significativas, como identificadores que no estén ya guardados en una columna. Desactívalo si los lectores solo deben ver las columnas de datos con nombre o si otro sistema espera un conjunto fijo de encabezados. Puedes elegir lo mismo en cada llamada a to_excel(), incluidas las llamadas realizadas mediante ExcelWriter.

Elige una ruta en la que el proceso pueda escribir y, si hace falta, crea primero el directorio contenedor: Pandas escribe el archivo del libro, pero no crea los directorios que falten. También puedes pasar una ruta completa para que el destino no dependa del directorio desde el que se inicia el script. Estos detalles ayudan a encontrar el libro cuando ejecutas código desde un editor, un cuaderno o una tarea programada.

Escribir un DataFrame con ExcelWriter

Usa ExcelWriter como administrador de contexto si necesitas controlar la creación del libro o escribir más de un DataFrame. Al terminar el bloque, el administrador de contexto cierra y finaliza el libro. De forma predeterminada, Pandas selecciona un motor de escritura de Excel instalado; si hace falta, instala uno compatible, como openpyxl o XlsxWriter.

import pandas as pd

students = pd.DataFrame(
    {
        "student": ["Sam", "Ali", "Sara"],
        "marks": [88, 93, 79],
    }
)

with pd.ExcelWriter("student-results.xlsx") as writer:
    students.to_excel(writer, sheet_name="Results", index=False)
print("Saved student-results.xlsx")
Saved student-results.xlsx

El escritor recibe el DataFrame mediante to_excel(), y sheet_name establece la etiqueta de la pestaña de la hoja. Usa un administrador de contexto en vez de llamar directamente al método save() del escritor; así se finaliza el libro incluso si el bloque termina antes de lo previsto. El archivo se crea en relación con el directorio de trabajo actual, a menos que indiques otra ruta.

Exportar varios DataFrames a hojas de Excel separadas

Pasa el mismo objeto ExcelWriter a la llamada a to_excel() de cada DataFrame para colocar varias tablas en un solo libro. Asigna un sheet_name distinto a cada llamada para que los lectores encuentren cada tabla en su propia hoja. El siguiente ejemplo escribe tres tablas de asignaturas en un solo libro; requiere Pandas y un motor de escritura de Excel instalado.

import pandas as pd

science = pd.DataFrame({"student": ["Ali", "Umar"], "score": [88, 60]})
computing = pd.DataFrame({"student": ["Ali", "Umar"], "score": [73, 63]})
arts = pd.DataFrame({"student": ["Ali", "Umar"], "score": [95, 63]})

with pd.ExcelWriter("student-results.xlsx") as writer:
    science.to_excel(writer, sheet_name="Science", index=False)
    computing.to_excel(writer, sheet_name="Computing", index=False)
    arts.to_excel(writer, sheet_name="Arts", index=False)
print("Saved student-results.xlsx with three worksheets")
Saved student-results.xlsx with three worksheets

Las tres llamadas se dirigen al mismo libro, y los valores de sheet_name determinan los nombres de las hojas. Usa nombres distintos que respeten los límites de longitud de nombres de hoja de Excel. Si Pandas indica que no hay disponible ningún motor de escritura de Excel, instala uno compatible, como openpyxl o XlsxWriter, en el entorno donde se ejecuta el script.