top of page

Descomprimir .zip y .rar en Power BI con Python

Actualizado: 29 sept 2020




En el post Descomprimir .zip en Power BI con lenguaje M mostré cómo es posible descomprimir un .zip usando una función con el lenguaje M.


Aunque resulta interesante poder encontrar alternativas diferentes para dar soluciones a diversas problemáticas, lo cierto es que este método resulta demasiado extenso e incluso molesto. Además, la función desarrollada en lenguaje M no es trivial.


Parecería lógico pensar que si tenemos información con un formato comprimido es preferible descomprimir (clic derecho descomprimir) antes que tener que usar técnicas o lenguajes para poder realizar una acción que es bastante sencilla.


Os dejo una reflexión sobre el tema.


A día de hoy y con el creciente volumen de información, la mayoría de los proveedores de fuentes de datos abiertos los proporcionan en un formato comprimido. Imaginad una empresa que quiera explorar estos datos con Power BI. Tendría que descargar cada archivo y luego descomprimirlo para poder importarlo al modelo. ¿Tedioso, verdad?


En la actualidad, Power BI no admite todos los formatos comprimidos, pero admite Python Script, lo que significa que se pueden automatizar fácilmente los pasos. Para muchos, hasta que Power BI Desktop admita la funcionalidad de descompresión, podemos usar este maravilloso lenguaje.


Por tanto, he investigado una manera de hacer este procedimiento usando este lenguaje tan potente y con una gran comunidad de seguidores, que generosamente nos brinda la posibilidad de utilizar Power BI.


A continuación, muestro todo el proceso paso a paso de cómo hacerlo con .zip pero el procedimiento es el mismo para .rar


1- Seleccionar dentro de obtener datos/otros y elegir el conector Python script. Ver Fig.1

Fig.1


2- Se abre la ventana del script y basta con insertar el código que muestro a continuación. Ver Fig.2


Fig.2

Código a copiar

#Se importan las librerías pertinentes
import pandas as pd
import zipfile as zp

#Se guarda la dirección a donde se encuentra el .zip, Ver nota #1
#zf = zp.ZipFile('C:/titanicdataset-traincsv3.zip')
zf = zp.ZipFile(r'C:\titanicdataset-traincsv3.zip')

#Se recorre la lista dentro del .zip, y si es .csv se lee y se abre.
#La última línea es necesaria si tenemos más de un archivo .csv dentro #del .zip para poder cargarlos todos.
for name in zf.namelist():
    if str(name).endswith('.csv'):
        df = pd.read_csv(zf.open(name))
        globals()[str(name).split('.')[0]]=df

Nota 1: Barras diagonales frente a barras invertidas


- Barras invertidas: La convención de Windows utiliza una barra invertida (\) como separador de rutas. Se puede convertir las rutas en cadenas de caracteres sin formato, mediante la directiva "r", esto da la orden a Python de ignorar las barras invertidas.

- Barras Diagonales: Los sistemas UNIX utilizan una barra diagonal (/) que podemos usar también y no sería necesario usar la directiva.



3- Una vez cargado el código se mostrará una ventana con todos los .csv que estén dentro del .zip, bastará con seleccionar el o los archivos que se deseen y se cargarán al modelo. Ver Fig.3


Fig.3


Nota 2: Como se puede ver en la Fig.3 una de las tablas obtenidas es "df", el intérprete de Power BI muestra todos los formatos de tipo dataframe que encuentra, "df" se quedará con el último formato que se lea, pero en este caso no es necesario su selección, ya que luego obtendremos cada uno de los archivos correspondientes.


Nota 3: Lo antes expuesto puede variar en dependencia del caso en cuestión.

Por ejemplo, dentro del .zip puede que los archivos tengan una extensión diferente, en este caso basta con buscar la función adecuada, ejemplo(read_json, read_html, read_excel).


No obstante, es bueno tener en cuenta que el read_csv de pandas lee todos los formatos que tengan valores separados por comas. Es el formato de importación y exportación más común para hojas de cálculo y bases de datos. No existe un "estándar CSV", por lo que el formato se define operativamente por las numerosas aplicaciones que lo leen y escriben. Aun así, aunque los delimitadores y los caracteres de comillas varían, el formato general es lo suficientemente similar como para que sea posible leer .txt , .rpt y otros que cumplan con el estándar.


Nota 4: En el caso de que los archivos sean .rar podemos usar la función rarfile.

import rarfile rf
rr = rf.RarFile('C:/titanicdataset-traincsv2.rar')

El proceso y código es igual al mostrado con anterioridad, pero en el caso de .rar se hace necesario instalar la librería "unrar". Dejo el link para acceder a la página donde está debidamente explicado el procedimiento.



Lo más emocionante de Power BI es que nunca se sabe lo que su increíble equipo puede ofrecer; porque un elemento que pudiera no estar hoy puede aparecer en el próximo segundo.


En futuros post haré el paso a paso de cómo podemos además transformar y visualizar datos con Python en Power BI


 

Si te ha servido no dudes en compartirlo y regálanos un "Me gusta", es la razón de ser de este blog. Puedes suscribirte y así no te perderás los posts que vayamos publicando.

¡Gracias y Buena suerte! ;)

1342 visualizaciones0 comentarios

Entradas recientes

Ver todo
bottom of page