El desarrollo de aplicaciones de datos interactivas ha ganado popularidad en los últimos años. Herramientas como Streamlit permiten construir interfaces visuales directamente con Python, sin necesidad de conocimientos avanzados de desarrollo web.
Sin embargo, para trabajar de forma eficiente con Streamlit es importante entender dos conceptos fundamentales de su funcionamiento:
- Reactividad
- Gestión del estado (statefulness)
Comprender cómo funcionan estos mecanismos permite crear aplicaciones más robustas, predecibles y fáciles de mantener.
Cómo funciona la reactividad en Streamlit
Una de las características principales de Streamlit es su modelo reactivo. Cada vez que el usuario interactúa con un componente de la interfaz, la aplicación se vuelve a ejecutar completamente desde el inicio.
Esto significa que cuando el usuario:
- mueve un slider
- presiona un botón
- introduce texto
- cambia un selector
Streamlit vuelve a ejecutar todo el script de Python.
Aunque este comportamiento simplifica el desarrollo, también puede generar confusión si no se comprende bien cómo funciona.
Ejemplo simple de reactividad
Supongamos una aplicación simple:
import streamlit as st
number = st.slider(«Selecciona un número», 0, 100)
st.write(«El número seleccionado es:», number)
Cada vez que el usuario mueve el slider, el script completo se ejecuta nuevamente.
Esto permite que la interfaz se actualice automáticamente.
El problema del estado
El modelo reactivo puede generar problemas cuando queremos recordar información entre ejecuciones.
Por ejemplo, si queremos guardar datos de una interacción previa del usuario, el valor puede perderse cuando el script se vuelve a ejecutar.
Aquí es donde entra el concepto de estado de sesión.
Qué es Session State
Streamlit introduce el objeto Session State para almacenar información entre ejecuciones del script.
Esto permite que ciertos valores persistan mientras el usuario mantiene abierta la sesión.
Ejemplo:
import streamlit as st
if «counter» not in st.session_state:
st.session_state.counter = 0
if st.button(«Incrementar»):
st.session_state.counter += 1
st.write(«Contador:», st.session_state.counter)
En este caso, el valor del contador se mantiene entre ejecuciones.
Cuándo usar Session State
El manejo del estado es útil en situaciones como:
- Contadores o métricas temporales
- Formularios interactivos
- Navegación entre secciones
- Almacenamiento temporal de datos
- Aplicaciones con múltiples pasos
Sin Session State, estos comportamientos serían difíciles de implementar.
Formularios en Streamlit
Para manejar interacciones más complejas, Streamlit ofrece formularios.
Ejemplo:
import streamlit as st
with st.form(«user_form»):
name = st.text_input(«Nombre»)
age = st.number_input(«Edad»)
submitted = st.form_submit_button(«Enviar»)
if submitted:
st.write(f»Hola {name}, tienes {age} años.»)
Los formularios permiten agrupar interacciones y ejecutar acciones solo cuando el usuario envía la información.
Controlando ejecuciones innecesarias
En aplicaciones complejas, la reactividad puede provocar que operaciones costosas se ejecuten repetidamente.
Para evitar esto, Streamlit permite utilizar caching.
Ejemplo:
@st.cache_data
def load_data():
# operación costosa
return data
Esto evita recalcular resultados que no han cambiado.
Buenas prácticas al desarrollar con Streamlit
Al trabajar con aplicaciones Streamlit es recomendable seguir algunas prácticas:
- Comprender el modelo reactivo de ejecución
- Utilizar Session State para mantener datos entre interacciones
- Evitar cálculos pesados en cada ejecución
- Utilizar caché para operaciones costosas
- Organizar el código de forma modular
Estas prácticas ayudan a mantener aplicaciones eficientes.
Streamlit en arquitecturas de datos
Streamlit se utiliza cada vez más para construir aplicaciones internas de datos.
Algunos ejemplos incluyen:
- dashboards interactivos
- herramientas de análisis interno
- interfaces para modelos de machine learning
- aplicaciones de exploración de datos
Muchas organizaciones integran estas aplicaciones con plataformas analíticas como Snowflake, permitiendo que los usuarios interactúen directamente con los datos.
Conclusión
Streamlit ofrece una forma rápida y sencilla de construir aplicaciones interactivas utilizando únicamente Python. Sin embargo, su modelo de ejecución reactiva puede generar confusión si no se comprende cómo funcionan las interacciones y la gestión del estado.
Entender conceptos como la reactividad y el uso de Session State permite desarrollar aplicaciones más robustas, optimizar el rendimiento y ofrecer mejores experiencias a los usuarios finales.
Con estas herramientas, Streamlit se convierte en una solución poderosa para crear interfaces de datos modernas dentro de las organizaciones.




