Widgets en Python ➡ Notebooks más interactivos con Ipywidgets

Gráficos interactivos

Al explorar datos muchas veces es útil poder ver cómo cambia el resultado al modificar los parámetros de entrada. Para esto generalmente tenemos que cambiar el código y volver a ejecutar la celda, pero hoy quería explorar una opción más interactiva al incorporar Ipywidgets para ajustar esos parámetros. Los widgets los podemos incorporar para explorar un DataFrame (al estilo panel de control) o crear gráficos interactivos en Jupyter Notebook.

En el ecosistema de Python, hay muchas opciones para visualizar los datos de forma interactiva. Por eso, antes de meternos en harina quiero alertar de que este artículo no pretende ser una guía exhaustiva. Simplemente, al utilizar Jupyter para analizar mis datos me di cuenta de que incorporar widgets me hace la vida más fácil. Si me sirven a mí, entonces pueden ser útiles para alguien más. De allí surgió este artículo. Pero no me lío más y comenzamos mejor por el principio:

¿Qué es un widget?

Los widgets en Python son objetos que tienen una representación en el navegador (Jupyter notebook en este ejemplo). Por ejemplo, los widgets pueden tener forma de una caja de texto, un desplegable, una casilla de verificación, etc. Cuando utilizamos los widgets, estamos incorporando controles interactivos al notebook de Jupyter.

Ipywidgets

La librería ipywidgets nos permite transformar un notebook de Jupyter en un explorador de datos interactivo.

Para instalar la librería:

pip install ipywidgets 
 jupyter nbextension enable --py widgetsnbextension 

Para importar la librería en el notebook:

import ipywidgets as widgets

Ejemplos de widgets sencillos

widgets.IntSlider( min=0, max=10, step=1, orientation='vertical', description= "Nivel de riesgo")

Ahora combinamos 3 tipos distintos de widgets

widgets ipywidgets
Demo: Widgets

El link con el notebook de estos ejemplos está al final del artículo


Utilizar widgets para filtrar y explorar un Dataframe

Como en esta web hablamos de métodos de inversión cuantitativa, los datos que vamos a utilizar en el ejemplo son los cierres mensuales del índice SP500.

Dataframe de ejemplo para Jupyter notebook

Interact

La manera más sencilla de comenzar a utilizar Ipywidgets es con @interact.

Al aplicar interact como decorador, automáticamente se crea un widget por cada parámetro de la función. El tipo de widget dependerá de como definamos los parámetros. Por ejemplo, si pasamos como argumento una variable boolena se creará una casilla de verificación, si pasamos valores obtendremos un deslizador y si pasamos una lista el widget será un desplegable.

En un ejemplo explorando el dataframe anterior:

ipywidget interact decorator

Como se ve en este ejemplo, se puede seleccionar el valor de la rentabilidad y podemos ver cuándo se ha obtenido una rentabilidad igual o superior a dicho valor. Todo esto sin necesidad de volver a ejecutar la celda cada vez que modificamos el filtro.

Gráficos interactivos en Jupyter notebook

Al igual que en el ejemplo anterior, utilizamos el «camino fácil» y creamos una función para dibujar un histograma de frecuencias para visualizar cómo se han distribuido las rentabilidades mensuales. Al incorporar @interact, para cada parámetro obtendremos el widget adecuado a su tipo.

ejemplo graficos interactivos en python | ipywidgets

Crear nuestros propios widgets

En los dos ejemplos anteriores utilizábamos interact como decorador. Otra forma hacer las cosas es crear los widgets de selección primero para después capturar su valor y sus variaciones. Esto puede ser útil cuando las opciones de varios widgets son dependientes o están conectadas. Vamos a verlo con otro ejemplo.

Partiendo de los datos iniciales, creo dos widgets desplegables para segmentar los datos por año y por mes. Puedo seleccionar todos los meses para un mismo año y todos los años para un mismo mes.

widgets dropdown data explorer python

Ahora podemos segmentar los datos usando los controles (widgets) sin necesidad de re-escribir código.

En el notebook puedes ver los códigos para todos los ejemplos (link al final del artículo)


Resumen

Tradicionalmente, cuando queremos modificar el resultado de una celda, necesitamos cambiar el código y volver a ejecutar. Esto con los widgets es visualmente diferente. Los widgets están incrustados en el notebook y permiten ver de una manera más sencilla cuál es el impacto si modificamos los datos de entrada. Así, pueden ser herramientas muy útiles para ayudarnos visualizar los datos. En este artículo mostramos el funcionamiento de algunos widgets, para saber más puedes consultar los siguientes enlaces

Para saber más:

Nota: Desafortunadamente, los widgets de IPython no se ven bien en GitHub, pero aun así puedes acceder ejecutar los notebooks localmente para verlos funcionar.


2 comentarios en «Widgets en Python ➡ Notebooks más interactivos con Ipywidgets»

Deja un comentario

ESTRATEGIAS DE TRADING