Lo que los Consejos de Administración deben saber sobre la Inteligencia Artificial
28 octubre, 2021
¿Puede la Inteligencia Artificial crear contenidos que la gente quiera leer?
3 noviembre, 2021

Power BI es la herramienta de análisis de datos que se ha convertido en un must have para cualquier departamento en todo tipo de empresa y sector. Nos permite analizar en profundidad una combinación de datos de múltiples orígenes mediante la creación de informes interactivos. Una de las mayores ventajas de la herramienta es que estos informes pueden fácilmente programarse para ser actualizados automáticamente, dejando que el informe “viva y crezca solo” evitando su mantenimiento manual.

Otra de las virtudes de PowerBI es su sencillo procedimiento de desarrollo contando con una interfaz familiar e intuitiva, totalmente accesible para cualquier perfil empresarial tanto programadores como perfiles menos tecnológicos. En Power BI podemos acceder a bases de datos y crear dashboards utilizando los conectores y visuales preparados para ello, pero también disponemos de líneas de comando o scripts para customizar nuestra conexión, incluso crear custom visuals con Python.

En este pequeño artículo-tutorial vamos a ver los pasos a seguir para utilizar el lenguaje de Python en Power BI y qué nos puede ofrecer, con una serie de ejemplos.

1. Configuración de Python en PowerBI. Sus entornos.
2. Python como origen de datos. Cómo cargar datos en PowerBI con un script.
3. Limitaciones que nos podemos encontrar al conectarnos con un Python script.
4. Cómo usar Scripts de Python a través del PowerQuery Editor – Editor en M.
5. Cómo crear Custom Visuals con Python. Librerías matplotlib y seaborn.

1. Configuración de Python en PowerBI. Sus entornos.

El primer paso es tener Python instalado o bien en nuestro ordenador local o en Anaconda.

Anaconda
¿Qué es Anaconda? Es una distribución libre y abierta de los lenguajes Python y R, que abarca una serie de aplicaciones, librerías y conceptos diseñados para el desarrollo de la ciencia de datos con Python. Podemos considerarlo un entorno virtual donde ejecutamos el código. En Anaconda creamos un entorno donde se instalarán las librerías que se necesiten y después tenemos que configurarlo en el Desktop de PBI. Anaconda se instala desde la página web oficial. Abrimos el Anaconda Navigator y en Environments creamos el entorno con las librerías (usando Python 3.6, 3.7 ó 3.8). Es importante quedarnos con la ruta donde creamos el entorno, porque después nos lo pedirá PBI Desktop para su configuración.
¿Qué son las librerías? Las librerías Python son módulos que permiten el acceso de funcionalidades o soluciones estandarizadas a problemas de programación. Podemos considerarlas paquetes que nos permiten realizar acciones (o funciones) usando muy poco código. Las librerías que se necesitan son mínimo 2 básicas: pandas y matplotlib. En Anaconda las instalamos dando al botón play del entorno, open terminal, pip install pandas. Después abrimos Power BI Desktop. Nos dirigimos a Opciones, Creación de Scripts de Python.

Si queremos usar la instalación de Python en Anaconda, ponemos en Directorio raíz de Python detectados: Otros, y en Establezca un directorio raíz seleccionamos la ruta del entorno de anaconda: User../ Anaconda3 / .envs / PowerBI.

Si queremos usar la instalación de Python en nuestro ordenador local, en Directorio raíz de Python detectados ponemos el directorio de nuestra instalación de Python local: C:\Users\…\AppData\Local\Programs\Python\Python36.

Ya tenemos PBI preparado para trabajar con Python.

2. Python como origen de datos. Cómo cargar datos en PowerBI con un script.

Para conectarnos a un origen utilizando un script, en Obtener Datos de PowerBI Desktop seleccionamos la opción de Script de Python. En el cuadro de script el output debe ser un dataframe. PBI lo leerá bien si el código devuelve una tabla, si no no detectará los datos. Primero importamos las librerías (import pandas as pd) después definimos el dataframe o df, y ponemos df al final (print(df)) para que devuelva el dataframe.

Ejemplo 1-. Definir un df con un diccionario en el script:

import pandas as pd
df = pd.DataFrame({'num_legs':[2, 4, 8, 0], 'num_wings':[2, 0, 0, 0], 'num_specimen_seen': [10, 2, 1, 8]}, index = ['falcon', 'dog', 'spider', 'fish'])
print(df)

Ejemplo 2-. Importar un csv:

import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/ibarrau/PowerBi-code/master/DatosPrueba/InternetSales.csv', delimiter=';')
print(df)

Ejemplo 3-. Web scraping con Pandas (read_html):

import pandas as pd
df = pd.read_html('https://es.wikipedia.org/wiki/Poblaci%C3%B3n_mundial')[0]
print(df)

Ejemplo 4-. Importar dataset de seaborn:

import seaborn as sns
tips = sns.load_dataset("tips")

3. Limitaciones que nos podemos encontrar al conectarnos con un Python script.

  • El máximo de filas del dataset es 150,000. Si nuestros datos exceden este número de registros, podemos separarlos en diferentes consultas y después anexarlos en un dataset total.
  • Python script dará un timeout error después de 5 minutos de ejecución. Debemos evitar líneas de código complejas o poco eficientes.
  • Librerías Python que soporta PBI: Matplotlib, Numpy, Pandas, Scikit-learn, Scipy, Seaborn y Statsmodel.

4. Cómo usar Scripts de Python a través del PowerQuery Editor – Editor en M.

El Power Query editor es el motor de gestión de queries o consultas de PowerBI. En resumen, es donde vamos a realizar todas las transformaciones de cada una de las tablas para dejarlas en la estructura y formato correcto de cara a que sea legible por el programa. Funciona a través del código M (Advanced Editor) pero también podemos usarlo con la interfaz de usuario.

Puede que haya ciertas transformaciones que nos resulten más fáciles o cómodas realizarlas con Python que con el propio lenguaje M o interfaz. Las realizamos en Transformar, ejecutar script de Python.

Ejemplo 1-. Cómo crear una columna nueva desde PowerQuery con Python:

En los ejemplos que vamos a ver, utilizaremos el dataset de un restaurante con la información de la cuenta a pagar por cada ticket, las propinas que dejan los clientes, número de comensales por cada mesa, etc. Si queremos una columna que, por ejemplo sume el total_bill + tip para tener el total de la cuenta más la propina, vamos a Transformar, ejecutar script de Python. Nos indica el comentario que ‘dataset’ contiene los datos de entrada o tabla. ‘Dataset’ es el dataframe con el que empezamos a trabajar. Trabajamos con ‘dataset’ igual que trabajaríamos con un dataframe de pandas.

import pandas as pd
dataset['total'] = dataset['total_bill'] + dataset['tip']
print(dataset)

Ejemplo 2-. Cómo rellenar valores en blanco con Python:

import pandas as pd
completedData = dataset.fillna(method='backfill', inplace=False)
dataset["completedValues"] =  completedData["tip2"]
print(dataset)

5. Cómo crear Custom Visuals con Python. Librerías matplotlib y seaborn.

Los principales beneficios de crear custom visuals con Python son:
– Rápido de crear ya que requiere muy poco conocimiento de Python.
– Puedes hacer imágenes muy atractivas, por ejemplo, con la biblioteca Seaborn. También es útil para crear visuales que no existen o no están ya predeterminados en los visuales por defecto que nos ofrece PowerBI.
– Puede personalizar completamente sus imágenes, aunque requerirá más habilidades del lenguaje Python.

Elegimos el visual Py. Nos pregunta si queremos habilitar los objetos visuales de Python, aceptamos. Para empezar a hacer algo, tenemos que arrastrar las columnas que tenemos importadas en el menú de la derecha que necesitamos para nuestra visualización.

Ejemplo 1-. Visual con Seaborn

Arrastramos a Values los campos ‘day’, ‘total_bill’ y ‘sex’ porque queremos visualizar la cuenta del restaurante según el día y el sexo. Automáticamente se crea un dataframe de pandas con las columnas que yo le he dicho, y por defecto nos efectúa un drop_duplicates, nos elimina los duplicados del dataframe. Importamos en el script las librerías que vamos a usar y escribimos el código de seaborn.

import seaborn as sns
import matplotlib.pyplot as plt 
sns.catplot(x="day", y="total_bill", hue="sex", kind="swarm", data=dataset) plt.show()

Es importante que el código devuelva un visual, por eso lo tenemos que finalizar con un plt.show().

Si queremos editar el formato del visual, tenemos que realizarlo a través de Python. Si entramos en Format del visual, solo podemos cambiar el título, fondo, bordes, sombras… pero si por ejemplo queremos cambiar el tamaño o los colores, lo tenemos que hacer con código. (Ejemplo sns.color_palette(“hls”, 8)).

Para hacer un código más dinámico según vayamos arrastrando valores al gráfico, podemos crear variables de la siguiente manera:

import seaborn as sns
import matplotlib.pyplot as plt 
variables = list(dataset) 
sns.catplot(x=variables[0], y=variables[1], hue=variables[2], kind="swarm", data=dataset) 
plt.show()

Con esto, si cambiamos los inputs de entrada, cambia solo el gráfico sin tener que modificar el código.

Ejemplo 2-. Visual 3D con matplotlib:

Usar Python para visuales customizados con Python puede venir bien, por ejemplo, para hacer gráficos en 3D. Metemos en valores como tip, size y total_bill. Vamos a pintar un gráfico en 3D con las propinas que dejan los consumidores según el número de personas en la mesa y según la cantidad total de la cuenta. Le damos a Don’t summarize los valores en el menú de Values para que nos dibuje todos los registros sin resumir, es decir, sin agrupar los valores con un cálculo y los pinte independientes.

from mpl_toolkits.mplot3d import Axes3Dimport 
matplotlib.pyplot as plt
import numpy as np 

dataset.dropna(inplace=True)
fig = plt.figure(figsize=(100,60))
ax = fig.add_subplot(111, projection='3d') 
zs = dataset.tipxs = dataset.size
ys = dataset.total_bill 
ax.scatter(xs, ys, zs, s=10000)
plt.xlabel('Size', fontsize=90, labelpad= 180)
plt.ylabel('Meal Price', fontsize=90, labelpad= 180)
plt.gca().legend()ax.set_zlabel('Tip', fontsize =90, labelpad= 180)
ax.tick_params(labelsize=80, width=4)
ax.legend(loc='best') 
plt.show()

En este ejemplo hemos visto cómo importamos las librerías, creamos tres variables, una por cada eje de la proyección 3D, y utilizamos la función scatter de la librería matplotlib. Después especificamos las etiquetas, leyenda y títulos de eje junto a los tamaños de los mismos. El código devuelve un visual con plt.show(). 

Recapitulemos qué nos ofrece utilizar elementos visuales de Python:
– Podemos crear gráficos que se adapten a nuestras necesidades específicas.
– Requiere muy poco conocimiento de Python.
– Se puede reutilizar fácilmente.
– El visual está dinamizado e integrado con el resto del informe, respondiendo a los filtros que realicemos.
– Podemos publicar informes en Power BI Service con elementos visuales de Python ya que la mayoría de las bibliotecas de Python/R son compatibles.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

NEWSLETTER