¿Cómo crear objetos visuales de Python en Power BI?

Como seguramente has escuchado, la integración entre Power BI y Python tiene como pre-requisito la instalación de dos de las librerías más conocidas de Python.

- Matplotlib: Librería de Python utilizada para generar visualizaciones de datos, junto con Numpy, su extensión matemática.

- Pandas: Librería de Python para el analisis y la manipulación de datos.

Para instalar éstos paquetes podemos utilizar la consola o una plataforma como conda, usando la linea de comando pip, de la siguiente forma:

!pip install matplotlib 
!pip install pandas

Una vez hayamos instalado las librerias, debemos habilitar la Creación de Scripts de Python en Power BI por medio de los siguientes pasos:

1. Desde Power BI Desktop, vamos a Archivo > Opciones y configuración > Opciones > Creación de Scripts de Python. Emergerá la ventana Opciones de script de Python

alt

En mi caso, podemos observar que varios tipos de directorios son detectados, debido a que en mi computador tengo instalado Anaconda y Python. Escojo el primero que corresponde a Python.
(Puedes acceder a los enlaces para obtener más información sobre la instalación de Python)

2. Seleccionamos Aceptar.

Ya estamos listos para correr códigos de Python en Power BI.
Ahora vamos a crear una pequeña base de datos utilizando scripts de Python para más adelante generar visualizaciones gráficas a partir de ella.

Para crear la base de datos, debemos seguir los siguientes pasos:
1. En el panel de Inicio, seleccionamos Obtener datos > Mas.. > Otras > Script de Python. Le damos click en Conectar.

alt

Una vez emerge la ventana Script de Python podemos importar la librería pandas que instalamos anteriormente y a crear una base de datos utilizando el siguiente script, para más adelante generar las visualizaciones a partir de la misma.

import pandas as pd
Autos_ = [['Mazda',1600,1200,'Media','Cx5',2,4],
    ['Chevrolet',1400,1400,'Media','Optra',2,4],
    ['Renault',1200,1450,'Media','Sandero',4,2],
    ['BMW',1800,1100,'Alta','M3',2,2],
    ['Nissan',1400,1350,'Media','March',4,4],
    ['Audi',1800,1100,'Alta','Q7',2,4]]
Autos_Df = pd.DataFrame (Autos_, columns = ['Marca','Cilindros','Peso','Gama','Referencia','Ejes','Puertas'])
print(Autos_Df)

Después de digitar el script, damos click en aceptar. Se abrirá la ventana Navegador, en donde podremos seleccionar la base de Datos (Autos_Df) y damos click en Cargar.

alt

Podemos observar en el panel de Campos que ya tenemos disponible la tabla Autos_Df.

Una vez creada nuestra pequeña base de datos, podemos empezar a crear las visualizaciones de la siguiente manera:

1. En el panel de Visualizaciones, seleccionamos Objeto Visual de Python

2. Arrastramos los campos de la tabla Autos_Df deseados a la sección de Valores.

alt

Podemos observar en el Editor de scripts de Python, Power BI asigna el nombre predeterminado de dataset a los campos que hemos hemos seleccionado.

alt

Power BI creará un set de datos con los campos que recién escogimos y le dará el nombre de dataset. Si deseamos, podemos cambiar éste nombre utilizando el siguiente script:

Autos_dataset = dataset

Ahora vamos a crear un Scatter Plot utilizando el siguiente código:

import matplotlib.pyplot as plt
Autos_dataset.plot(kind = 'bar', x = 'Marca', y = 'Peso')
plt.show()

alt

De igual forma podemos utilizar las opciones que nos brinda la librería de Matplot para generar otros tipos de gráficos como los que se pueden observar a continuación:

alt

Incluso podemos utilizar gráficos un poco más avanzados. El siguiente es un gráfico de correlación que generaremos a partir del código:

import matplotlib.pyplot as plt
alpha = ['Cilindros','Ejes','Peso', 'Puertas']
fig= plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(Autos_dataset.corr(), cmap = 
plt.get_cmap('gray'))
fig.colorbar(cax)
plt.title("Correlation Graph")
ax.set_xticklabels(['']+alpha)
ax.set_yticklabels(['']+alpha)
plt.show()

El proceso y resultado final se verían de la siguiente manera:

alt

Nuestro gráfico de correlación se ve de la siguiente forma:

alt No dudes en contactar a cualquier miembro del equipo si tienes alguna duda. Saludos.

comments powered by Disqus