Revista Informática

Guardar y leer archivos Excel en Python

Publicado el 30 julio 2018 por Daniel Rodríguez @analyticslane

Publicado por en

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')
Guardar y leer archivos Excel en Python

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


Volver a la Portada de Logo Paperblog