[Tutorial de Streamlit] Crea rápidamente visualizaciones interactivas de datos
Published on
Streamlit es una herramienta de código abierto que permite a los desarrolladores crear aplicaciones web interactivas con facilidad. Está diseñado para ayudar a los científicos de datos e ingenieros a agilizar sus tareas de visualización de datos y aprendizaje automático. Con Streamlit, puedes transformar simples scripts de Python en hermosas aplicaciones web impulsadas por datos con solo unas pocas líneas de código.
La visualización de datos es un aspecto crucial del análisis de datos. Nos permite entender conjuntos de datos complejos al representarlos en un formato gráfico. Streamlit admite varios tipos de visualizaciones, incluyendo gráficos de barras, gráficos de líneas, gráficos, gráficos circulares y histogramas. Este artículo te guiará a través del proceso de creación de estas visualizaciones utilizando Streamlit.
Crea fácilmente visualizaciones interactivas de datos en Streamlit con PyGWalker
PyGWalker (opens in a new tab) es otra herramienta increíble que funciona como una alternativa a Streamlit AgGrid.
Demo en línea de PyGWalker + Streamlit (opens in a new tab)
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.
Mira este increíble video producido por Sven de Coding is Fun (opens in a new tab) que muestra los pasos detallados para potenciar tu aplicación de Streamlit con esta potente 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 estos recursos:
- Cómo explorar datos y compartir hallazgos con PyGWalker y Streamlit (opens in a new tab)
- Página de GitHub de PyGWalker (opens in a new tab) para más ejemplos de PyGWalker.
Gráfico de barras en Streamlit
Un gráfico de barras es un tipo de gráfico que presenta datos categóricos con barras rectangulares proporcionales a los valores que representan. En Streamlit, se utiliza la función st.bar_chart()
para crear gráficos de barras. Es una forma simple y efectiva de comparar diferentes categorías de datos.
import streamlit as st
import pandas as pd
# Crear un dataframe de ejemplo
data = pd.DataFrame({
'Frutas': ['Manzanas', 'Naranjas', 'Plátanos', 'Uvas'],
'Cantidad': [15, 25, 35, 45]
})
# Crear un gráfico de barras
st.bar_chart(data)
En el fragmento de código anterior, primero importamos las bibliotecas necesarias y creamos un dataframe de ejemplo. Luego, usamos la función st.bar_chart()
para crear un gráfico de barras. El gráfico utilizará automáticamente los índices del dataframe para el eje x y los valores para el eje y.
Si bien la función st.bar_chart()
es fácil de usar, ofrece opciones de personalización limitadas. Para escenarios más complejos, es posible que necesites usar otras bibliotecas como Matplotlib o Plotly, que ofrecen más flexibilidad.
Gráfico de líneas en Streamlit
Un gráfico de líneas es un tipo de gráfico que muestra información como una serie de puntos de datos llamados 'marcadores' conectados por segmentos de línea recta. Es un tipo básico de gráfico común en muchos campos. En Streamlit, se utiliza la función st.line_chart()
para crear gráficos de líneas.
import streamlit as st
import pandas as pd
# Crear un dataframe de ejemplo
data = pd.DataFrame({
'Año': [2018, 2019, 2020, 2021],
'Ventas': [350, 480, 550, 680]
})
# Crear un gráfico de líneas
st.line_chart(data)
En el fragmento de código anterior, creamos un dataframe de ejemplo y luego usamos la función st.line_chart()
para crear un gráfico de líneas. El gráfico utilizará automáticamente los índices del dataframe para el eje x y los valores para el eje y.
Los gráficos de líneas de Streamlit son fáciles de usar pero menos personalizables. Para escenarios más complejos, es posible que necesites usar otras bibliotecas como Matplotlib o Plotly.
Graficar en Streamlit
Streamlit admite varias bibliotecas diferentes para crear gráficos, incluyendo Matplotlib, Plotly, Vega-Lite y más. Esto te permite crear una amplia variedad de visualizaciones, desde simples gráficos de líneas hasta gráficos interactivos complejos.
Por ejemplo, puedes crear un histograma utilizando Matplotlib y mostrarlo en Streamlit utilizando la función st.pyplot()
.
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# Generar algunos datos aleatorios
data = np.random.normal(0, 1, size=100)
# Crear un histograma
plt.hist(data, bins=20)
# Mostrar el gráfico en Streamlit
st.pyplot()
En el fragmento de código anterior, primero generamos algunos datos aleatorios. Luego, creamos un histograma utilizando la función plt.hist()
de Matplotlib. Finalmente, mostramos el gráfico en Streamlit utilizando la función st.pyplot()
.
Streamlit también admite bibliotecas de gráficos interactivos como Plotly. Esto te permite crear gráficos interactivos en los que los usuarios pueden hacer zoom, desplazarse y pasar el mouse para obtener información más detallada.
Gráfico circular en Streamlit
Las gráficas circulares son gráficos estadísticos circulares divididos en segmentos para ilustrar una proporción numérica. Si bien Streamlit no tiene una función incorporada para crear gráficas circulares (tartas), puedes crearlas utilizando otras bibliotecas como Matplotlib y mostrarlas en Streamlit utilizando la función st.pyplot()
.
import streamlit as st
import matplotlib.pyplot as plt
# Datos para graficar
etiquetas = 'Python', 'Java', 'C++', 'JavaScript'
tamaños = [215, 130, 245, 210]
# Crear una gráfica circular (tarta)
plt.pie(tamaños, labels=etiquetas, autopct='%1.1f%%')
# Mostrar la gráfica en Streamlit
st.pyplot()
En el fragmento de código anterior, primero definimos los datos para graficar. Luego, creamos una gráfica circular utilizando la función plt.pie()
de Matplotlib. Finalmente, mostramos la gráfica en Streamlit utilizando la función st.pyplot()
.
Crear gráficas circulares en Streamlit puede requerir un poco más de trabajo en comparación con las gráficas de barras o las gráficas de línea, pero ofrece más flexibilidad y opciones de personalización.
Histograma en Streamlit
Un histograma es una representación precisa de la distribución de datos numéricos. Es una estimación de la distribución de probabilidad de una variable continua. En Streamlit, puedes crear histogramas utilizando la función st.pyplot()
en combinación con Matplotlib.
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# Generar algunos datos aleatorios
datos = np.random.normal(0, 1, size=100)
# Crear un histograma
plt.hist(datos, bins=20)
# Mostrar el histograma en Streamlit
st.pyplot()
En el fragmento de código anterior, primero generamos algunos datos aleatorios. Luego, creamos un histograma utilizando la función plt.hist()
de Matplotlib. Finalmente, mostramos el histograma en Streamlit utilizando la función st.pyplot()
.
Los histogramas son una herramienta poderosa para visualizar la distribución de datos. Pueden proporcionar información sobre la dispersión general, la sesgo y la curtosis de los datos.
Técnicas avanzadas de visualización en Streamlit
La compatibilidad de Streamlit con varias bibliotecas de visualización abre un mundo de posibilidades para crear visualizaciones avanzadas. Por ejemplo, puedes usar la biblioteca Plotly para crear gráficas interactivas en 3D, gráficas geográficas y más.
import streamlit as st
import plotly.express as px
# Crear una gráfica de dispersión en 3D
fig = px.scatter_3d(x=[1, 2, 3, 4], y=[4, 3, 2, 1], z=[1, 4, 2, 3])
st.plotly_chart(fig)
En el fragmento de código anterior, primero importamos las bibliotecas necesarias. Luego, creamos una gráfica de dispersión en 3D utilizando la función px.scatter_3d()
de Plotly. Finalmente, mostramos la gráfica en Streamlit utilizando la función st.plotly_chart()
.
Personalización de las visualizaciones en Streamlit
Streamlit ofrece varias opciones para personalizar tus visualizaciones. Por ejemplo, puedes cambiar la paleta de colores, agregar títulos y etiquetas, ajustar las escalas de los ejes y más.
import streamlit as st
import matplotlib.pyplot as plt
# Generar algunos datos aleatorios
datos = np.random.normal(0, 1, size=100)
# Crear un histograma con color y título personalizados
plt.hist(datos, bins=20, color='skyblue', edgecolor='black')
plt.title('Mi Histograma Personalizado')
# Mostrar el histograma en Streamlit
st.pyplot()
En el fragmento de código anterior, primero generamos algunos datos aleatorios. Luego, creamos un histograma con un color y un título personalizados. Finalmente, mostramos el histograma en Streamlit utilizando la función st.pyplot()
.
Conclusión
Streamlit es una herramienta poderosa para crear visualizaciones interactivas de datos. Con su sintaxis sencilla y compatibilidad con varias bibliotecas de visualización, puedes crear una amplia variedad de visualizaciones, desde simples gráficas de barras y gráficas de línea hasta complejas gráficas interactivas. Ya sea que seas un científico de datos que busca compartir tus hallazgos o un desarrollador que construye una aplicación web basada en datos, Streamlit tiene todo lo que necesitas.
¿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.
Preguntas frecuentes
1. ¿Puedo crear gráficas circulares en Streamlit?
Si bien Streamlit no tiene una función incorporada para crear gráficas circulares (tartas), puedes crearlas utilizando otras bibliotecas como Matplotlib y mostrarlas en Streamlit utilizando la función st.pyplot()
.
2. ¿Cómo puedo personalizar mis visualizaciones en Streamlit?
Streamlit ofrece varias opciones para personalizar tus visualizaciones. Puedes cambiar la paleta de colores, agregar títulos y etiquetas, ajustar las escalas de los ejes y más. Las opciones exactas de personalización dependen de la biblioteca de visualización que estés utilizando.
3. ¿Puedo crear gráficas interactivas en Streamlit?
Sí, Streamlit admite varias bibliotecas de visualización interactivas, incluyendo Plotly, Vega-Lite y más. Esto te permite crear gráficas interactivas en las que los usuarios pueden hacer zoom, desplazarse y pasar el cursor para obtener información más detallada.