Streamlit: Transformando Scripts Python em Dashboards Interativos

O que é Streamlit?
O Streamlit é um framework open-source em Python que permite transformar scripts de análise de dados em aplicações web interativas com apenas algumas linhas de código. Diferente de soluções como Flask ou Django, o Streamlit foi projetado especificamente para cientistas de dados — sem necessidade de HTML, CSS ou JavaScript.
Criado em 2019 e adquirido pela Snowflake em 2022, o Streamlit se tornou a ferramenta padrão para prototipagem rápida de dashboards, ferramentas internas de ML e demos interativos de data science.
Primeiros Passos
Instalação simples via pip:
pip install streamlitCom o Streamlit instalado, crie um arquivo app.py com o conteúdo mínimo:
import streamlit as st\n\nst.title("Meu Primeiro Dashboard")\nst.write("Olá, mundo do Streamlit!")Para executar:
streamlit run app.pyPronto! Sua aplicação web está rodando em localhost:8501 com hot-reload automático — cada alteração no código é refletida instantaneamente no navegador.
Widgets Interativos em 1 Linha
A grande força do Streamlit está nos widgets nativos que criam interfaces complexas com mínimo de código:
import streamlit as st\nimport pandas as pd\nimport numpy as np\n\nst.header("Análise de Vendas")\n\n# Upload de arquivo\narquivo = st.file_uploader("Carregue seu CSV", type=["csv"])\n\nif arquivo:\n df = pd.read_csv(arquivo)\n \n # Filtros interativos\n produto = st.selectbox("Selecione o produto", df["produto"].unique())\n periodo = st.slider("Período (dias)", 1, 365, 30)\n \n # Dados filtrados\n filtro = df[df["produto"] == produto].head(periodo)\n \n # Métricas\n col1, col2, col3 = st.columns(3)\n col1.metric("Total Vendas", f"R$ {filtro["valor"].sum():,.2f}")\n col2.metric("Ticket Médio", f"R$ {filtro["valor"].mean():.2f}")\n col3.metric("Quantidade", int(filtro["quantidade"].sum()))\n \n # Gráfico\n st.line_chart(filtro.set_index("data")["valor"])Em menos de 20 linhas você tem upload de arquivo, filtros, métricas em cards e um gráfico interativo — tudo funcionando imediatamente.
Gráficos e Visualizações
O Streamlit suporta nativamente as principais bibliotecas de visualização Python. Basta chamar st.pyplot() para matplotlib, st.plotly_chart() para Plotly ou usar os charts nativos:
# Gráfico de barras nativo\nst.bar_chart(df.groupby("categoria")["valor"].sum())\n\n# Mapa interativo\nst.map(df[df["lat"].notna()][["lat", "lon"]])\n\n# DataFrame interativo\nst.dataframe(df, use_container_width=True)Cache e Performance
Para evitar reprocessamento de dados pesados, use o decorador @st.cache_data:
@st.cache_data\ndef carregar_dados(url):\n # Simula carregamento pesado\n df = pd.read_csv(url)\n return dfO cache persiste entre recarregamentos e só é recalculado se os parâmetros mudarem. Essencial para dashboards que consomem APIs ou processam grandes datasets.
Layout Profissional
Organize sua aplicação com containers, colunas e abas:
with st.sidebar:\n st.header("Configurações")\n modo = st.radio("Modo", ["Simples", "Avançado"])\n\ntab1, tab2, tab3 = st.tabs(["Visão Geral", "Detalhes", "Exportar"])\n\nwith tab1:\n st.metric("Usuários Ativos", 1423, "+12%")\n st.line_chart(dados)Deploy
O Streamlit oferece deploy gratuito no Streamlit Community Cloud: conecte seu repositório GitHub e publique com um clique. Para ambientes corporativos, use Docker:
FROM python:3.11-slim\nWORKDIR /app\nCOPY requirements.txt .\nRUN pip install -r requirements.txt\nCOPY . .\nEXPOSE 8501\nCMD ["streamlit", "run", "app.py", "--server.port=8501"]Conclusão
O Streamlit democratizou a criação de dashboards interativos em Python. Em poucas horas — não semanas — você transforma um notebook Jupyter em uma aplicação web compartilhável, com widgets, gráficos e deploy simplificado. É a ferramenta ideal para cientistas de dados que precisam comunicar resultados de forma visual sem sair do ecossistema Python.







