1 of 9

ETL con Python

Power BI

Pablo Roncagliolo

pablo.roncagliolo@uv.cl

PowerBi tiene la opción de incorporar un script de Python directamente al momento de recargar los datos.

Sin embargo, sólo se recomienda cuando el script está consolidado o estable.

En la etapa de desarrollo o validación del script no tiene sentido incorporarlo en PowerBI pues la gestión de los errores no es “amigable”.

2 of 9

python.org

cd..

cd Python/../Scripts

pip install numpy

pip install matplotlib

pip install pandas

Instalación de versión básica de Python

3 of 9

Habilitar Python en Power BI

4 of 9

Ejecutar Script de Python

5 of 9

Script: Crea dataframe Pandas y guarda csv

import pandas

#***************************

TABLA=[]

TABLA.append([1,"A1","B1","C1"])

TABLA.append([2,"A2","B2","C2"])

df_TABLA = pandas.DataFrame(TABLA)

df_TABLA.columns = ['row', 'COL_A', 'COL_B', "COLC"]

print(df_TABLA)

df_TABLA.to_csv("TABLA.csv",index=False,sep=";")

Ejercicio N°1

6 of 9

PASO 1: Copiar Script

PASO 2: Cargar dataframe

PASO 3: Visualizar Tabla en PowerBI

7 of 9

Script: Carga algunas columnas de archivo XLS o CSV

import pandas

#***************************

path="C:\\Users\\pablo\\Desktop";

arch=”BD_ESTABLECIMIENTOS_DEIS_2023.csv”

file=path+"\\"+arch

df = pandas.read_csv(file,sep=";")

n=len(df)

print(df)

for i in range(len(df)):

print([df["Código Vigente"][i], df["Nombre Región"][i], df["Nombre Oficial"][i]])

Ejercicio N°2

8 of 9

Script: Transforma algunas columnas y crea dataframe para PowerBI

import pandas

#***************************

path="C:\\Users\\pablo\\Desktop";

arch="Establecimientos_ChileDEIS_MINSAL.csv"

df = pandas.read_csv(path+"\\"+arch,sep=";") #.read_excel( ) para archivos xlsx

SUBTABLA=[]

for i in range(len(df)):

s=df["Nombre Región"][i]

s2=s[6:len(s)].upper()

s2=s2.replace("Á","A")

s2=s2.replace("É","E")

s2=s2.replace("Í","I")

s2=s2.replace("Ó","O")

s2=s2.replace("Ú","U")

SUBTABLA.append([df["Código Vigente"][i],s2, df["Nombre Oficial"][i]])

df_SUBTABLA = pandas.DataFrame(SUBTABLA)

df_SUBTABLA.columns = ['COD', 'REGION_NORMALIZADA', 'Nombre']

print(df_SUBTABLA)

df_SUBTABLA.to_csv("SUBTABLA.csv",index=False,sep=";")

Ejercicio N°3

Campo “REGION_NORMALIZADA”:

Sin el prefijo “Región”, mayúsculas y sin acentos

9 of 9

Resultado Ejercicio N°3