Leer archivos Excel con Python

1 Abr

Entrada sobre la importación de Excel con Python, un aporte que sirve para mi documentación y que es posible que sea de ayuda para muchos que se estén iniciando en el uso de Python y Pandas, aunque en este caso para la lectura del Excel usaremos tanto Pandas como la librería xlrd.

Lectura de Excel con Pandas

Lo más sencillo para importarnos en Python un Excel y crearnos un data frame de Pandas es:

import pandas as pd
archivo = 'C:/Users/Documents/ejemplo.xlsx'

df = pd.read_excel(archivo, sheet_name='Hoja1')

df.describe()

La función read_excel será suficiente en el 80% de las ocasiones que realicemos esta tarea. Como es habitual en la ayuda tenéis perfectamente descritas sus posibilidades.

Lectura de Excel con xlrd

Es posible que necesitemos realizar tareas más complejas a la hora de leer archivos Excel y podemos usar xlrd. Vemos algunas de las posibilidades:

import xlrd 
 
archivo = 'C:/Users/rvaquerizo/Documents/ejemplo.xlsx'
  
wb = xlrd.open_workbook(archivo) 

hoja = wb.sheet_by_index(0) 
print(hoja.nrows) 
print(hoja.ncols) 
print(hoja.cell_value(0, 0))

open_workbook nos abre el Excel para trabajar con él. Seleccionamos hojas por índice (empezando por el 0) y con la hoja seleccionada podemos ver el número de filas (nrows) o columnas (ncols). Seleccionar una celda lo hacemos con cell_value mediante índices (empezando por el 0). Otras posibilidades:

archivo = 'C:/Users/rvaquerizo/Documents/ejemplo.xlsx'
  
wb = xlrd.open_workbook(archivo) 

hoja = wb.sheet_by_name('Hoja1') 
for i in range(0,hoja.nrows):
    print(hoja.cell_value(i,1))

Si por ejemplo deseamos saber las cabeceras, los nombres de las columnas:

archivo = 'C:/Users/rvaquerizo/Documents/ejemplo.xlsx'
  
wb = xlrd.open_workbook(archivo) 

hoja = wb.sheet_by_index(0) 
nombres = hoja.row(0)  
print(nombres)

Y mediante xlrd podemos crear data frames de pandas con lo que es posible realizar lecturas de rangos:

archivo = 'C:/Users/rvaquerizo/Documents/ejemplo.xlsx'
  
wb = xlrd.open_workbook(archivo) 

hoja = wb.sheet_by_index(0) 

# Creamos listas
filas = []
for fila in range(1,hoja.nrows):
    columnas = []
    for columna in range(0,2):
        columnas.append(hoja.cell_value(fila,columna))
    filas.append(columnas)

import pandas as pd
df = pd.DataFrame(filas)
df.head()

Hay alguna librería que lo hace de forma más elegante pero la importación de rangos de Excel con xlrd, una vez te familiarizas, me parece bastante sencilla. Espero que sea de utilidad

7 respuestas a «Leer archivos Excel con Python»

  1. Estimados
    Como puedo leer y unificar varios archivos excel los mismos q contienen varias hojas
    La carpeta es:
    D:\1.2 CARPETAS PARA REPORTES\Totaten x años\2020
    La carpeta 2020 tiene los archivos excel siguientes:
    Enero 2020
    Febrero 2020
    Marzo 2020
    Abril 2020
    Y cada Archivo contiene las siguientes hojas:
    HS_T7T5TEN_20200301_20200331 1
    HS_T7T5TEN_20200301_20200331 2
    HS_T7T5TEN_20200301_20200331 3

  2. Estimado
    Mi necesidad es unir con python archvos excel con varias hojas cada uno, hice lago asi pero veo que solo me une las primeras hojas que podria hacer para que se unan todas las hojas de los dos archivos:

    link: r’d:\carpetas\totaten 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)

    • Opción A
      import pandas as pd
      file.to_excel(ruta, sheet_name=»»….)

      Opción B
      import pandas as pd
      writer = pd.ExcelWriter(‘path’+’file.xlsx’, engine=’xlsxwriter’)

  3. Hola trabajo cos SAP y genero reportes con excel, power query y todo bien.
    Pero cuando intento abrir un archivo
    csv, xls, xlsx o txt, todos me dan error. (ya corregi el formato iso desde SAP), pero no me indica columnas, esto con pandas.
    pero cuando abro el archivo con doble click en jupiter veo lo mismo que excel o block de notas.
    No puedo
    he probado con sep=’ ‘ varios modos
    header=none (para ver si eran las columnas y da error
    en resumen, lee las x filas pero solo 1 columna

    Ayuda.

  4. Hola Raúl,

    ¡Primero agradecerte el contenido!
    Comentar que cuando utilizas la biblioteca xlrd, esta sólo permite trabajar con archivos Excel de formato histórico tipo .xls. Como alternativa se puede utilizar la biblioteca xlswriter para manipular archivos excel del formato .xlsx.

    Saludos

Deja una respuesta

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