Skip to content

Streamlit Session State: La guía esencial para empezar

Updated on

Streamlit ha revolucionado la forma en que abordamos el desarrollo web, especialmente en el ámbito de la ciencia de datos y el aprendizaje automático. Una de sus características más poderosas es el Session State. Este artículo tiene como objetivo brindar una guía completa sobre el Streamlit Session State, su uso, beneficios y cómo se compara con otras herramientas de gestión del estado.

¿Has oído hablar de esta increíble herramienta de análisis de datos y visualización de datos que convierte tu aplicación Streamlit en Tableau?

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a incorporar fácilmente una interfaz similar a Tableau en tu propia aplicación Streamlit sin esfuerzo.

PyGWalker para visualización de datos en Streamlit (opens in a new tab)

Introducción a Streamlit y Session State

¿Qué es Streamlit?

Streamlit es una biblioteca de Python de código abierto que permite a los desarrolladores crear aplicaciones web interactivas con facilidad. Es especialmente popular entre los científicos de datos e ingenieros de aprendizaje automático debido a su simplicidad y la capacidad de crear aplicaciones web basadas en datos de forma rápida.

Comprensión del Session State en Streamlit

En el contexto del desarrollo web, una sesión se refiere al periodo en el que un usuario interactúa con una aplicación web. Los datos que la aplicación almacena sobre esta interacción del usuario se conocen como Session State. En Streamlit, el Session State permite a los desarrolladores mantener datos a través de reejecuciones, lo que permite la creación de aplicaciones más interactivas y dinámicas.

Utilizando Streamlit Session State

Comenzar rápidamente con Streamlit Session State

Utilizar Streamlit Session State es sencillo. Te permite almacenar datos que persisten a través de las reejecuciones de la aplicación. Por ejemplo, si deseas almacenar la entrada de un usuario desde un widget de entrada de texto, puedes almacenarlo en el session state. Aquí están los pasos:

  1. Instala Streamlit si aún no lo has hecho: pip install streamlit
  2. Crea un nuevo archivo Python e importa Streamlit: import streamlit as st
  3. Inicializa tu session state: if 'my_var' not in st.session_state: st.session_state['my_var'] = 0
  4. Utiliza tu session state en tu aplicación: st.session_state['my_var'] += 1

Aquí tienes un código de ejemplo:

import streamlit as st
 
if 'user_input' not in st.session_state:
    st.session_state['user_input'] = ''
 
user_input = st.text_input("Ingresa algún texto")
if user_input:
    st.session_state['user_input'] = user_input
 
st.write(f"Ingresaste: {st.session_state['user_input']}")

En este ejemplo, la entrada del usuario se almacena en el session state y persiste incluso si la aplicación se reejecuta.

Más allá de lo básico: Casos de uso avanzados y mejores prácticas

Una vez que hayas comprendido lo básico, la diversión real comienza. El Streamlit Session State abre un mundo de casos de uso avanzados. Por ejemplo, puedes utilizarlo para almacenar información de autenticación de usuarios. Aquí tienes un ejemplo sencillo:

if 'username' not in st.session_state:
    st.session_state['username'] = ''
 
username = st.text_input("Ingresa tu nombre de usuario")
if username:
    st.session_state['username'] = username
 
st.write(f"Hola, {st.session_state['username']}!")

En este ejemplo, el nombre de usuario del usuario se almacena en el session state y persiste incluso si la aplicación se reejecuta.

Recuerda que con un gran poder viene una gran responsabilidad. Es importante gestionar adecuadamente el session state para garantizar que tu aplicación funcione como una máquina bien engrasada.

Liberando el poder de Streamlit Session State

Streamlit Session State: Un cambio de juego en el desarrollo web

Streamlit Session State es un cambio de juego en el desarrollo web. Permite la creación de aplicaciones dinámicas e interactivas, ya que los datos pueden persistir a través de reejecuciones. Esto es una bendición para las aplicaciones que requieren entrada del usuario o tienen múltiples etapas o pasos.

Streamlit Session State: Un arma secreta en aprendizaje automático y ciencia de datos

En el mundo del aprendizaje automático y la ciencia de datos, Streamlit Session State es el arma secreta que no sabías que necesitabas. Se puede utilizar para almacenar desde:

  • Parámetros del modelo
  • Entradas de usuario para filtros de datos
  • Resultados intermedios de procesamiento de datos

Esto significa que puedes evitar cálculos innecesarios y potenciar el rendimiento de tu aplicación.

Los detalles finos: Rendimiento y limitaciones de Streamlit Session State

Si bien Streamlit Session State es una herramienta poderosa, también es importante tener en cuenta sus limitaciones. El session state se almacena en memoria, por lo que puede aumentar el uso de memoria de tu aplicación. Por lo tanto, es crucial gestionar adecuadamente el session state y evitar almacenar grandes cantidades de datos que podrían provocar problemas de rendimiento.

Streamlit Session State vs Otras herramientas de gestión del estado

Comparación: Streamlit Session State vs st.cache

Streamlit ofrece otra característica para la gestión del estado: st.cache. Si bien tanto st.cache como Session State te permiten almacenar datos a través de reejecuciones, cumplen diferentes propósitos. st.cache está diseñado para almacenar en caché los resultados de cálculos largos para mejorar el rendimiento, mientras que Session State está diseñado para almacenar datos de interacción del usuario a través de reejecuciones.

Aquí tienes un ejemplo sencillo de cómo usar st.cache:

@st.cache
def expensive_computation():
    # Aquí va algún cálculo costoso
    return result
 
result = expensive_computation()

En este ejemplo, el resultado del cálculo costoso se almacena en caché y se reutiliza en reejecuciones posteriores, mejorando el rendimiento de la aplicación.

¿Has oído hablar de esta increíble herramienta de análisis de datos y visualización de datos que convierte tu aplicación de Streamlit en Tableau?

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a integrar fácilmente una interfaz similar a Tableau en tu propia aplicación de Streamlit sin esfuerzo. ¡Mira este increíble video producido por Cómo explorar datos con PyGWalker en Python (opens in a new tab) que demuestra los pasos detallados para potenciar tu aplicación de Streamlit con esta potente biblioteca de visualización de datos en Python!


Un agradecimiento especial a Sven y su gran contribución (opens in a new tab) a la comunidad de PyGWalker.

Además, también puedes consultar la Página de GitHub de PyGWalker (opens in a new tab) para obtener más ejemplos de PyGWalker.

Sesión de Streamlit versus Redux: Un análisis detallado

Redux es una popular biblioteca de gestión de estados para aplicaciones de JavaScript, especialmente aquellas construidas con React. Proporciona una tienda centralizada para el estado que debe utilizarse en toda la aplicación, con reglas que garantizan que el estado solo pueda actualizarse de manera predecible.

Por otro lado, la Sesión de Streamlit es una característica de la biblioteca de Streamlit que permite que los datos persistan en repeticiones de la aplicación. Se utiliza principalmente en aplicaciones de Python en el lado del servidor para crear aplicaciones web interactivas y dinámicas.

Si bien tanto Redux como la Sesión de Streamlit cumplen el mismo propósito de gestionar el estado, se utilizan en contextos diferentes y tienen características diferentes:

  • Lenguaje de programación: Redux se utiliza con JavaScript, mientras que la Sesión de Streamlit se utiliza con Python.
  • Tipo de aplicación: Redux se utiliza típicamente en aplicaciones del lado del cliente, mientras que la Sesión de Streamlit se utiliza en aplicaciones del lado del servidor.
  • Persistencia del estado: En Redux, el estado persiste siempre que el usuario esté en el sitio web o hasta que el estado se borre de forma explícita. En Streamlit, el estado de la sesión persiste en repeticiones de la aplicación, pero se borra cuando el usuario cierra la aplicación.
  • Curva de aprendizaje: Redux tiene una curva de aprendizaje más pronunciada debido a sus conceptos como reductores, acciones y middleware. La Sesión de Streamlit, por otro lado, es más simple y más fácil de usar, especialmente para aquellos que ya están familiarizados con Python.

Sesión de Streamlit versus Local Storage y Context API

El almacenamiento local y la API de contexto son otras soluciones de gestión de estado utilizadas en aplicaciones de JavaScript.

El almacenamiento local es un objeto de almacenamiento web que te permite almacenar datos de forma persistente en el navegador del usuario. Los datos almacenados en el almacenamiento local no tienen tiempo de vencimiento y permanecen incluso después de que se cierre y vuelva a abrir el navegador. Es útil para almacenar pequeñas cantidades de datos, como preferencias de usuario o datos de sesión.

La API de contexto, introducida en React 16.3, te permite compartir datos que pueden considerarse "globales" para un árbol de componentes de React, como el usuario autenticado actual, el tema o el idioma. Está diseñada para compartir datos que pueden considerarse globales para un árbol de componentes de React.

Si bien estas herramientas son poderosas por sí solas, no se pueden comparar directamente con la Sesión de Streamlit ya que se utilizan en diferentes lenguajes de programación y contextos de aplicación:

  • Lenguaje de programación: Tanto el almacenamiento local como la API de contexto se utilizan con JavaScript, mientras que la Sesión de Streamlit se utiliza con Python.
  • Persistencia de datos: El almacenamiento local permite que los datos persistan incluso cuando se cierra y vuelve a abrir el navegador, mientras que la API de contexto y la Sesión de Streamlit no tienen esta característica.
  • Casos de uso: El almacenamiento local es útil para almacenar pequeñas cantidades de datos, como preferencias de usuario o datos de sesión. La API de contexto es útil para compartir datos globales en un árbol de componentes de React. La Sesión de Streamlit es útil para almacenar datos que necesitan persistir en repeticiones de la aplicación.

Manejo de tipos de datos complejos en la Sesión de Streamlit

La Sesión de Streamlit no se limita solo al almacenamiento de tipos de datos simples como enteros o cadenas. También puede manejar tipos de datos complejos como listas, diccionarios, conjuntos e incluso objetos personalizados. Esto lo convierte en una herramienta versátil para gestionar el estado en tus aplicaciones de Streamlit.

Por ejemplo, puedes almacenar una lista de entradas de usuario en el estado de la sesión:

if 'user_inputs' not in st.session_state:
    st.session_state['user_inputs'] = []
 
user_input = st.text_input("Ingresa un texto")
if user_input:
    st.session_state['user_inputs'].append(user_input)
 
st.write(f"Ingresaste: {st.session_state['user_inputs']}")

En este ejemplo, cada vez que el usuario ingresa algún texto, se agrega a una lista almacenada en el estado de la sesión.

Conclusión

La Sesión de Streamlit es una herramienta poderosa para gestionar el estado en tus aplicaciones de Streamlit. Te permite crear aplicaciones más interactivas y dinámicas almacenando datos en repeticiones de la aplicación. Ya sea que seas un principiante que recién comienza con Streamlit o un desarrollador experimentado que busca optimizar sus aplicaciones, comprender y utilizar eficazmente la Sesión de Streamlit puede mejorar significativamente tu proceso de desarrollo web.

Preguntas frecuentes

¿Qué es la Sesión de Streamlit?

La Sesión de Streamlit es una característica que permite que los datos persistan en repeticiones de la aplicación. Se utiliza para almacenar datos sobre las interacciones del usuario, lo que hace posible crear aplicaciones más interactivas y dinámicas.

¿Cuáles son las desventajas de Streamlit?

While Streamlit es una herramienta poderosa para crear aplicaciones web interactivas, tiene algunas limitaciones. Por ejemplo, está diseñado principalmente para prototipos y puede no ser adecuado para construir aplicaciones web complejas a gran escala. Además, al ser una biblioteca relativamente nueva, puede carecer de algunas características que se encuentran en frameworks de desarrollo web más maduros.

¿Las sesiones de Streamlit caducan?

Las sesiones de Streamlit no caducan por sí solas. Sin embargo, los datos en el estado de sesión se borran cuando el usuario cierra la aplicación.

¿Cómo utilizar el estado de sesión en ASP.NET?

El estado de sesión en ASP.NET es una característica que te permite almacenar y recuperar valores específicos del usuario temporalmente. Puedes utilizarlo llamando al objeto Session y asignándole valores, como Session["UserName"] = "John Doe";. Ten en cuenta que esto es diferente del estado de sesión de Streamlit, que se utiliza en aplicaciones de Python.