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')
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