¡Bienvenidos de nuevo a "Conversaciones sobre Data & Analytics"! Si es tu primera vez por aquí, te invito a que leas el primer artículo donde presento la newsletter y el primer proyecto que realizaremos juntos: "Finanzas Personales con Streamlit".
Antes de comenzar, daros las gracias a todos porque la acogida de la newsletter ha sido impresionante.
En esta segunda entrega, quiero hablaros sobre las virtudes de Streamlit para desplegar procesos de Analítica Avanzada e Inteligencia Artificial.
¡Comencemos!
Para los recien llegados: ¿Qué es Streamlit?
Streamlit es una librería de código abierto que permite a los científicos de datos y analistas crear aplicaciones web interactivas utilizando Python.
Muchos os estaréis preguntando cómo puede un framework de este tipo aportar valor a un flujo de trabajo sobre analítica de datos. La respuesta la encontramos en la metodología comúnmente seguida en estos proyectos, metodología CRISP-DM.
El proceso CRISP-DM: la clave para un proyecto de análisis de datos exitoso
CRISP-DM (Cross-Industry Standard Process for Data Mining) es un proceso estándar utilizado en minería de datos para guiar el desarrollo de proyectos de análisis de datos. Estos, se componen de seis fases principales:
Comprensión del negocio: Definición objetivos del proyecto y su relación con negocio.
Comprensión de los datos: Recopilación, exploración y evaluación de calidad de los datos.
Preparación de los datos: Limpieza y procesamiento de los datos.
Modelado: Selección de la técnica de modelado adecuada para el problema en cuestión. Creación de un modelo inicial
Evaluación: Evaluación del modelo con el objetivo de determinar calidad y capacidad para resolver el problema en cuestión. Identificación de posibles mejoras.
Despliegue:
Integración del modelo en la aplicación.
Proporcionar soporte y capacitación a los usuarios finales
Monitorización del modelo para asegurar correcto funcionamiento y rendimiento.
En otras palabras: convertir los datos en conocimiento y compartirlo. En el caso de los proyectos de datos, compartirlo se vuelve algo esencial. ¿Por qué?
Imagínate que has creado el coche más rápido del mundo, pero no tienes idea de cómo fabricarlo. En ese caso, ¿qué sentido tendría todo el esfuerzo que pusiste en crearlo? Lo mismo pasa cuando eres un científico de datos en un banco y desarrollas un sistema de inversión increíble, pero no tus compañeros no lo pueden usar. Si los brokers no saben qué acciones comprar o vender porque no tienen acceso a los resultados de tu modelo, entonces todo tu trabajo es inútil.
En los último años han surgido nuevas metodologías más ágiles para poner compartir estos modelos.
Proceso clásico de despliegue aplicaciones de ML
A grandes rasgos, el flujo de un proyecto de Machine Learning consta de cuatro fases:
Construcción del modelo en un cuaderno de Jupyter Notebook (EDA, preparación de los datos, entrenamiento del modelo y optimización).
Una vez el modelo se ha desarrollado se pasa el código a un script de Python.
Adaptar la lógica del modelo a una aplicación de Flask o Django.
Actualización de la app con las nuevas características.
Este proceso puede generar una gran cantidad de idas y venidas entre la fase de adaptación (3) y la de actualización (4) de la aplicación, lo que dificulta el mantenimiento y evolución a largo plazo de esta.
Una alternativa es involucrar desarrolladores front-end en el proyecto, pero a menudo no están disponibles para trabajar en el proyecto de forma continua, lo que puede ralentizar la implementación de los cambios necesarios.
Proceso low-code de despliegue
Como hemos visto, el proceso clásico de despliegue de una aplicación de Machine Learning puede ser complicado y difícil de mantener, especialmente si se utilizan frameworks complejos o se involucran a otros equipos en el mantenimiento de la aplicación. Sin embargo, gracias al desarrollo de nuevas soluciones low-code, ahora es posible desarrollar aplicaciones de machine learning mediante scripts de Python simples y fáciles de entender.
Estas herramientas (apps) deberían surgir como un subproducto natural del flujo de trabajo de ML. Escribir estas aplicaciones debería ser como entrenar una red neuronal o realizar un análisis ad-hoc en Jupyter. Al mismo tiempo, queríamos preservar toda la flexibilidad de un framework potente.
- Adrien Treuille (co-fundador de Streamlit)
Estas alternativas reducen de forma signifitcativa la barrera de entrada para la creación de aplicaciones de IA, permitiendo que científicos de datos, analistas y aficionados puedan crear sus propias aplicaciones web interactivas sin necesidad de tener conocimientos especializados en desarrollo web.
En resumen, las soluciones low-code nos permiten ahorrar tiempo en la fase final del proceso CRISP-DM y así dedicarlo a fases más críticas como la preparación de los datos o el ajuste del modelo.
Introducción a Streamlit
¿Qué necesitas saber para usar Streamlit?
Tener nociones básicas de Python.
Variables, tipos de datos, funciones y clases.
Recomendable conocer algunas de las librerías más extendidas para la construcción de visualizaciones.
Los cuatro principios de Streamlit
Según Adrien Treuille, cofundador y CEO de Streamlit, Streamlit se basó originalmente en tres principios (como se señaló en la charla PyData LA 2019). El cuarto principio se introdujo durante el lanzamiento de Streamlit Cloud.
Aprovecha el scripting de Python: Construye y desarrolla aplicaciones en el mismo lenguaje donde creas tus modelos.
Widgets como variables: Los widgets son elementos que permiten a los usuarios interactuar con las aplicaciones de Streamlit, como formularios, barras deslizantes, filtros, etc.
Reutiliza datos y cálculos: Almacena en caché los datos y operaciones realizadas.
Despliegue inmedianto: Gracias a Streamlit Cloud es muy sencillo implementar las aplicaciones desarrolladas con esta librería.

“Finanzas personales con Streamlit”
A lo largo de las siguientes entregas iremos introduciendo los componentes fundamentales con los que podrás crear cualquier aplicación basada en datos que te propongas. Como ejemplo y a modo de guía se ha desarrollado esta aplicación, titulada “Finanzas personales con Streamlit”.

Esta aplicación es un ejemplo de como Streamlit se puede convertir en una herramienta de BI para tu organización, introduciendo un alto nivel de personalización.
Entre las características que he incluido en la aplicación se incluyen:
Visualización interactiva.
Autenticación de usuarios.
Recogida de datos mediante formularios.
Personalización de la apariencia de la app.
Primeros pasos con Streamlit
Lo primero que tenemos que hacer es instalar Streamlit en nuestro entorno de desarrollo. Podemos hacerlo mediante pip
, el gestor de paquetes de Python, ejecutando el siguiente comando en una terminal:
pip install streamlit
Una vez tenemos Streamlit instalado, vamos a crear un archivo llamado hola_mundo.py
con el siguiente contenido:
import streamlit as st
st.title("¡Hola mundo!")
st.write("Esta es mi primera aplicación con Streamlit.")
Este código importa la librería, luego se utiliza la función st.title
para agregar un título a nuestra página, y st.write
para escribir un mensaje.
Para ejecutar nuestra aplicación, simplemente abrimos una terminal en la ubicación del archivo y ejecutamos el siguiente comando:
streamlit run hola_mundo.py
¡Listo! Se abrirá una ventana en el navegador web en la dirección http://localhost:8501/

Aplicaciones de varias páginas
A medida que las aplicaciones crecen, resulta útil organizarlas en varias páginas. Como muestra la aplicación de ejemplo, Streamlit, desde su versión 1.10, ofrece una forma sencilla de crear aplicaciones de varias páginas.
El proceso para realizarlo es muy sencillo: La aplicación tiene una página principal, que actuará como landing page. El resto se programan de la misma forma que hemos explicado, con la única diferencia de que estos ficheros se deben guardar dentro de una carpeta llamada pages. A continuación se muestra una estructura de ficheros válida para este tipo de aplicaciones:
Principal.py # Página de entrada y sobre la que se ejecuta "streamlit run"
└─── pages/
└─── Sobre_mi.py # Esto es una página
└─── Contacto.py # Esto es otra
└─── 3_😎_pagina_tres.py # Y otra
Sólo los archivos .py
en el directorio pages/
serán cargados como páginas.
Hasta aquí el artículo de hoy, donde hemos hablado sobre:
Metolodogía CRISP-DM.
Importancia del despliegue en procesos de Analítica e Inteligencia Artificial:
Diferencia entre soluciones clásicas y low-code.
Primeros pasos con Streamlit.
En el próximo episodio de este proyecto profundizaremos más sobre como ampliar las funcionalidades de nuestra aplicación de Streamlit, concretamente, crearemos un sistema de autentificación y conectaremos una base de datos a la app. También, exploraremos características fundamentales de Streamlit como el ‘estado de la sesión’ o session_state
.
¡MUCHAS GRACIAS!
Si el artículo te ha gustado, dejar un ❤️ y compartirlo con alguien a quién creas que pueda servirle sería la MEJOR FORMA DE VALORAR MI TRABAJO
Cada semana recibirás en tu bandeja de entrada algo nuevo que aprender sobre el mundo de los datos.
Ignacio, llegué acá googleando un poco y debo admitir que quedé impresionado por las prestaciones de Streamlit y tu proyecto de Finanzas Personales. Te cuento que soy un novato con Python, pero lo que vi en tu aplicación me sirve de inspiración para lo que espero de la mía (objetivo: administrar una cartera de Inversiones en Argentina). En tal sentido quisiera replicar la instalación de la aplicación en mi propio entorno, para poder tomar como base lo relacionado con el manejo de usuarios y sesiones. No encuentro en https://github.com/ignareyesa/streamlit-personalfinance todo lo relacionado con los scripts de creación de la base de datos y quiero saber si podrías compartir dichos scripts.
Desde ya agradezco por tu tiempo y todo el apoyo que me puedas brindar.
Saludos,
Leo.