O Streamlit vem se tornando uma das ferramentas mais amadas por cientistas de dados e desenvolvedores Python que querem criar aplicações web interativas com poucos comandos.
Com ele, você transforma seus scripts em dashboards funcionais em minutos — sem precisar dominar HTML, CSS ou JavaScript.
Neste artigo, você vai aprender:
-
O que é o Streamlit e por que usá-lo
-
Como instalar e configurar o ambiente
-
Como consumir uma API pública de dados
-
Como fazer análise e visualização desses dados
-
E por fim, como criar uma interface interativa com filtros e gráficos
1. O que é o Streamlit?
O Streamlit é um framework open-source em Python que permite criar interfaces web para projetos de ciência de dados, machine learning e automação.
Em vez de gastar horas com front-end, você pode simplesmente escrever:
import streamlit as st
st.title("Meu Dashboard com Streamlit")
st.write("Olá, mundo!")
E com apenas:
streamlit run app.py
Você tem uma aplicação web rodando localmente!
2. Instalando o Streamlit
Vamos criar um ambiente isolado e instalar o Streamlit:
# Crie e ative o ambiente virtual
python -m venv venv
venv\Scripts\activate # (Windows)
# ou
source venv/bin/activate # (Linux/Mac)
# Instale o Streamlit e outras libs necessárias
pip install streamlit requests pandas matplotlib
Crie um arquivo chamado app.py — ele será o coração da nossa aplicação.
3. Escolhendo uma API Pública
Usaremos a API pública da CoinGecko, que fornece dados em tempo real de criptomoedas — ideal para demonstrar análise de dados com atualização dinâmica.
Endpoint que usaremos:
https://api.coingecko.com/api/v3/coins/markets
4. Criando a Aplicação Base
Abra o arquivo app.py e adicione o seguinte código:
import streamlit as st
import pandas as pd
import requests
import matplotlib.pyplot as plt
# -------------------------------
# Título e Descrição
# -------------------------------
st.set_page_config(page_title="Análise de Criptomoedas", page_icon="💰", layout="wide")
st.title("💰 Análise de Criptomoedas em Tempo Real")
st.markdown("Aplicação simples que consome a API pública da CoinGecko e exibe dados atualizados de criptomoedas.")
# -------------------------------
# Parâmetros de entrada
# -------------------------------
moeda_base = st.selectbox("Selecione a moeda base:", ["usd", "eur", "brl"])
top_n = st.slider("Quantidade de criptomoedas:", min_value=5, max_value=50, value=10)
# -------------------------------
# Requisição à API
# -------------------------------
url = "https://api.coingecko.com/api/v3/coins/markets"
params = {
"vs_currency": moeda_base,
"order": "market_cap_desc",
"per_page": top_n,
"page": 1,
"sparkline": "false"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
df = pd.DataFrame(data)[["name", "symbol", "current_price", "market_cap", "price_change_percentage_24h"]]
st.subheader("📊 Dados em tempo real")
st.dataframe(df)
# -------------------------------
# Gráfico de barras - Preço atual
# -------------------------------
fig, ax = plt.subplots(figsize=(10, 5))
ax.bar(df["symbol"], df["current_price"], color="orange")
ax.set_title(f"Preço Atual das Top {top_n} Criptomoedas ({moeda_base.upper()})")
ax.set_xlabel("Criptomoeda")
ax.set_ylabel(f"Preço ({moeda_base.upper()})")
plt.xticks(rotation=45)
st.pyplot(fig)
# -------------------------------
# Gráfico de variação percentual
# -------------------------------
fig2, ax2 = plt.subplots(figsize=(10, 5))
colors = ["green" if x >= 0 else "red" for x in df["price_change_percentage_24h"]]
ax2.bar(df["symbol"], df["price_change_percentage_24h"], color=colors)
ax2.set_title("Variação Percentual nas Últimas 24h")
ax2.set_xlabel("Criptomoeda")
ax2.set_ylabel("% de variação")
plt.xticks(rotation=45)
st.pyplot(fig2)
else:
st.error("Erro ao obter dados da API. Tente novamente mais tarde.")
5. Executando o App
No terminal, execute:
streamlit run app.py
O navegador será aberto automaticamente com a interface web.
Você verá:
-
Um seletor de moeda (USD, EUR, BRL)
-
Um controle deslizante para definir quantas criptos exibir
-
Uma tabela interativa
-
Dois gráficos: preço atual e variação percentual nas últimas 24h
6. Tornando o App mais Interativo
Você pode adicionar uma atualização automática a cada X segundos, usando o st.experimental_rerun() com tempo controlado, ou permitir download dos dados:
csv = df.to_csv(index=False).encode("utf-8")
st.download_button("Baixar CSV", csv, "dados_criptomoedas.csv", "text/csv")
7. Possíveis Extensões
Depois de dominar esse exemplo, você pode evoluir o app:
-
Adicionar busca por criptomoeda específica
-
Inserir gráficos de histórico de preços (endpoint
/coins/{id}/market_chart) -
Integrar com bibliotecas como Plotly, Altair ou Seaborn
-
Publicar no Streamlit Cloud (gratuitamente)
streamlit deploy
8. Estrutura Final do Projeto
streamlit-cripto/
│
├── app.py
├── venv/
└── requirements.txt
Crie o requirements.txt:
streamlit
pandas
requests
matplotlib
Com poucas linhas de código, criamos uma aplicação completa, interativa e visual, conectada a uma API real, que realiza análise de dados em tempo real.
O Streamlit é a ferramenta perfeita para:
-
Prototipagem rápida de dashboards
-
Demonstrações de modelos de machine learning
-
Relatórios executivos e visualizações dinâmicas
-
Interfaces para scripts de automação e análise
Em vez de gastar dias desenvolvendo front-end, você pode entregar insights e resultados em minutos.