Skip to content

[Explicado] Selectbox de Streamlit: Uso, Parámetros y Ejemplos

Streamlit ha revolucionado la forma en que los desarrolladores de Python crean aplicaciones de datos. Es una poderosa biblioteca de código abierto que permite a los desarrolladores convertir scripts de datos en aplicaciones web compartibles con solo unas pocas líneas de código. Una de las características clave de Streamlit son sus widgets interactivos y, entre ellos, st.selectbox se destaca por su versatilidad y uso generalizado.

st.selectbox es un widget que muestra una caja de selección en tu aplicación de Streamlit. Permite a los usuarios seleccionar una opción de un menú desplegable, lo que lo convierte en una excelente herramienta para mejorar la interactividad de tu aplicación. Pero, ¿cómo funciona y cómo puedes aprovechar al máximo su uso? Sumérgete y explora.

¿Has oído hablar de esta increíble herramienta de análisis de datos y visualización de datos que puede convertir fácilmente tu aplicación de 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 de Streamlit sin esfuerzo. Echa un vistazo a este increíble video producido por Cómo explorar datos con PyGWalker en Python (opens in a new tab) que muestra los pasos detallados para potenciar tu aplicación de Streamlit con esta poderosa biblioteca de visualización de datos en Python!


Agradecimientos especiales 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 ver más ejemplos de PyGWalker.

Comprendiendo st.selectbox

¿Qué es st.selectbox?

st.selectbox es una función en Streamlit que crea un widget de caja de selección. Es un elemento de interfaz de usuario que muestra una lista de opciones al usuario. El usuario puede seleccionar una opción de la lista, que luego se puede utilizar en la aplicación para diversos fines, como filtrar datos, seleccionar modelos o controlar visualizaciones.

import streamlit as st
 
option = st.selectbox(
    '¿Cómo te gustaría ser contactado?',
    ('Correo electrónico', 'Teléfono de casa', 'Teléfono móvil')
)
st.write('Seleccionaste:', option)

En este ejemplo, st.selectbox crea una caja de selección con tres opciones: 'Correo electrónico', 'Teléfono de casa' y 'Teléfono móvil'. La opción seleccionada se almacena en la variable option, que luego se puede utilizar en otra parte del código.

Parámetros de st.selectbox

st.selectbox toma varios parámetros para controlar su comportamiento:

  • label: Una cadena que se utilizará como etiqueta de la caja de selección.
  • options: Una lista de opciones para mostrar en la caja de selección. Esto puede ser cualquier lista válida de Python u objeto similar a un array.
  • index: El índice de la opción seleccionada por defecto. Si no se proporciona, la primera opción se seleccionará por defecto.
  • format_func: Una función que toma una opción como argumento y devuelve una representación de cadena de la misma. Esto es útil si deseas mostrar las opciones de una manera específica.

¿Qué devuelve st.selectbox?

st.selectbox devuelve la opción actualmente seleccionada. Esto puede ser una cadena, un número u cualquier otro tipo de objeto, dependiendo de las opciones que proporcionaste. Este valor devuelto se puede utilizar en tu aplicación, por ejemplo, para filtrar un DataFrame, controlar una visualización o activar un cálculo.

Trabajando con st.selectbox

Cómo usar st.selectbox

Usar st.selectbox es sencillo. Primero, debes importar la biblioteca Streamlit. Luego, puedes llamar a st.selectbox con los parámetros de etiqueta y opciones. La opción seleccionada será devuelta por la función.

import streamlit as st
 
## Define las opciones
options = ['Opción 1', 'Opción 2', 'Opción 3']
 
## Crea la caja de selección
selected_option = st.selectbox('Elige una opción:', options)
 
## Muestra la opción seleccionada
st.write('Seleccionaste:', selected_option)

En este ejemplo, la caja de selección mostrará las opciones 'Opción 1', 'Opción 2' y 'Opción 3'.

Ejemplos de uso de st.selectbox

st.selectbox de Streamlit es un widget versátil que se puede utilizar en una variedad de escenarios. Veamos algunos ejemplos para comprender mejor su uso.

Ejemplo 1: Filtrado de datos

Un uso común de st.selectbox es permitir a los usuarios filtrar datos. Por ejemplo, si tienes un DataFrame que contiene información sobre diferentes países, podrías usar st.selectbox para permitir al usuario seleccionar un país y mostrar solo los datos de ese país.

import streamlit as st
import pandas as pd
 
## Carga los datos
data = pd.read_csv('datos.csv')
 
## Obtén la lista de países
countries = data['País'].unique()
 
## Crea la caja de selección
selected_country = st.selectbox('Elige un país:', countries)
 
## Filtra los datos
filtered_data = data[data['País'] == selected_country]
 
## Muestra los datos filtrados
st.write(filtered_data)

En este ejemplo, st.selectbox se utiliza para crear un menú desplegable con los países únicos del DataFrame. La selección del usuario luego se utiliza para filtrar el DataFrame y mostrar solo los datos del país seleccionado.

Ejemplo 2: Selección de modelo

Otro uso común de st.selectbox es en aplicaciones de aprendizaje automático, donde se puede utilizar para permitir al usuario seleccionar un modelo. Por ejemplo, si estás construyendo una aplicación de clasificación, podrías usar st.selectbox para permitir al usuario elegir entre diferentes clasificadores.

import streamlit as st
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
 
## Define the models
models = {
    'Random Forest': RandomForestClassifier(),
    'SVM': SVC()
}
 
## Create the select box
selected_model = st.selectbox('Elige un modelo:', list(models.keys()))
 
## Obtén el modelo seleccionado
model = models[selected_model]
 
## Utiliza el modelo...

En este ejemplo, st.selectbox se utiliza para crear un menú desplegable con los modelos disponibles. La selección del usuario se utiliza para recuperar el modelo correspondiente del diccionario.

Exploración de otros widgets de Streamlit

Aunque st.selectbox es un widget muy útil, Streamlit ofrece muchos otros widgets que se pueden utilizar para crear aplicaciones interactivas. Vamos a explorar algunos de ellos.

st.checkbox

st.checkbox es otro widget útil de Streamlit. Crea una casilla de verificación que el usuario puede marcar o desmarcar. Al igual que st.selectbox, st.checkbox devuelve el estado actual de la casilla de verificación, que se puede utilizar en tu aplicación.

import streamlit as st
 
## Crea la casilla de verificación
is_checked = st.checkbox('Marcame')
 
## Muestra el estado de la casilla de verificación
st.write('La casilla de verificación está', 'marcada' if is_checked else 'desmarcada')

st.slider

st.slider es un widget que crea un control deslizante. El usuario puede mover el control deslizante para seleccionar un valor dentro de un rango especificado. st.slider devuelve el valor actual del control deslizante.

import streamlit as st
 
## Crea el control deslizante
value = st.slider('Selecciona un valor', 0, 100, 50)
 
## Muestra el valor seleccionado
st.write('Has seleccionado:', value)

Estos son solo algunos ejemplos de los muchos widgets disponibles en Streamlit. Al combinar estos widgets, puedes crear aplicaciones altamente interactivas y fáciles de usar.

Uso avanzado y consideraciones

st.selectbox de Streamlit es un widget muy versátil y potente que puede mejorar en gran medida la interactividad de tus aplicaciones de Python. Sin embargo, hay algunos casos de uso avanzados y consideraciones que debes tener en cuenta para aprovechar al máximo su funcionalidad.

Habilitar/deshabilitar la búsqueda de texto en st.selectbox

Una de las características de st.selectbox es que permite a los usuarios buscar opciones escribiendo texto. Esto puede ser muy útil cuando el cuadro de selección tiene un gran número de opciones. Sin embargo, en algunos casos, es posible que desees desactivar esta función. Actualmente, Streamlit no proporciona una forma integrada de deshabilitar la búsqueda de texto en st.selectbox, pero esto podría cambiar en futuras versiones de la biblioteca.

Valor predeterminado e índice

De forma predeterminada, st.selectbox selecciona la primera opción de la lista. Sin embargo, puedes cambiar la opción seleccionada por defecto mediante el uso del parámetro index. El parámetro index toma un entero que representa el índice de la opción que se seleccionará de forma predeterminada.

import streamlit as st
 
# Crea el cuadro de selección con 'Opción 2' seleccionada de forma predeterminada
selected_option = st.selectbox('Elige una opción:', ['Opción 1', 'Opción 2', 'Opción 3'], index=1)
 
# Muestra la opción seleccionada
st.write('Has seleccionado:', selected_option)

En este ejemplo, se selecciona de forma predeterminada 'Opción 2' porque su índice (1) se pasa al parámetro index.

Formateo personalizado con format_func

st.selectbox te permite personalizar cómo se muestran las opciones utilizando el parámetro format_func. format_func es una función que toma una opción como argumento y devuelve una representación de cadena de la misma.

import streamlit as st
 
# Define una función de formato
def format_func(option):
    return option.upper()
 
# Crea el cuadro de selección con formato personalizado
selected_option = st.selectbox('Elige una opción:', ['Opción 1', 'Opción 2', 'Opción 3'], format_func=format_func)
 
# Muestra la opción seleccionada
st.write('Has seleccionado:', selected_option)

En este ejemplo, las opciones se muestran en mayúsculas gracias al parámetro format_func.

Conclusión

st.selectbox de Streamlit es un widget versátil y potente que puede mejorar en gran medida la interactividad de tus aplicaciones de Python. Ya sea que estés desarrollando una herramienta de visualización de datos, una aplicación de aprendizaje automático o cualquier otro tipo de aplicación interactiva, st.selectbox puede hacer que tu aplicación sea más amigable e intuitiva para el usuario. Así que adelante, experimenta con st.selectbox y observa cómo puede mejorar tus aplicaciones en Streamlit.

¿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 incrustar 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)

Preguntas frecuentes

  1. ¿Cuál es el valor predeterminado de st.selectbox en Streamlit? De forma predeterminada, st.selectbox selecciona la primera opción de la lista. Sin embargo, puedes especificar una opción predeterminada diferente utilizando el parámetro index.

  2. ¿Cómo puedo personalizar la visualización de las opciones en st.selectbox? Puedes personalizar la forma en que se muestran las opciones en st.selectbox utilizando el parámetro format_func. format_func es una función que toma una opción como entrada y devuelve una representación de cadena de la misma.

  3. ¿Puedo desactivar la función de búsqueda de texto en st.selectbox? Actualmente, Streamlit no ofrece una forma integrada de deshabilitar la función de búsqueda de texto en st.selectbox. Sin embargo, esto podría cambiar en futuras versiones de la biblioteca.