Skip to content

Crear paneles de datos interactivos con Streamlit: un tutorial exhaustivo

Updated on

En el ámbito de la ciencia de datos, la capacidad de visualizar e interactuar con los datos es fundamental. Aquí es donde entra en juego Streamlit. Streamlit es una biblioteca de Python de código abierto que te permite crear aplicaciones web personalizadas para la exploración y visualización de datos. En este tutorial, nos adentraremos en el mundo de Streamlit y aprenderemos cómo crear paneles de datos interactivos, implementar modelos de aprendizaje automático y más.

¿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.

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

Introducción a Streamlit

¿Qué es Streamlit?

Streamlit es una biblioteca de Python de código abierto que facilita la creación de aplicaciones web personalizadas para el aprendizaje automático y la ciencia de datos. En un mundo donde los datos son el rey, Streamlit es la reina, proporcionando las herramientas necesarias para dar vida a tus datos.

La interfaz intuitiva y fácil de usar de Streamlit te permite convertir scripts de datos en aplicaciones web compartibles de forma rápida y sencilla. Con solo unas pocas líneas de código, puedes crear paneles de datos interactivos y visualizaciones de datos hermosas. Ya seas un científico de datos experimentado o un principiante que acaba de sumergir los pies en el mar de datos, Streamlit ofrece una plataforma versátil para ayudarte a comprender y presentar tus datos.

Los beneficios de usar Streamlit para la visualización de datos

La visualización de datos es un aspecto fundamental del análisis de datos. Nos permite comprender conjuntos de datos complejos al representarlos en un formato gráfico y fácil de entender. Streamlit sobresale en esta área, ofreciendo una variedad de beneficios:

  • Visualización en tiempo real: Las capacidades en tiempo real de Streamlit significan que tus paneles de datos se actualizarán al instante a medida que cambien tus datos. Esto es especialmente útil para supervisar fuentes de datos en vivo o realizar un seguimiento de los KPI.

  • Paneles interactivos: Con Streamlit, tus paneles no son solo imágenes estáticas, sino aplicaciones web interactivas. Esto permite a los usuarios manipular los datos, acercarse a áreas específicas y adentrarse realmente en los detalles.

  • Facilidad de uso: Streamlit está diseñado para ser fácil de usar. No necesitas ser un desarrollador web para crear paneles impresionantes. Si puedes escribir código Python, puedes usar Streamlit.

  • Integración con el conjunto de herramientas de ciencia de datos de Python: Streamlit se integra perfectamente con bibliotecas populares de Python como Pandas, NumPy y Plotly, lo que lo convierte en una herramienta poderosa para cualquier científico de datos.

El papel de Streamlit en los modelos de aprendizaje automático

Streamlit no es solo para la visualización de datos. También es una herramienta poderosa para el aprendizaje automático. Con Streamlit, puedes crear rápidamente aplicaciones web interactivas para mostrar tus modelos de aprendizaje automático. Esto puede ser especialmente útil para demostrar las capacidades de tu modelo a las partes interesadas o para la depuración y ajuste del modelo.

Por ejemplo, podrías construir una aplicación de Streamlit que tome la entrada del usuario, la pase a tu modelo de aprendizaje automático y muestre la predicción en tiempo real. O podrías crear una aplicación que te permita ajustar los parámetros de tu modelo y ver cómo afecta la salida. Las posibilidades son infinitas.

Construir un panel con Streamlit

Cómo construir un panel con Streamlit

Construir un panel con Streamlit es un proceso sencillo. Aquí tienes un ejemplo básico para que puedas empezar:

import streamlit as st
import pandas as pd
 
# Cargar datos
data = pd.read_csv('data.csv')
 
# Crear un título
st.title('Mi primer panel de Streamlit')
 
# Mostrar datos en una tabla
st.table(data)

En este ejemplo, primero importamos las bibliotecas necesarias. Luego, cargamos nuestros datos utilizando Pandas. A continuación, creamos un título para nuestro panel utilizando la función st.title(). Por último, mostramos nuestros datos en una tabla utilizando la función st.table().

Panel de datos en tiempo real con Streamlit

Una de las características clave de Streamlit es su capacidad para crear paneles en tiempo real. Esto es especialmente útil cuando se trabaja con fuentes de datos en vivo o cuando necesitas supervisar cambios en tus datos a lo largo del tiempo.

Para crear un panel en tiempo real, puedes utilizar la función st.write() de Streamlit en un bucle. Aquí tienes un ejemplo:

import streamlit as st
import pandas as pd
import time
 
# Crear un título
st.title('Panel de datos en tiempo real')
 
# Inicializar un DataFrame vacío
data = pd.DataFrame()
 
# Actualizar datos cada segundo
for i in range(100):
    # Simular nuevos datos
    nuevos_datos = pd.DataFrame({'valor': [i]}, index=[time.time()])
    
    # Añadir nuevos datos a los datos existentes
    data = data.append(nuevos_datos)
    
    # Mostrar datos
    st.write(data)
    
    # Esperar 1 segundo antes de actualizar
    time.sleep(1)

En este ejemplo, primero creamos un título para nuestro panel. A continuación, inicializamos un DataFrame vacío para almacenar nuestros datos. Después, entramos en un bucle que simula nuevos datos que llegan cada segundo. Añadimos estos nuevos datos a nuestros datos existentes y los mostramos utilizando la función st.write(). Por último, esperamos un segundo antes de actualizar los datos nuevamente.

Visualización interactiva de datos con Streamlit

Streamlit también te permite crear visualizaciones interactivas de datos. Esto se puede hacer utilizando la función st.plotly_chart(), que integra Streamlit con la biblioteca Plotly.

Aquí tienes un ejemplo de cómo puedes crear un gráfico de dispersión interactivo:

import streamlit as st
import pandas as pd

importar plotly.express como px

Cargar datos

data = pd.read_csv('data.csv')

Crear un gráfico de dispersión

fig = px.scatter(data, x='x', y='y')

Mostrar el gráfico

st.plotly_chart(fig)


En este ejemplo, primero cargamos nuestros datos. Luego creamos un gráfico de dispersión utilizando Plotly Express. Finalmente, mostramos el gráfico utilizando la función `st.plotly_chart()`.

Esto es solo la punta del iceberg cuando se trata de lo que puedes hacer con Streamlit. Con un poco de creatividad y conocimientos de Python, puedes crear tableros interactivos impresionantes que den vida a tus datos.

## Visualización de datos en tiempo real con Streamlit

La capacidad de Streamlit para manejar datos en tiempo real es una de sus características más poderosas. Esto es especialmente útil para aplicaciones que requieren monitoreo constante o actualizaciones en vivo. Por ejemplo, podrías crear un tablero de Streamlit para monitorear datos de sensores IoT en tiempo real. Aquí tienes un ejemplo sencillo:

```python
import streamlit as st
import random
import time

st.title('Datos de sensores IoT en tiempo real')

data = []

for _ in range(100):
    data.append(random.randint(0, 100))
    st.line_chart(data)
    time.sleep(0.1)

En este ejemplo, estamos simulando datos de sensores IoT en tiempo real generando números aleatorios y actualizando el gráfico de líneas cada 0.1 segundos.

Modelos interactivos de aprendizaje automático con Streamlit

La capacidad de interactividad de Streamlit también se extiende a los modelos de aprendizaje automático. Puedes crear tableros que permitan a los usuarios ajustar los parámetros del modelo y ver los efectos en tiempo real. Esto puede ser una herramienta poderosa para comprender cómo diferentes parámetros influyen en las predicciones de un modelo.

Por ejemplo, supongamos que tienes un modelo de aprendizaje automático que predice la rotación de clientes basada en características como la edad del cliente, la antigüedad y los cargos mensuales. Podrías crear una aplicación de Streamlit que permita a los usuarios ajustar estos parámetros y ver la probabilidad de rotación predicha en tiempo real. Aquí tienes un ejemplo básico:

import streamlit as st
from sklearn.ensemble import RandomForestClassifier
import numpy as np
 
st.title('Predicción de rotación de clientes')
 
# Cargar tu modelo entrenado
modelo = RandomForestClassifier()
modelo.load('mi_modelo.pkl')
 
# Obtener la entrada del usuario
edad = st.slider('Edad', 18, 100)
antigüedad = st.slider('Antigüedad (meses)', 1, 72)
cargos_mensuales = st.slider('Cargos mensuales', 20.0, 100.0)
 
# Realizar la predicción
datos_entrada = np.array([[edad, antigüedad, cargos_mensuales]])
prediccion = modelo.predict_proba(datos_entrada)
 
# Mostrar la predicción
st.write(f'Probabilidad de rotación: {prediccion[0][1]}')

En este ejemplo, primero cargamos nuestro modelo entrenado. Luego utilizamos la función slider de Streamlit para obtener la entrada del usuario para la edad, antigüedad y cargos mensuales. Pasamos esta entrada a nuestro modelo para realizar una predicción y, finalmente, mostramos la probabilidad de rotación predicha.

Visualización de datos de IoT con Streamlit

Con el crecimiento del Internet de las cosas (IoT), hay una creciente necesidad de herramientas que puedan visualizar datos de IoT. Streamlit es ideal para esta tarea, gracias a sus capacidades en tiempo real y su facilidad de uso.

Para este ejemplo, supongamos que tenemos un archivo CSV llamado datos_sensor.csv que contiene datos de sensores IoT en tiempo real. Así es como puedes mostrar estos datos en Streamlit:

import streamlit as st
import pandas as pd
import time
 
st.title('Datos de sensores IoT en tiempo real')
 
# Cargar los datos
datos = pd.read_csv('datos_sensor.csv')
 
# Mostrar los datos en tiempo real
for i in range(len(datos)):
    # Mostrar el punto de datos actual
    st.line_chart(datos[:i+1])
    
    # Esperar un corto período de tiempo antes de mostrar el siguiente punto de datos
    time.sleep(0.1)

En este ejemplo, primero cargamos los datos del sensor desde el archivo CSV. Luego mostramos los datos en tiempo real agregando gradualmente un punto de datos a la vez al gráfico de líneas. Después de agregar cada punto de datos, esperamos un corto período de tiempo antes de agregar el siguiente. Esto crea el efecto de mostrar los datos en tiempo real.

Conclusión

Streamlit es una herramienta poderosa para crear paneles de datos interactivos. Ya sea que estés visualizando datos en tiempo real de IoT, mostrando un modelo de aprendizaje automático o simplemente explorando un conjunto de datos, Streamlit ofrece una plataforma fácil de usar y flexible para hacerlo. Con su sintaxis basada en Python y una amplia gama de características, no es de extrañar que Streamlit se esté convirtiendo en una opción popular para científicos de datos y analistas. Estos ejemplos solo rascan la superficie de lo que es posible con Streamlit, y te animo a explorar más sus capacidades.

¿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 incrustar fácilmente una interfaz similar a Tableau en tu propia aplicación de Streamlit sin esfuerzo.

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

Preguntas frecuentes

¿Es Streamlit bueno para paneles de control?

Sí, Streamlit es una excelente herramienta para crear paneles de datos interactivos. Está basado en Python, lo que lo hace accesible para muchos científicos de datos y ofrece una amplia gama de características para visualización de datos e interactividad.

¿Es Streamlit mejor que Flask?

Streamlit y Flask sirven para diferentes propósitos. Flask es un marco de trabajo web de propósito general, mientras que Streamlit está diseñado específicamente para crear paneles de datos. Si buscas construir un panel de datos de manera rápida y sencilla, Streamlit es probablemente la mejor opción.

¿Cuáles son las desventajas de Streamlit?

Si bien Streamlit es una herramienta poderosa, no está exenta de algunas desventajas. Por un lado, no es tan personalizable como algunas otras herramientas de creación de paneles. Además, aunque es excelente para crear aplicaciones simples e independientes, es posible que no sea la mejor opción para aplicaciones web más complejas.

¿Por qué Dash es mejor que Streamlit?

La elección entre Dash y Streamlit depende de tus necesidades específicas. Dash, que también es una biblioteca de Python para crear aplicaciones web interactivas, ofrece más opciones de personalización que Streamlit. Sin embargo, Streamlit es elogiado a menudo por su simplicidad y facilidad de uso, lo que lo convierte en una mejor opción para prototipos rápidos y paneles simples.