Dashboards (Streamlit / Dash / Gradio)
Transforme notebooks em aplicativos compartilháveis: Streamlit para dashboards de dados rápidos, Dash para produtos focados em Plotly, Gradio para demonstrações de modelos.
Busque em todas as páginas da documentação
Transforme notebooks em aplicativos compartilháveis: Streamlit para dashboards de dados rápidos, Dash para produtos focados em Plotly, Gradio para demonstrações de modelos.
Cartão de receita de referência rápida - pronto para copiar e colar.
# streamlit_app.py
import streamlit as st
import pandas as pd
@st.cache_data
def load():
return pd.read_parquet("sales.parquet")
df = load()
region = st.selectbox("Região", sorted(df["region"].unique()))
filtered = df[df["region"] == region]
st.line_chart(filtered.set_index("ordered_at")["revenue"])Quando usar isso:
# Padrão mínimo Streamlit + Plotly
import streamlit as st
import pandas as pd
import plotly.express as px
st.set_page_config(page_title="Explorador de Receita", layout="wide")
@st.cache_data(show_spinner="Carregando vendas...")
def load_sales() -> pd.DataFrame:
# Substitua por read_parquet em produção
return pd.DataFrame(
{
"ordered_at": pd.date_range("2025-01-01", periods=30, freq="D", tz="UTC"),
"region": ["East", "West"] * 15,
"revenue": range(30),
}
)
df = load_sales()
col1, col2 = st.columns(2)
with col1:
regions = st.multiselect("Regiões", sorted(df["region"].unique()), default=["East"])
with col2:
min_rev = st.slider("Receita mínima", 0, int(df["revenue"].max()), 0)
filtered = df[df["region"].isin(regions) & (df["revenue"] >= min_rev)]
fig = px.line(filtered, x="ordered_at", y="revenue", color="region")
st.plotly_chart(fig, use_container_width=True)
st.dataframe(filtered, use_container_width=True)O que isso demonstra:
cache_data evita recarregar Parquet a cada alteração de widgetpredict(image) -> label.uvicorn/servidor embutido - coloque um proxy reverso de autenticação em produção.| Framework | Ponto ideal |
|---|---|
| Streamlit | pandas/plots + filtros em horas |
| Dash | Aplicativos Plotly de várias páginas, corporativo |
| Gradio | Demonstrações de modelos Hugging Face |
# Esqueleto do Dash (app.py separado)
from dash import Dash, html, dcc, Input, Output
import plotly.express as px
app = Dash(__name__)
app.layout = html.Div([dcc.Graph(id="chart"), dcc.Dropdown(id="region")])
# @app.callback(Output("chart", "figure"), Input("region", "value")) ...@st.cache_data / Dash dcc.Store.st.secrets ou variáveis de ambiente. Correção: nunca comitar credenciais.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Panel/HoloViz | Integração com a pilha PyData | Equipe quer o caminho mais simples (Streamlit) |
| FastAPI + React | UX e autenticação personalizadas | Precisa de um aplicativo em uma tarde |
| Superset/Metabase | BI de warehouse sobre SQL | Transformações Python pesadas na UI |
| Observable / Hex | Produtos de notebook hospedados | Requisito de Python auto-hospedado |
streamlit run app.py --server.port=8501.import gradio as gr
demo = gr.Interface(fn=predict, inputs="image", outputs="label")
demo.launch()share=True apenas para demonstrações, não para dados de produção.st.line_chart ou use Plotly/Altair diretamente.dash.testing.DATA_DT=2025-01-15).Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026