Función Pandas DataFrame DataFrame.to_excel()

Jinku Hu 30 enero 2023
  1. Sintaxis de pandas.DataFrame.to_excel()
  2. Códigos de ejemplo: Pandas DataFrame.to_excel()
  3. Códigos de ejemplo: Pandas DataFrame.to_excel() Con ExcelWriter
  4. Códigos de ejemplo: Pandas DataFrame.to_excel para añadir a un archivo de Excel existente
  5. Códigos de ejemplo: Pandas DataFrame.to_excel para escribir múltiples hojas
  6. Códigos de ejemplo: Pandas DataFrame.to_excel con el parámetro header
  7. Códigos de ejemplo: Pandas DataFrame.to_excel con index = False
  8. Códigos de ejemplo: Pandas DataFrame.to_excel Con el parámetro index_label
  9. Códigos de ejemplo: Pandas DataFrame.to_excel con el parámetro float_format
  10. Códigos de ejemplo: Pandas DataFrame.to_excel con el parámetro freeze_panes
Función Pandas DataFrame DataFrame.to_excel()

La función Python Pandas DataFrame.to_excel(values) vuelca los datos del dataframe a un archivo de Excel, en una sola hoja o en varias hojas.

Sintaxis de pandas.DataFrame.to_excel()

DataFrame.isin(
    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,
    encoding=None,
    inf_rep="inf",
    verbose=True,
    freeze_panes=None,
)

Parámetros

excel_writer La ruta del archivo de Excel o el existente pandas.ExcelWriter
sheet_name Nombre de la hoja a la que el DataFrame se vuelca
na_rep Representación de valores nulos.
float_format Formato de los números float
header Especifique el encabezado del archivo de Excel generado.
index Si es True, escribe el Dataframe index en el Excel.
index_label Etiqueta de la columna para la columna del índice.
startrow La fila de la celda superior izquierda para escribir los datos en el Excel.
Por defecto es 0
startcol La columna de la celda superior izquierda para escribir los datos en el Excel.
Por defecto es 0
engine Parámetro opcional para especificar el motor a utilizar. openyxl o xlswriter
merge_cells Fusionar el MultiIndex con las células fusionadas
encoding Codificación del archivo de salida de Excel. Sólo es necesario si se usa el escritor xlwt, otros escritores soportan Unicode de forma nativa.
inf_rep Representación del infinito. Por defecto es inf
verbose Si True, los registros de errores consisten en más información
freeze_panes Especifica la parte inferior y la parte derecha del panel congelado. Es de base única, pero no de base cero.

Retorna

Nadie.

Códigos de ejemplo: Pandas DataFrame.to_excel()

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

dataframe.to_excel('test.xlsx')

La llamada DataFrame es

   Attendance    Name  Marks
0          60  Olivia     90
1         100    John     75
2          80   Laura     82
3          78     Ben     64
4          95   Kevin     45

Se crea test.xlsx.

Pandas DataFrame to_excel

Códigos de ejemplo: Pandas DataFrame.to_excel() Con ExcelWriter

El ejemplo anterior utiliza la ruta del archivo como el excel_writer, y también podríamos utilizar pandas.Excelwriter para especificar el archivo excel que el dataframe vuelca.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer)

Códigos de ejemplo: Pandas DataFrame.to_excel para añadir a un archivo de Excel existente

import pandas as pd
import openpyxl

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx", mode="a", engine="openpyxl") as writer:
    dataframe.to_excel(writer, sheet_name="new")

Deberíamos especificar el motor como openpyxl pero no como xlswriter por defecto; de lo contrario, obtendremos el error de que xlswriter no soporta el modo append.

ValueError: Append mode is not supported with xlsxwriter!

openpyxl debe ser instalado e importado porque no es parte de pandas.

pip install openpyxl

Pandas DataFrame to_excel - adjuntar hoja

Códigos de ejemplo: Pandas DataFrame.to_excel para escribir múltiples hojas

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, sheet_name="Sheet1")
    dataframe.to_excel(writer, sheet_name="Sheet2")

Vuelca el objeto del DataFrame tanto a la Sheet1 como a la Sheet2.

También puede escribir diferentes datos en múltiples hojas si especifica el parámetro columns.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, columns=["Name", "Attendance"], sheet_name="Sheet1")
    dataframe.to_excel(writer, columns=["Name", "Marks"], sheet_name="Sheet2")

Códigos de ejemplo: Pandas DataFrame.to_excel con el parámetro header

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, header=["Student", "First Name", "Score"])

El encabezado predeterminado en el archivo de Excel creado es el mismo que el de los nombres de las columnas de los cuadros de datos. El parámetro header especifica el nuevo encabezado para reemplazar el predeterminado.

Pandas DataFrame to_excel - cambiar el nombre de la cabecera

Códigos de ejemplo: Pandas DataFrame.to_excel con index = False

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, index=False)

index=False especifica que DataFrame.to_excel() genera un archivo de Excel sin fila de encabezamiento.

Códigos de ejemplo: Pandas DataFrame.to_excel Con el parámetro index_label

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, index_label="id")

index_label='id' establece que el nombre de la columna del índice es id.

Pandas DataFrame to_excel - establece la etiqueta de índice

Códigos de ejemplo: Pandas DataFrame.to_excel con el parámetro float_format

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, float_format="%.1f")

float_format="%.1f" especifica que el número flotante tiene dos dígitos float.

Códigos de ejemplo: Pandas DataFrame.to_excel con el parámetro freeze_panes

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Marks": [90, 75, 82, 64, 45],
    }
)

with pd.ExcelWriter("test.xlsx") as writer:
    dataframe.to_excel(writer, freeze_panes=(1, 1))

freeze_panes=(1,1) especifica que el archivo de Excel tiene la fila superior congelada y la primera columna congelada.

Pandas DataFrame to_excel - freeze_panes

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - Pandas DataFrame