Scripts de Python en Power BI

La integración de Python en Power BI es, sin duda, una de las funcionalidades introducidas por el equipo más importantes hasta la fecha. Al igual que R, Python nos ofrece numerosas posibilidades para realizar tareas durante el proceso de ETL en nuestras propias consultas, y crear visualizaciones atractivas y útiles mediante el uso de sus librerías orientadas a la representación gráfica de información estadística. Además, nos proporciona la capacidad de incrementar de forma exponencial la competencia analítica de nuestros informes y cuadros de mando, mediante el uso de módulos de Machine Learning capaces de identificar patrones complejos en los datos con el objetivo de predecir comportamientos futuros, proporcionándonos información de alto valor para la toma de decisiones de negocio.

Ejecutar scripts de Python en el editor de consultas

El lenguaje de programación Phyton cuenta con librerías orientadas al análisis de datos con multitud de funciones y métodos que podemos usar durante las etapas de transformación y limpieza, antes de cargar las consultas al modelo. La librería pandas nos permite manipular Data Frames con un gran número de funciones diseñadas específicamente para los procesos de preparación de datos. Vamos a ver un ejemplo donde tenemos una tabla con datos de clientes que contiene valores null en las columnas que especifican el peso y la altura de cada uno de ellos:

Imagen 1

 

Existen muchas formas distintas de abordar este problema de manera que nuestra consulta permita agregar los valores de dichas columnas y obtener resultados coherentes. Una de ellas corresponde a eliminar los registros que contienen los valores desconocidos, pero nosotros vamos a rellenarlos con la media del resto de los valores presentes en cada una de las columnas. Para ello, desde la pestaña transformar pinchamos en Ejecutar script de Python:

Imagen 2

 

Lo primero que hace Power BI es cargar en un Data Frame de pandas los datos de la consulta, especificando dataset como el nombre de la variable. Posteriormente, y tras importar la biblioteca pandas con su alias correspondiente, vamos a suponer que solo nos interesan las columnas que contienen valores null, por lo que creamos un nuevo DataFrame que contenga solo dichas columnas, utilizando el método .loc[] para acceder a ellas. Finalmente, solo tenemos que escribir otra línea de código con el método .fillna() , especificando la función mean() como el agregador a utilizar para remplazar los valores nulos. La misma operación podríamos haberla realizado encadenando dicho método en la línea de código anterior, sin necesidad de crear una línea adicional. En la siguiente imagen podemos ver el código a ejecutar:

Imagen 3

 

Una vez expandimos la tabla creada veremos que todos los registros de la misma contienen valores, habiendo sustituido los desconocidos, por la media del resto de valores de la columna correspondiente:

Imagen 4

Visualizaciones de Python en Power BI

Es cierto que la operación llevada a cabo en el anterior apartado podríamos haberla realizado con Power Query (aunque con algún paso más), pero la integración de Python con Power BI va mucho más allá del proceso de ETL, y nos permite crear visualizaciones estadísticas tremendamente útiles que no se encuentran entre las que se incluyen por defecto en el programa.

Las librerías de Python matplotlib y seaborn (construida en base a la anterior y optimizada para trabajar con DataFrames), son probablemente las más utilizadas a la hora de crear visualizaciones orientadas al análisis estadístico, con el objetivo de entender cómo las variables en un conjunto de datos se relacionan entre sí y cómo dichas relaciones dependen de otras variables. La visualización suele ser un componente central de este proceso porque, cuando los datos se representan correctamente, el sistema visual humano puede identificar de forma fácil tendencias y patrones que indican una relación.

Vamos a ver algunos ejemplos para entender cómo funcionan las visualizaciones de Python en Power BI y cómo podemos sacarles partido. El proceso es siempre el mismo, seleccionamos los campos que nos interesa representar, Power BI los carga en un DataFrame de pandas con el nombre de dataset,  se eliminan los registros duplicados, y tras importar las librerías necesarias solo nos queda escribir o pegar el código con las funciones y sus argumentos correspondientes para crear las visualizaciones.

Por ejemplo, una visualización de violín juega un papel similar al de un diagrama de caja. Muestra la distribución de los datos cuantitativos en varios niveles de una (o más) variables categóricas, de modo que dichas distribuciones se puedan comparar. A diferencia de una gráfica de caja, en la que todos los componentes corresponden a puntos de datos reales y muestra estadísticas de resumen, como la media / mediana y los rangos intercuartiles, la gráfica de violín presenta también una estimación de la densidad del núcleo de la distribución subyacente.

Puede ser una forma efectiva y atractiva de mostrar múltiples distribuciones de datos a la vez. En la siguiente imagen podemos ver una visualización de violín (y el código para crearla) que muestra la distribución, segmentada por sexo, de la relación de los resultados de los clientes en un test y la compra de un determinado producto:

Image 5

Otra visualización interesante que podemos obtener con el mismo conjunto de datos es la que nos ofrece el método pairplot de la biblioteca seaborn. De manera predeterminada, esta función creará una cuadrícula de ejes de manera que cada variable en los datos se comparta en el eje «y» en una sola fila, y en el eje «x» en una sola columna, creando gráficos de dispersión para cada par de variables. Los ejes diagonales se tratan de manera diferente, dibujando una gráfica para mostrar la distribución univariada de los datos para la variable de cada columna.

Image 6

 

Las posibilidades de personalización son enormes, por ejemplo podemos incluir rectas de regresión lineal en los gráficos de dispersión que nos permitan ver con mayor claridad la correlación entre las variables, añadiendo el parámetro kind="reg" , o cambiar el tipo de los gráficos de la diagonal a histogramas con diag_kind="hist":

Image 7

Lo cierto es que se podrían realizar cientos de ejemplos, teniendo en cuenta la enorme flexibilidad de cada tipo de gráfico de las librerías de Python orientadas a la visualización de datos. Conviene siempre echar un vistazo a las funciones y sus parámetros correspondientes de cada biblioteca en su respectiva documentación oficial. Por ejemplo, aquí podemos ver la de la librería matplotlib.

Por último, mencionar que todas estas visualizaciones las podemos integrar perfectamente en nuestros informes de Power BI, y responderán dinámicamente a los filtros que apliquemos en el modelo de datos:

Imagen 9

Consideraciones finales

En este artículo hemos visto como Python puede ayudarnos tanto en el proceso de ETL como en la creación de complejas visualizaciones de carácter estadístico.

En un próximo artículo veremos cómo podemos utilizar la bilbioteca Scikit-learn para, de forma práctica y mediante el denominado aprendizaje supervisado, crear aplicaciones de Machine Learning capaces de resolver problemas de clasificación y regresión utilizando múltiples algoritmos, que podremos aplicar en una gran variedad de situaciones dentro del mundo empresarial.

Deja un comentario