0

Cómo leer ficheros Excel con Python y xlrd

¡Hola humanos! Si habéis trabajado un poquito con cualquier tema de Data Science, tarde o temprano os habréis encontrado con la necesidad de leer y analizar cientos de datos de un fichero de Microsoft Excel (o derivados).

En el tutorial de hoy veremos algunas formas de trabajar con los ficheros Excel en Python. Veremos cómo abrirlos y leer la información de sus celdas utilizando la librería xlrd.


Descargar la librería xlrd

La librería xlrd es una librería para Python que nos facilita la tarea de extraer información de hojas de cálculo (en los formatos .xls y .xlsx) de Microsoft Excel.

Si estamos en Linux y tenemos instalado pip, podemos descargar e instalar la librería desde la terminal con el comando:

#pip install xlrd

Si no, tendremos descargar el archivo .zip de la librería desde aquí. Una vez descargado, lo descomprimimos y nos creará un directorio con el nombre de la librería. Ejecutamos el script ‘setup.py’ que hay dentro con el comando:

#python setup.py install

Esto instalará la librería xlrd en el sistema.


Fichero de ejemplo

Para este tutorial he creado un fichero .xlsx de ejemplo que podemos descargar y nos servirá para probar la librería xlrd. Es un fichero que contiene dos páginas con la ficha técnica de algunos libros y películas que me gustan:

[descargar el fichero]


Leer un fichero Excel

Para leer un fichero Excel, empezamos por abrirlo con open_workbook() y separamos cada una de las hojas con sheet_by_index().

import xlrd

#Abrimos el fichero excel
documento = xlrd.open_workbook("ejemplo.xlsx")

#Podemos guardar cada una de las hojas por separado
libros = document.sheet_by_index(0)
peliculas = document.sheet_by_index(1)

 

Dada una hoja, podemos saber su número de filas y columnas con nrows() y ncols() respectivamente. Vamos a mostrar por pantalla cuántas filas y columnas tiene cada una de las hojas.

#Leemos el numero de filas y columnas de la hoja de libros
filas_libros = libros.nrows
columnas_libros = libros.ncols
print("Libros tiene " + str(filas_libros) + " filas y " + str(columnas_libros) + " columnas")

#Y lo mismo con la hoja de peliculas
filas_peliculas = peliculas.nrows
columnas_peliculas = peliculas.ncols
print("Peliculas tiene " + str(filas_peliculas) + " filas y " + str(columnas_peliculas) + " columnas")

 

También podemos extraer la información de una celda individual. cell_type(x,y) nos indicará el tipo de información que hay en la celda (x,y), mientras que cell_value(x,y) nos dará el valor que se guarda en la celda. Vamos a mostrar por pantalla la información de la celda (0,1) de la hoja de libros.

#Guardamos la informacion de la celda (0,1) de la hoja de libros
#Los tipos de celda son: 0-Vacia, 1-Texto, 2-Numero, 3-Fecha, 4-Booleano, 5-Error
tipo_de_celda = libros.cell_type(0, 1)
print("Tipo de celda: " + str(tipo_de_celda))

contenido_celda = libros.cell_value(0,1)
print("Contenido de la celda: \"" + str(contenido_celda) + "\"")

 

También podemos guardar una fila o columna entera con row() y col(). Vamos a mostrar el contenido de todas las filas de la hoja de libros (nos mostrará un vector con el tipo de dato y el contenido de la celda):

#Mostramos el contenido de todas las filas de la hoja de libros
for i in range(libros.nrows): #libros.ncols para el numero de columnas
	fila = libros.row(i) #libros.col(i) para mostrar las columnas
	print(fila)

 

Si queremos listar el contenido de todas las casillas podemos crear un doble bucle que las recorra. Vamos a listar toda la información de las películas que tenemos en la segunda hoja:

#Mostramos la informacion de todas las peliculas
for i in range(peliculas.nrows-1): #Ignoramos la primera fila, que indica los campos
	for j in range(peliculas.ncols):
		print(repr(peliculas.cell_value(i,j))) #Mostramos la casilla
	print("---------")

 


Conclusión

En resumen, tras leer este tutorial hemos aprendido a leer ficheros en los formatos .xls o .xlsx . No obstante, la librería xlrd sólo permite leer ficheros Excel, si queremos crearlos o editarlos tendremos que hacerlo con la librería xlwt.

Y esto es todo por hoy. ¡Hasta la próxima!

N4n0

Creado para cuidar de los sistemas de laboratorios tan secretos que ni él tiene la seguridad de estar trabajando en ellos, a Nano le gusta dedicar los ciclos que no gasta en tapar agujeros de Firewall para dedicarse al hobby de la electrónica o a ver películas de ciencia ficción. Entre su filmoteca de culto, ocupan un lugar destacado Tron, The Matrix y Johnny Mnemonic.

Deja un comentario

avatar