• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Guardar y leer archivos Excel en Python

julio 30, 2018 Por Daniel Rodríguez 30 comentarios
Tiempo de lectura: 4 minutos

Excel en Python

Microsoft Excel es uno de los programas más utilizado para la visualización y análisis de datos en la empresa. La omnipresencia de este programa hace que muchos usuarios se decanten por el formato xlsx (o xls) para exportar sus conjuntos de datos. Por esto saber leer y escribir archivos Excel en Python es clave para trabajar de forma óptima en muchos entornos. A pesar de que este no sea el formato favorito de muchos científicos de datos. Ya que estos generalmente prefieren trabajar con archivos en formato CSV.

En esta entrada se va a repasar cómo se puede guardar y leer archivos en formato Excel en Python utilizando la librería pandas.

Guardado de archivos Excel en Python

Antes de poder guardar un archivo Excel desde Python es necesario disponer de un dataframe. Por lo que se puede crear uno de ejemplo, como se hizo al hablar de los archivos CVS:

import pandas as pd

data = {'first_name': ['Sigrid', 'Joe', 'Theodoric','Kennedy', 'Beatrix', 'Olimpia', 'Grange', 'Sallee'],
        'last_name': ['Mannock', 'Hinners', 'Rivers', 'Donnell', 'Parlett', 'Guenther', 'Douce', 'Johnstone'],
        'age': [27, 31, 36, 53, 48, 36, 40, 34],
        'amount_1': [7.17, 1.90, 1.11, 1.41, 6.69, 4.62, 1.01, 4.88],
        'amount_2': [8.06,  "?", 5.90,  "?",  "?", 7.48, 4.37,  "?"]}

df = pd.DataFrame(data, columns = ['first_name', 'last_name', 'age', 'amount_1', 'amount_2'])

Ahora para exportar los datos en formato Excel simplemente se ha utilizar el método to_excel del dataframe. En esta ocasión se ha de indicar el archivo en el que se desea guardar los datos mediante una cadena de texto. Opcionalmente se puede indicar también el nombre de la hoja del libro Excel mediante la propiedad sheet_name. El contenido del archivo generado el siguiente código se muestra en la figura.

Faker en Python: qué es, para qué sirve y cómo generar datos sintéticos realistas
En Analytics Lane
Faker en Python: qué es, para qué sirve y cómo generar datos sintéticos realistas

df.to_excel('example.xlsx', sheet_name='example')
Ejemplo archivo Excel

Publicidad


Lectura de archivos Excel en Python

El proceso de lectura se realiza con el método read_excel de pandas. En el caso de que el libro contenga más de una hoja se puede indicar el nombre de la que se desea importar mediante el método sheet_name. Cuando no se indique una cargara el contenido de la primera hoja del libro.

df = pd.read_excel('example.xlsx', sheet_name='example')
	first_name	last_name	age	amount_1	amount_2
0	Sigrid		Mannock		27	7.17		8.06
1	Joe		Hinners		31	1.90		?
2	Theodoric	Rivers		36	1.11		5.9
3	Kennedy		Donnell		53	1.41		?
4	Beatrix		Parlett		48	6.69		?
5	Olimpia		Guenther	36	4.62		7.48
6	Grange		Douce		40	1.01		4.37
7	Sallee		Johnstone	34	4.88		?

Por defecto el método utiliza la primera línea del fichero como cabecera para asignar los nombres a las columnas. En el caso de que el archivo no disponga de cabecera se puede evitar este comportamiento asignando None a la propiedad head.

df = pd.read_excel('example.xlsx', header=None)
	0	1		2		3	4		5
0	NaN	first_name	last_name	age	amount_1	amount_2
1	0.0	Sigrid		Mannock		27	7.17		8.06
2	1.0	Joe		Hinners		31	1.9		?
3	2.0	Theodoric	Rivers		36	1.11		5.9
4	3.0	Kennedy		Donnell		53	1.41		?
5	4.0	Beatrix		Parlett		48	6.69		?
6	5.0	Olimpia		Guenther	36	4.62		7.48
7	6.0	Grange		Douce		40	1.01		4.37
8	7.0	Sallee		Johnstone	34	4.88		?

El archivo que se ha utilizado en esta ocasión tiene cabecera, por lo que esta se ha importado como la primera fila. En caso de que se desee ignorar una o más filas se le puede indicar mediante la propiedad skiprows.

df = pd.read_excel('example.xlsx', header=None, skiprows=1)
	0	1		2		3	4	5
0	0	Sigrid		Mannock		27	7.17	8.06
1	1	Joe		Hinners		31	1.90	?
2	2	Theodoric	Rivers		36	1.11	5.9
3	3	Kennedy		Donnell		53	1.41	?
4	4	Beatrix		Parlett		48	6.69	?
5	5	Olimpia		Guenther	36	4.62	7.48
6	6	Grange		Douce		40	1.01	4.37
7	7	Sallee		Johnstone	34	4.88	?

En el caso de que se desee indicar un nombre concreto para cada una de las columnas, difernte al de la hoja, se puede indicar mediatne la propiedad names.

df = pd.read_excel('example.xlsx',
                 skiprows = 1,
                 names=['UID', 'First Name', 'Last Name', 'Age', 'Sales #1', 'Sales #2'])
	UID	First Name	Last Name	Age	Sales #1	Sales #2
0	1	Joe		Hinners		31	1.90		?
1	2	Theodoric	Rivers		36	1.11		5.9
2	3	Kennedy		Donnell		53	1.41		?
3	4	Beatrix		Parlett		48	6.69		?
4	5	Olimpia		Guenther	36	4.62		7.48
5	6	Grange		Douce		40	1.01		4.37
6	7	Sallee		Johnstone	34	4.88		?

Conclusiones

En esta entrada se ha explicado cómo trabajar con archivos Excel en Python gracias a la librería pandas. El formato de Microsoft Excel es uno de los más utilizados en muchos entornos, por lo que conocer estas herramientas puede ahorrar mucho trabajo.

Lo aprendido en esta entrada permite aumentar el conjunto de herramientas para trabajar con archivos de datos en Python. Completando lo visto para archivos CSV y JSON que se han visto en entradas anteriores.

En el caso de que se quiera guardar más de un DataFrame en un mismo libro de Excel es necesario guárdalo en diferentes hojas, lo que requiere llevar a cabo unos pasos adicionales.

Imágenes: Pixabay (Pexels)

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 3.6 / 5. Votos emitidos: 10

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Faker en Python: qué es, para qué sirve y cómo generar datos sintéticos realistas
  • Probabilidades y tests: por qué un resultado positivo no significa lo que crees
  • JSON en bases de datos: cuándo es buena idea y cuándo no
  • Roles en ciencia de datos: Guía completa de perfiles técnicos
  • Exactitud, precisión, recall… qué mide realmente cada métrica (y qué no)
  • Hardening de SSH en Rocky Linux 9: cómo desactivar KEX débiles y reforzar la seguridad
  • Nueva herramienta en Analytics Lane: generador de contraseñas seguras y frases de contraseña
  • Hardening de NGINX en 2026: configuración segura básica paso a paso

Publicado en: Python Etiquetado como: Pandas

Interacciones con los lectores

Comentarios

  1. Luis Enrique dice

    mayo 26, 2019 a las 6:43 am

    consulta, cuando ejecuto este paso df.to_excel(‘example.xlsx’, sheet_name=’example’) no me genera el archivo excel en que ruta se guarda?

    Responder
    • Daniel Rodríguez dice

      mayo 26, 2019 a las 9:45 am

      Al indicar solamente el nombre del archivo, no una ruta absoluta, este se guardará en la carpeta de trabajo actual. La carpeta en la que se está ejecutando Python se puede obtener con os.getcwd(). Es decir, se puede usar el siguiente código para obtener la ruta:

      import os
      os.getcwd()

      Responder
  2. Tirso Meneses dice

    enero 19, 2020 a las 10:21 am

    Hola Daniel, gracias por tu aporte en relación con el uso de excel, lo estoy usando y me resulta leer y escribir pero si deseo escribir más de una hoja en el mismo archivo excel, uso la instrucción
    df.to_excel(“archivo”, sheet:name=”hoja1″, index=False)
    más de una vez, para agregar una hoja al archivo, sobreescribe el archivo y finalmente obtengo un archivo excel sólo con la última hoja que mandé a grabar, las otras se pierden.
    ¿Me puedes ayudar para solucionar este problema?
    Muchas gracias de antemano.

    Responder
    • Daniel Rodríguez dice

      enero 19, 2020 a las 2:38 pm

      Gracias, en esto casos hay que hacer un paso adiciona que es crear un objeto ExcelWriter para que no se sobrescriban los archivos. Por ejemplo, para guardar dos dataframees se puede hacer:

      writer = pd.ExcelWriter('archivo.xlsx')
      df1.to_excel(writer, sheet_name="hoja1", index=False)
      df2.to_excel(writer, sheet_name="hoja2", index=False)
      writer.save()
      writer.close()

      Responder
  3. Ricardo dice

    febrero 18, 2020 a las 9:47 pm

    Excelente!!! Me pasaba lo mismo! Gracias!

    Responder
  4. Ireth dice

    agosto 5, 2020 a las 5:41 am

    Hola Daniel! muchas gracias por tu aporte!

    estoy aprendiendo y me cuesta cada cosa.. probé esas líneas que ponés, me hizo instalar un montón de cosas jeje pero pude ejecutar.. lo que no me funcionó y no entiendo por qué es la línea donde pones df2.to_excel… esa tuve que comentar,
    luego sí me generó el archivo con información.. y esa info de dónde la saca??
    otra cosita, quise agregar
    import os
    os.getcwd()

    pero no se muestra nada.. o qué debo poner entre ()?

    Muchas gracias y saludos!

    Responder
    • Daniel Rodríguez dice

      agosto 5, 2020 a las 11:05 am

      En el ejemplo usamos la librería Pandas, por eso puede que fuese necesario instalar algunas cosas. Una librería que facilita mucho el manejo de tablas de datos.

      En cuanto a las preguntas en las variables df se guardan objetos DataFrame de Pandas que son objetos en los que se guardan los datos, de ahí salen los datos. Por otro lado, el error puede ser debido a varias causas, como que la carpeta donde se inicio el proceso ya no exista. Pero es complicado saberlo sin el error en concreto.

      Responder
  5. franklin chiluisa dice

    agosto 12, 2020 a las 10:40 pm

    Estimado
    Como puedo Importe varios archivos de Excel en python y concatenelos en un marco de datos.
    Mi ruta es la siguiente:
    D:\1.2 CARPETAS PARA REPORTES\Totaten x años\2020
    Mi carpeta 2020 tiene los siguientes archivos:
    Enero 2020
    febrero 2020
    marzo 2020
    Cada archivo excel tiene dos o mas hojas ejemplo
    HS_T7T5TEN_20200301_20200331 1
    HS_T7T5TEN_20200301_20200331 2
    HS_T7T5TEN_20200301_20200331 3
    Quisiera unificar todos estos archivos en uno solo por favor

    Responder
    • Daniel Rodríguez dice

      agosto 13, 2020 a las 12:09 pm

      Para trabajar con múltiples hojas hay que hacer unos pasos adicionales que se explican en esta entrada.

      Responder
      • franklin Chiluisa dice

        febrero 28, 2021 a las 7:01 pm

        Estimado
        Hice esto pero lo que veo es que solo me lee las primeras hojas como podría mejorarlo para que me lee todas las hojas existentes en cada archivo.

        link=r’D:\1.2 CARPETAS PARA REPORTES\Totaten x años\2021′
        os.chdir(link);
        lista_archivos= glob.glob(link+os.sep+’*.xlsx’)
        archivos = []
        for i in lista_archivos:
        a= pd.read_excel(i)
        archivos.append(a)

        a=pd.concat(archivos,ignore_index=False)

        Responder
        • Daniel Rodríguez dice

          febrero 28, 2021 a las 9:28 pm

          Para leer habría que obtener primero el listado de hojas en un libro Excel y posteriormente iterar sobre estas. Para obtener el listado se puede usar la clase ExcelFile de Pandas. Por ejemplo, algo como

          excel_file = ‘file.xlsx’
          xls = pd.ExcelFile(excel_file)

          for name in xls.sheet_names:
          pd.read_excel(excel_file, name)

          Responder
  6. Florencia Fernández dice

    agosto 20, 2020 a las 6:59 am

    Gracias, es de mucha ayuda su aporte. Le hago una consulta, tengo un bucle anidado y guardo los valores que genera en una lista; debo exportar a un excel sólo algunas variables de esa lista. Cómo puedo hacer para para exportar algunas partes de una lista?
    Desde ya gracias y saludos!

    Responder
    • Daniel Rodríguez dice

      agosto 21, 2020 a las 12:26 pm

      Hay varias maneras, se pueden seleccionar los elementos de la lista o convertir esta a un DataFrame y utilizar los métodos iloc o loc.

      Responder
  7. Jordi dice

    noviembre 12, 2020 a las 3:32 pm

    Hola, tengo una duda urgente. Estoy haciendo un proyecto con tkinter. Y cuando vuelvo a ingresar valores me los reemplaza. Como puedo hacer que se sigan añadiendo filas de valores? Muchas gracias

    Responder
    • Daniel Rodríguez dice

      noviembre 12, 2020 a las 4:15 pm

      Hola, eso es porque al guardar un archivo Excel sobrescribe todo el archivo. Si el problema es agregar una fila a la hoja se tiene que hacer en código y guardar todo. Por otro lado, si lo que se desea es trabajar con varias hojas hay que usar ExcelWriter como se explica en un comentario anterior o, más en detalle, en una entrada donde se explica cómo guardar diferente hojas en un libro de Excel.

      Responder
  8. felipe dice

    abril 20, 2021 a las 10:46 pm

    Hola a todos
    Quiera saber como puedo guardar dos dataset diferentes en un mismo excel. porque solamente se guardar un dataset:
    Dataset.to_excel(“data.xlsx”)
    Pero no se como puedo guardar dos dataset diferentes en un mismo excel.
    Muchas gracias, saludos !

    Responder
    • Daniel Rodríguez dice

      abril 21, 2021 a las 9:09 am

      Para trabajar guardar varios dataframes en un mismo libro se tiene que seguir unos pasos que se explica en esta otra entrada.

      Responder
  9. Julio dice

    junio 6, 2021 a las 3:14 pm

    como hago para instalar pandas ?

    Responder
    • Daniel Rodríguez dice

      junio 6, 2021 a las 4:46 pm

      Se puede instalar desde PyPI con pip como la mayoría de las librerías de Python:

      pip install pandas

      Responder
  10. Juan dice

    junio 29, 2021 a las 7:14 am

    Alguien a intentado poner una formula en el dataframe y al pegar la base a excel el mismo excel reconozca la formula? un consultarv por ejemplo

    Responder
    • Daniel Rodríguez dice

      junio 29, 2021 a las 9:36 am

      Según la documentación se puede hacer con XlsxWrite (https://xlsxwriter.readthedocs.io/working_with_formulas.html), pero no lo he probado.

      Responder
  11. diego dice

    abril 22, 2022 a las 3:58 am

    hola, oye tengo una base de datos de sqlite que se carga diligenciando informacion en un programa como gaho para exportar estos datos a un excel en el momento que quiera por medio de un botom????

    Responder
  12. Julio dice

    mayo 11, 2022 a las 12:09 am

    tengo un archivo excel con celdas que contienen textos de varias lineas, pero al leer el archivo con pandas , el contenido lo corta y pone puntos suspensivos….
    como hacer para obtener el contenido completo de la celda con python

    Responder
    • Daniel Rodríguez dice

      mayo 11, 2022 a las 9:42 pm

      Es un problema de configuración de Pandas, por defecto no se muestra todo el contenido de los DataFrames, eso es algo que explico como cambiar en esta otra entrada https://www.analyticslane.com/2021/08/26/pandas-mostrar-todos-los-elementos-de-un-dataframe/

      Responder
  13. daniela dice

    mayo 17, 2022 a las 3:46 am

    hola quisiera hacer un rename de columnas de un excel que tengo en una ruta y la modificacion guardarla en otra, uso este script, me aloja ok el excel pero sin la modificacion, que estoy haciendo mal?

    import openpyxl
    import pandas as pd
    import numpy as np
    import xlsxwriter

    #renombro el excel
    canje = “C:/Users/EHLJV/Documents/dpereyra/Tableros/tablero customer/Argentina/python/Crudo_Encuestas/Canje_21-22_Innoba_VF.xlsx”

    #creo dataframe y busco hoja
    df= pd.read_excel (canje, sheet_name=’Base’, engine=’openpyxl’)

    #ruta donde alojo el archivo con modificaciones
    df.to_excel(‘C:/Users/EHLJV/Documents/dpereyra/Tableros/tablero customer/Argentina/USR_FILES/CSAT__Qualtrics_Canje_2021_05_13.xlsx’, sheet_name=’Hoja1′, engine =’openpyxl’)

    df.rename(columns= {‘Contact Fields – Recipient Email’:’RecipientEmail’})

    Responder
    • Daniel Rodríguez dice

      mayo 17, 2022 a las 6:05 pm

      Bastante sencillo, en primer lugar, se guardan los datos y luego se cambia el nombre, por eso en archivo Excel están los valores originales.

      Responder
  14. Andres Vargas dice

    septiembre 28, 2022 a las 8:02 pm

    excelentes explicaciones Daniel. tengo una consulta:
    Como puedo recorer cada registro de excel y añadir un valor a la columna inmediatamente siguiente?
    ej: tengo en la columna A nombres de personas, en la columna B fechas de nacimiento, pero necesito agregar en la columna C el valor de edad de acuerdo a la comparación de la columna B con la fecha actual del Sistema…como puedo realizar la acción de recorrido y escritura… se que con una iteración..pero desconozco el método!..

    Responder
    • Daniel Rodríguez dice

      septiembre 29, 2022 a las 7:08 pm

      Una vez se importa un archivo de Excel lo que se tiene es un DataFrame, por lo que para agregar la columna con los datos. Puede ser algo tan sencillo como

      import datetime

      df['age'] = np.ceil((np.datetime64(datetime.date.today()) - pd.to_datetime(df['birthday'])) / datetime.timedelta(365))

      Responder
  15. Luis dice

    octubre 24, 2022 a las 4:49 pm

    Hola,
    Que caracteristicas o como se guarda un archivo en EXCEL *.csv para que pandas lo levante.
    Muchas veces, muuuuuuchos archivos csv no los levanta pandas y hay problemas.

    Gracias.

    Responder
    • Daniel Rodríguez dice

      octubre 25, 2022 a las 6:35 pm

      Pandas puede leer cualquier archivo en formato CSV, solamente hay que indicar las opciones necesarias como el separador de valores con sep https://www.analyticslane.com/2020/11/30/pandas-leer-archivos-csv-con-diferentes-delimitadores-en-pandas/

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Hardening de NGINX en 2026: configuración segura básica paso a paso

marzo 12, 2026 Por Daniel Rodríguez

Nueva herramienta en Analytics Lane: generador de contraseñas seguras y frases de contraseña

marzo 10, 2026 Por Daniel Rodríguez

Hardening de SSH en Rocky Linux 9: cómo desactivar KEX débiles y reforzar la seguridad

marzo 5, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • Guía definitiva para validar archivos YAML publicado el diciembre 2, 2025 | en Productividad
  • Método de Brent e implementación en Python publicado el abril 28, 2023 | en Ciencia de datos
  • pandas Pandas: Contar los valores nulos en DataFrame publicado el agosto 12, 2021 | en Python
  • NumPy NumPy: Insertar valores en matrices de NumPy publicado el agosto 24, 2021 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto