Convertir archivos CSV a XLSX con Python

Publicado el 11 mayo 2020 por Daniel Rodríguez @analyticslane

Los archivos de Excel y CSV son los formatos más utilizados para el intercambio de datos tabulados. En algunas situaciones puede ser necesario convertir los archivos de un formato a otro, cuando los usuarios que reciben los datos lo quieren en un formato concreto o cuando el programa no admite más que uno de tipos de archivo. En esta entrada vamos a ver se pueden convertir archivos CSV a XLSX con Python mediante el uso de Pandas y también como hacer el proceso inverso.

Convertir archivo CSV a XLSX

La conversión de un archivo en formato CSV a otro en formato de Microsoft Excel es una tarea relativamente sencilla. Solamente requiere importar el archivo en formato CSV en un DataFrame de Pandas para posteriormente guardar este en un nuevo archivo de Excel (tanto XLSX como XLS). Como se ha visto en una entrada anterior, la importación de un archivo CSV se puede hacer con el método read_csv de Pandas, con lo que se obtiene un DataFrame.

import pandas as pd

df = pd.read_csv('data.csv')

Ahora una vez importado el DataFrame en memoria se puede guardar este mediante el método to_excel. Recordemos que al importar un DataFrame se genera un índice que no formaba parte de los datos originales y, en la mayoría de los casos, no deseamos que se exporte. Un problema que se puede solucionar simplemente asignado el valor faso a la propiedad index del método. Lo que se muestra en el siguiente ejemplo.

df.to_excel('data.xlsx', index=False)

Ahora bien, si no vamos a usar el DataFrame no es necesario guardarlo, ya que se puede utilizar la interfaz fluida para ejecutar el comando en una única línea de código.

pd.read_csv('data.csv').to_excel('data.xlsx', index=False)

Usar el formato XLS

Si por cuestiones de compatibilidad necesitamos exportar a un archivo de Excel en formato XLS en lugar de XLSX solamente tenemos que cambiar la extensión. El método to_excel inferirá automáticamente la librería que debe usar en cada caso. Aunque se también se le puede indicar explícitamente con la propiedad engine.

pd.read_csv('data.csv').to_excel('data.xls', index=False, engine='xlwt')

Convertir archivo XLSX a CSV

Finalmente, para convertir un archivo Excel a CSV solamente hemos de usar lo ya aprendido en una interfaz fluida. Por ejemplo, para importar los datos y guardar en un nuevo CVS.

pd.read_excel('data.xlsx').to_csv('data.csv', index=False)

Hay que recordar que en los libros Excel puede haber más de una hoja. Situación en la que Pandas importará la primera, salvo que se le indique lo contrario a través de la propiedad sheet_name.

Conclusiones

En esta entrada hemos visto cómo, al combinar las funciones para trabajar con archivos CSV de Pandas con las funciones existentes para trabajar con archivos Excel, se puede solucionar en un a línea de código la conversión de archivos CSV a XLSX con Python. Algo que nos puede sacar de un problema en más de una situación.

Otra cosa que hemos constatado es la potencia que tiene la interfaz fluida de Python para plantear un problema de un sencilla y legible.

Imagen de Mudassar Iqbal en Pixabay


Publicidad