Aprende a integrar Python en Power BI para estadística analítica

Ya extrañaba trabajar en Python, y que mejor que hacerlo con Power BI. Porque podemos tener lo mejor de ambos mundos, hoy veremos una demostración de estadística analítica al integrar Python dentro de Power BI y examinaremos nuestros hallazgos usando cuadros de mando y reportes.

Para los que no lo conozcan, Power BI es un producto propietario de Microsoft para desarrollar tareas de negocio inteligentes. Integrar software de estadística y propósito general como Python y R ha sido posible gracias a Power BI desde 2018. ¿Pero cómo es que esto nos ayuda?

Si eres un profesional de analítica estadística (o BI, por sus siglas en inglés «business intelligence») y quieres desarrollar ciertas tareas de ciencia de datos, tenemos que confiar en el equipo de ciencia de datos. Por otro lado, un desarrollador de Python necesitará confiar en el equipo de BI para mostrar sus análisis en un formato presentable, como lo puede ser un tablero o cuadro de mando.

Como podemos notar, ambos casos no son óptimos pues hay dependencia externa de por medio, pero Power BI se deshace de esta co-dependencia ya que podemos correr Python dentro de un ambiente integrado.

Aunque no lo parezca o suene poco práctico, es muy importante entender la importancia que requiere el resolver problemas de negocios complejos. Generalmente esto incluye juntarse, explorar, limpiar y transformar datos para poder hacer predicciones para eventos futuros. Al final, el análisis es presentado en un reporte o bien un cuadro de mando, pero esto lleva a que los roles tradicional de un profesional de BI y un experto de modelado predictivo se vuelvan confusos.

Esto incrementa la necesidad de una herramienta exhaustiva que haga todas las tareas mencionadas antes en la canalización analítica. Si dicha herramienta viene de los mismos creadores de Excel, pues qué mejor. Es así que Power BI cobra su importancia y lugar para desarrollar analítica incrustada.

Por si no te has adentrado a Python y Power BI…

El día de hoy vamos a entender las capacidades de integración de Power BI y Python, así como iremos directo a desarrollar ciertas tareas que un sistema completo no podría hacer fácilmente. Para esta entrada se asume que ya has usado Power BI y Python en el pasado, si necesitas una introducción desde cero para Power BI, recomiendo seguir ente enlace y para Python tengo todo lo necesario en el blog.

Nuestra tabla de contenidos para el día de hoy incluye:

  • Preparar el entorno integrado
  • Importar datos usando scripts de Python
  • Usar Power Query para transformar datos
  • Usar las capacidades estadísticas de Python dentro de Power BI
  • Generar reportes analíticos

PREPARAR EL ENTORNO INTEGRADO

Nuestro primer paso es tener un entorno integrado listo y funcionando. Para hacer esto, tenemos que tener una distribución de Python instalada en nuestro equipo. La distribución base de Python nos servirá bien, pero para tareas relacionadas con código recomiendo usar Anaconda, aunque integrar Anaconda con Power BI puede resultar complicado.

Tras instalar Python, el entorno integrado requerirá que instalemos cuatro paquetes de Python, los cuales son Pandas (para manipulación y análisis de datos), Matplotlib, Seaborn (ambos para graficado) y Numpy (para cálculos científicos).

En todo caso, podemos usar el comando pip en nuestra herramienta de línea de comandos para instalar los paquetes.

pip install pandas
pip install matplotlib
pip install numpy
pip install seaborn

Tras instalar los paquetes tenemos que habilitar Python Scripting en Power BI. Para esto podemos abrir Power BI y revisar que detecte automáticamente el Python de distribución instalado en nuestro equipo, por lo que iremos a «Archivo», «Opciones y Ajustes», «Opciones». En Python Scripting deberemos ver la ruta de directorio en donde está instalado Python.

Python y Power BI 1

IMPORTAR DATOS USANDO SCRIPTS DE PYTHON

Ahora podemos correr una prueba rápida para revisar si Python funciona dentro del stack de Power BI. Para empezar, podemos importar un conjunto de datos pequeño en Power BI usando el script de Python.

Para ello iremos a la pestaña Inicio y daremos click a «Conseguir Datos» y luego elegiremos «Otro». Esta sección nos permitirá importar datos de una lista de diversas fuentes, particularmente Web, Hadoop Distributed File System (HDFS), Spark, entre otros, más allá de solo usar scripts como R o Python. Para esta demostración usaremos el conjunto de datos «Churn Prediction» que deberemos tener guardado en nuestro equipo.

Python y Power BI 2

Daremos click en Conectar, lo cual abrirá una sección en donde podremos escribir el siguiente script Python:

import pandas as pd
base = pd.read_csv("D:/aplan/Documents/churn_prediction.csv")
Python y Power BI 3

Darle click a OK cargará el Navegador y nos pedirá que seleccionemos los datos a importar, tras lo cual daremos click en Cargar. Ahora podemos ir a la vista de datos para revisar si los datos han sido cargados; con esto ya estamos listos para usar Power Query para desarrollar transformaciones de datos con un click.

USAR POWER QUERY PARA TRANSFORMAR DATOS

Aquellos que han aprendido algo de Python en el pasado sabrán que la transformación de datos es más o menos una actividad sencilla, pero puede no ser tan fácil para alguien que apenas está empezando. Aun así, con el editor de Power Query podemos manipular y transformar datos con un solo click y no solo eso, sino que Power BI también guarda un registro de todas las operaciones que van dentro de la fuente de información de la transformación de datos antes de cualquier análisis. Para demostrar las capacidades de transformación de datos fácilmente, vamos a ver cómo usar Power Query.

Una vez que carguemos los datos en Power BI, daremos click a Transformar Datos en la pestaña Inicio para abrir el Editor de Queries.

Ahora agregaremos un nuevo paso para convertir los valores a su tipo. Los pasos en el editor avanzado deben verse así:

let
   Source = Python.Execute("import pandas as pd#(lf)base = pd.read_csv(""D:/aplan/Documents/churn_prediction.csv"")"),
   base1 = Source{[Name="base"]}[Value],
   Type = Table.TransformColumnTypes(base1,
      {
         {"current_balance", type number}, 
         {"previous_month_end_balance", type number}, 
         {"average_monthly_balance_prevQ", type number}, 
         {"average_monthly_balance_prevQ2", type number}, 
         {"current_month_credit", type number}, 
         {"previous_month_credit", type number}, 
         {"current_month_debit", type number}, 
         {"previous_month_debit", type number}, 
         {"current_month_balance", type number}, 
         {"previous_month_balance", type number}, 
         {"churn", Int64.Type}
     }
   )
in
#"Changed Type"

Luego de que hayamos completado el paso de transformación, daremos click en Cerrar y Aplicar (del lado superior izquierdo) para aplicar estas transformaciones de datos.

USAR LAS CAPACIDADES ESTADÍSTICAS DE PYTHON DENTRO DE POWER BI

Aunque Power BI ya tiene una librería completa de visualización, no es cosa simple el crear una matriz de correlación. Aun así, un mapa de calor de matriz de correlación forma un componente íntegro dentro de los reportes de análisis de datos, por lo que en esta parte vamos a ver cómo crear un mapa de calor de matriz de correlación usando la función de correlación de Python. Este mapa de calor será mostrado en la sección de Reporte en Power BI.

Iremos hacia la sección de Reporte en Power BI y daremos click en el ícono de Python, el cual se encuentra en el símbolo de Py en la sección de Visualizaciones. A la izquierda notaremos un símbolo de Python vacío y un editor de scripts Python saltando al fondo. Esto significa que Power BI nos da la opción de crear visualizaciones por medio de scripts.

Python y Power BI 3

Ahí notaremos que, de momento, el campo de Valores está vacío.

Python y Power BI 4

Para ilustrar el mapa de calor de correlación, vamos a poner todas las variables continuas en el campo de Valores; llámese edad, todas las columnas de balance mensual (actual y del balance del mes pasado), columnas de actual y previas transacciones mensuales, número de dependientes y antigüedad. Este es un paso importante, de otro modo Power BI no reconocerá estas variables como parte de la visualización.

A medida que obtenemos las variables dentro del campo de Valores, el script Python empezará a llenarse automáticamente con los siguientes códigos:

The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script:

dataset = pandas.DataFrame(age, average_monthly_balance_prevQ, average_monthly_balance_prevQ2, current_balance, current_month_balance, current_month_credit, current_month_debit, dependents, previous_month_balance, previous_month_credit, previous_month_end_balance, previous_month_debit, vintage)

dataset = dataset.drop_duplicates()

Paste or type your script code here:

Ahora escribiremos un pequeño código en Python para crear un mapa de calor de matriz de correlación (coeficiente de Pearson) usando el paquete Seaborn.

 # import the charting libraries matplotlib and seaborn
import matplotlib.pyplot as plt
import seaborn as sns
 
 # create the correlation matrix on the dataset
corr = dataset.corr()

 # create a heatmap of the correlation matrix
sns.heatmap(corr, cmap="YlGnBu")

 # show plot
plt.show()

Finalmente, y tras correr el script usando el botón de Play Script, se nos producirá el mapa de calor.

GENERAR REPORTES ANALÍTICOS

Tras analizar nuestro mapa de calor podemos concluir que, para todos los clientes:

  • La edad y número de dependientes no tienen correlación con las otras variables
  • El balance mensual promedio de los últimos dos cuartos están moderadamente correlacionados
  • El balance mensual promedio en el último cuarto está altamente correlacionado con el balance del mes actual y el balance del mes pasado

Podemos crear este mapa de calor para clientes que han rotado y compararlo con aquellos que no, para lo cual aplicaremos un filtro en «Churn – True/False» usando los cuadrados azules para observar el mapa de calor para los dos grupos de clientes por separado.

La siguiente gráfica representa la imágen para clientes que no han sido rotados. Aun así, algo diferente emerge para estos dos tipos de clientes, y es que los clientes que no han sido rotados tienen una correlación mucho más alta entre el balance mensual promedio de los últimos dos cuartos y el balance actual y de los meses anteriores.

Mientras que, para los clientes rotados, el balance mensual promedio en los últimos dos cuartos tiene una correlación baja a moderada con el balance del mes pasado y el actual.

Por lo tanto, este análisis nos demuestra cómo podemos extraer observaciones útiles de analizar los datos y predecir el comportamiento de los clientes en rotación.

Con esto hemos aprendido sobre cómo integrar Python con Power BI, lo cual nos da más poder y lugar como profesionales de BI. Esto nos hace capitalizar fácilmente en los aspectos benéficos de ambas herramientas.

Cualquier duda nos leemos abajo.

Aprende a integrar Python en Power BI para estadística analítica

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Scroll hacia arriba