Python

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

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.

En el caso de que se quiera guardar más de un DataFrame en un mismo libro de Excel es necesario guárdalo en diferentes hojas, lo que requiere llevar a cabo unos pasos adicionales.

Imágenes: Pixabay (Pexels)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Pandas

Recent Posts

Calibración vs Discriminación en Credit Scoring: diferencias clave y cómo evaluarlas

Imagina que construyes un modelo de credit scoring y obtienes un Gini de 0,65. Un…

4 días ago

Ley de Benford: cómo detectar datos manipulados con ejemplos reales

En un mundo donde los datos se han convertido en el lenguaje dominante de la…

1 semana ago

Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura

Llevas un rato analizando datos y tienes cuatro gráficos abiertos en ventanas separadas: ventas, usuarios,…

2 semanas ago

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…

2 semanas ago

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

3 semanas ago

This website uses cookies.