Introducción
En el mundo de la ciencia de datos y el análisis, la visualización efectiva de información es fundamental para comunicar insights y tomar decisiones informadas. Python ofrece diversas herramientas para crear dashboards interactivos y aplicaciones de visualización. En este artículo, exploraremos tres de las más populares: Streamlit, Dash y Bokeh.
1. Streamlit: Simplicidad y Rapidez
¿Qué es Streamlit?
Streamlit es un framework de código abierto que permite crear aplicaciones web de datos de forma rápida y sencilla, sin necesidad de conocimientos profundos de desarrollo web.
Características Principales
- Sintaxis simple: Escribe Python puro, sin HTML, CSS o JavaScript
- Reactividad automática: La aplicación se actualiza automáticamente cuando cambian los datos
- Componentes integrados: Widgets interactivos listos para usar
- Despliegue sencillo: Compatible con Streamlit Cloud, Heroku, AWS, etc.
Ejemplo Práctico con Streamlit
import streamlit as st
import pandas as pd
import numpy as np
# Título de la aplicación
st.title("Dashboard de Ventas con Streamlit")
# Crear datos de ejemplo
data = pd.DataFrame({
'Mes': ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo'],
'Ventas': [15000, 18000, 22000, 19000, 25000],
'Gastos': [12000, 14000, 15000, 13000, 16000]
})
# Mostrar tabla
st.subheader("Datos de Ventas y Gastos")
st.dataframe(data)
# Gráfico de líneas
st.subheader("Tendencia de Ventas y Gastos")
st.line_chart(data.set_index('Mes'))
# Widget interactivo
mes_seleccionado = st.selectbox(
'Selecciona un mes:',
data['Mes']
)
# Mostrar información del mes seleccionado
info_mes = data[data['Mes'] == mes_seleccionado]
st.write(f"**Ventas en {mes_seleccionado}**: ${info_mes['Ventas'].values[0]:,}")
st.write(f"**Gastos en {mes_seleccionado}**: ${info_mes['Gastos'].values[0]:,}")
Instalación y Ejecución
# Instalar Streamlit
pip install streamlit
# Ejecutar la aplicación
streamlit run app.py
2. Dash: Potencia y Flexibilidad
¿Qué es Dash?
Dash, desarrollado por Plotly, es un framework para construir aplicaciones web analíticas con capacidades avanzadas de visualización interactiva.
Características Principales
- Basado en React.js: Componentes modernos y reactivos
- Integración con Plotly: Gráficos profesionales e interactivos
- Callbacks potentes: Control total sobre la interactividad
- Escalabilidad: Ideal para aplicaciones empresariales complejas
Ejemplo Práctico con Dash
import dash
from dash import dcc, html, Input, Output
import plotly.graph_objs as go
import pandas as pd
# Crear la aplicación
app = dash.Dash(__name__)
# Datos de ejemplo
df = pd.DataFrame({
'Mes': ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo'],
'Ventas': [15000, 18000, 22000, 19000, 25000],
'Clientes': [120, 135, 150, 142, 168]
})
# Layout de la aplicación
app.layout = html.Div([
html.H1("Dashboard Interactivo con Dash"),
html.Div([
html.Label("Selecciona una métrica:"),
dcc.Dropdown(
id='metrica-dropdown',
options=[
{'label': 'Ventas', 'value': 'Ventas'},
{'label': 'Clientes', 'value': 'Clientes'}
],
value='Ventas'
)
], style={'width': '50%', 'margin': '20px'}),
dcc.Graph(id='grafico-principal')
])
# Callback para actualizar el gráfico
@app.callback(
Output('grafico-principal', 'figure'),
[Input('metrica-dropdown', 'value')]
)
def actualizar_grafico(metrica_seleccionada):
figura = go.Figure()
figura.add_trace(go.Bar(
x=df['Mes'],
y=df[metrica_seleccionada],
name=metrica_seleccionada,
marker_color='lightblue'
))
figura.update_layout(
title=f'Análisis de {metrica_seleccionada}',
xaxis_title='Mes',
yaxis_title=metrica_seleccionada,
hovermode='x unified'
)
return figura
# Ejecutar la aplicación
if __name__ == '__main__':
app.run_server(debug=True)
Instalación
# Instalar Dash
pip install dash plotly pandas
3. Bokeh: Visualizaciones Elegantes e Interactivas
¿Qué es Bokeh?
Bokeh es una biblioteca de visualización interactiva que genera gráficos en navegadores web modernos, ofreciendo alta interactividad y rendimiento.
Características Principales
- Interactividad nativa: Pan, zoom, selección, hover incorporados
- Visualizaciones complejas: Soporte para grandes conjuntos de datos
- Servidor Bokeh: Para aplicaciones más dinámicas
- Integración con notebooks: Jupyter, JupyterLab
Ejemplo Práctico con Bokeh
from bokeh.plotting import figure, output_file, show
from bokeh.models import HoverTool
from bokeh.layouts import column
import pandas as pd
# Crear datos
data = pd.DataFrame({
'meses': ['Ene', 'Feb', 'Mar', 'Abr', 'May'],
'ventas': [15000, 18000, 22000, 19000, 25000],
'utilidad': [3000, 4000, 7000, 6000, 9000]
})
# Configurar salida
output_file("dashboard_bokeh.html")
# Crear figura para ventas
p1 = figure(
title="Ventas Mensuales",
x_range=data['meses'],
height=350,
toolbar_location="above"
)
p1.vbar(
x=data['meses'],
top=data['ventas'],
width=0.5,
color='navy',
alpha=0.7
)
# Añadir herramienta hover
hover1 = HoverTool(tooltips=[("Mes", "@x"), ("Ventas", "@top{$0,0}")])
p1.add_tools(hover1)
# Crear figura para utilidad
p2 = figure(
title="Utilidad Mensual",
x_range=data['meses'],
height=350,
toolbar_location="above"
)
p2.line(
data['meses'],
data['utilidad'],
line_width=3,
color='green',
alpha=0.8
)
p2.circle(
data['meses'],
data['utilidad'],
size=10,
color='darkgreen'
)
# Añadir herramienta hover
hover2 = HoverTool(tooltips=[("Mes", "@x"), ("Utilidad", "@y{$0,0}")])
p2.add_tools(hover2)
# Mostrar ambos gráficos
show(column(p1, p2))
Instalación
# Instalar Bokeh
pip install bokeh pandas
Comparación de las Herramientas
| Característica | Streamlit | Dash | Bokeh |
|---|---|---|---|
| Curva de aprendizaje | Muy fácil | Moderada | Moderada |
| Velocidad de desarrollo | Muy rápida | Media | Media |
| Personalización | Limitada | Alta | Alta |
| Interactividad | Automática | Manual (callbacks) | Nativa |
| Despliegue | Muy sencillo | Requiere configuración | Archivos HTML o servidor |
| Mejor para | Prototipos rápidos, demos | Apps empresariales | Visualizaciones científicas |
¿Cuál elegir?
Elige Streamlit si:
- Necesitas crear un prototipo rápidamente
- Tu equipo no tiene experiencia en desarrollo web
- Quieres compartir análisis de datos de forma sencilla
Elige Dash si:
- Desarrollas aplicaciones empresariales complejas
- Necesitas control total sobre la UI y la lógica
- Requieres integración con sistemas existentes
Elige Bokeh si:
- Te enfocas en visualizaciones científicas o estadísticas
- Trabajas con grandes volúmenes de datos
- Necesitas gráficos altamente interactivos embebidos
Conclusión
Las tres herramientas son excelentes opciones para visualización de datos en Python. La elección dependerá de tus necesidades específicas, experiencia técnica y el tipo de aplicación que deseas desarrollar.
Streamlit brilla por su simplicidad, Dash por su robustez empresarial, y Bokeh por sus capacidades de visualización avanzada. Lo ideal es familiarizarse con las tres y elegir la más apropiada para cada proyecto.
Recursos Adicionales
¿Qué herramienta prefieres para tus proyectos de visualización? ¡Comparte tu experiencia en los comentarios!
Top comments (0)