• Ir al contenido principal
  • Skip to secondary menu
  • Ir a la barra lateral primaria
  • Ir al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Noticias
    • Opinión
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Boletín
  • Contacto
  • Acerca de Analytics Lane
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • GearBest
      • GeekBuying
      • JoyBuy

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Criptografía
  • Python
  • Matlab
  • R
  • Julia
  • JavaScript
  • Herramientas
  • Opinión
  • Noticias

Guardar y leer archivos Excel en Python

julio 30, 2018 Por Daniel Rodríguez 15 comentarios

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.

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

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.

Imágenes: Pixabay (Pexels)

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 5 / 5. Votos emitidos: 4

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?

Contenido relacionado

Archivado en:Python Etiquetado con:pandas

Interacciones con los lectores

Comentarios

  1. Luis Enrique dice

    mayo 26, 2019 en 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 en 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 en 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 en 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 en 9:47 pm

    Excelente!!! Me pasaba lo mismo! Gracias!

    Responder
  4. Ireth dice

    agosto 5, 2020 en 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 en 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 en 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 en 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 en 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 en 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 en 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 en 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 en 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 en 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

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.

Publicidad


Barra lateral primaria

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

¡Síguenos en redes sociales!

  • facebook
  • instagram
  • pinterest
  • tumblr
  • twitter
  • youtube
  • github
  • telegram
  • rss

Publicidad

Tiendas afiliadas

Ayúdanos realizando tus compras sin coste adicional con los enlaces de la tienda. ¡Gracias!

Entradas recientes

Epsilon-Greedy para el Bandido Multibrazo (Multi-Armed Bandit)

febrero 26, 2021 Por Daniel Rodríguez Dejar un comentario

Introducción al paquete dplyr del Tidyverse

febrero 24, 2021 Por Daniel Rodríguez Dejar un comentario

Combinar diagramas de caja e histogramas en Python con Seaborn

febrero 22, 2021 Por Daniel Rodríguez Dejar un comentario

Publicidad

Es tendencia

  • Seleccionar filas y columnas en Pandas con iloc y loc bajo Python
  • ¿Cómo eliminar columnas y filas en un dataframe pandas? bajo Python
  • Excel en Python Guardar y leer archivos Excel en Python bajo Python
  • Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas bajo Python
  • Unir y combinar dataframes con pandas en Python bajo Python

Publicidad

Lo mejor valorado

5 (3)

Ordenar una matriz en Matlab en base a una fila o columna

5 (3)

Automatizar el análisis de datos con Pandas-Profiling

5 (5)

Diferencias entre var y let en JavaScript

5 (6)

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

5 (3)

Unir y combinar dataframes con pandas en Python

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Guardar y leer archivos Excel en Python
  • franklin Chiluisa en Guardar y leer archivos Excel en Python
  • Miguel en Guardar y leer archivos CSV con Python
  • Daniel Rodríguez en Guardar diferentes hojas Excel con Python
  • Grevall en Guardar diferentes hojas Excel con Python

Publicidad

Footer

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Noticias
  • Opinión

Programación

  • JavaScript
  • Julia
  • Matlab
  • Python
  • R

Analytics Lane

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

Tiendas Afiliadas

  • AliExpress
  • Amazon
  • BangGood
  • GearBest
  • Geekbuying
  • JoyBuy

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.

Tiendas afiliadas

Ayúdanos realizando tus compras sin coste adicional con los enlaces de la tienda. ¡Gracias!

Amazon

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