Cómo exportar un DataFrame a Excel con pandas en Python
Exportar un DataFrame a Excel con pandas es una de las formas más rápidas de compartir resultados de análisis con colegas que viven en Excel. En lugar de enviar datos en bruto, entregas un archivo .xlsx limpio, con las columnas correctas y listo para abrir. Esta guía muestra cómo hacerlo, desde el caso más simple hasta escribir varias hojas en el mismo archivo.
Requisitos previos
- Python 3.9 o superior instalado.
- Las bibliotecas
pandasyopenpyxl(openpyxles el motor que escribe archivos .xlsx). - Un DataFrame con datos. En este ejemplo creamos uno a partir de un diccionario, pero sirve cualquier origen: CSV, base de datos o API.
Paso 1: Instalar pandas y openpyxl
Antes de exportar a Excel, asegúrate de tener ambas bibliotecas instaladas. pandas gestiona los datos y openpyxl escribe el formato .xlsx que abre Excel. Si usas entornos virtuales, activa el tuyo antes de instalar.
pip install pandas openpyxl
Paso 2: Crear o cargar el DataFrame
Para el ejemplo usamos un pequeño DataFrame de ventas. En la práctica, estos datos pueden venir de un archivo CSV, de una consulta SQL o de una API — el paso de exportación es siempre igual, sea cual sea el origen de los datos.
import pandas as pd
dados = {
"Produto": ["Teclado", "Rato", "Monitor"],
"Unidades": [12, 30, 8],
"Preco": [19.90, 9.50, 149.00],
}
df = pd.DataFrame(dados)
print(df)
Paso 3: Exportar el DataFrame a Excel
La exportación básica usa el método to_excel. El parámetro index=False evita escribir la columna de índice de pandas, que casi nunca interesa en el archivo final y suele confundir a quien abre la hoja.
df.to_excel("vendas.xlsx", index=False)
Esto crea un archivo vendas.xlsx en la misma carpeta que el script, con una hoja llamada "Sheet1". Para dar nombre a la hoja, usa el parámetro sheet_name:
df.to_excel("vendas.xlsx", sheet_name="Vendas", index=False)
Si aparece el error "No module named 'openpyxl'", instala el motor con pip install openpyxl. Es lo que pandas usa para escribir archivos .xlsx.
Paso 4: Escribir varios DataFrames en hojas diferentes
Cada llamada a to_excel con un nombre de archivo crea un libro nuevo y sobrescribe el anterior. Por eso, para combinar más de una tabla en el mismo archivo — por ejemplo, un detalle y un resumen — usamos ExcelWriter como gestor de contexto (un bloque with). Cada DataFrame se escribe en su propia hoja.
resumo = df.groupby("Produto")["Unidades"].sum().reset_index()
with pd.ExcelWriter("relatorio.xlsx", engine="openpyxl") as writer:
df.to_excel(writer, sheet_name="Detalhe", index=False)
resumo.to_excel(writer, sheet_name="Resumo", index=False)
El bloque with garantiza que el archivo se escribe y se cierra correctamente al final, sin que tengas que llamar a ningún método de guardado manualmente.
Paso 5: Elegir columnas y tratar valores faltantes
El método to_excel acepta parámetros útiles para ajustar el resultado: columns elige y ordena las columnas a exportar, na_rep sustituye los valores faltantes por un texto a tu elección y startrow deja filas libres en la parte superior (por ejemplo, para un título).
df.to_excel(
"vendas.xlsx",
sheet_name="Vendas",
index=False,
columns=["Produto", "Unidades"],
na_rep="s/ dados",
)
Verificar el resultado
Abre el archivo generado en Excel y confirma que los datos aparecen en las hojas correctas y sin la columna de índice. Si prefieres validar en código, vuelve a leer el archivo con pandas y compáralo con el original:
verificacao = pd.read_excel("vendas.xlsx", sheet_name="Vendas")
print(verificacao.head())
Si el resultado muestra las mismas filas que exportaste, la exportación salió bien.
Conclusión
Con to_excel y ExcelWriter pasas de datos en Python a informes en Excel en pocas líneas, lo que resulta ideal para compartir resultados con quien no programa. Como próximos pasos, prueba a automatizar un informe semanal o a aplicar formato avanzado — anchos de columna y colores — directamente con openpyxl. ¿Qué tarea repetitiva de tu equipo podrías eliminar escribiendo el resultado directamente en Excel?