Bem-vindo ao Blog da DMarkInfo

Conteúdos e novidades sobre Tecnologia da Informação.

Guia Completo: Criando uma Aplicação de Análise de Dados com Streamlit e uma API Pública

Postado por Eduardo Marques em 25/10/2025
Guia Completo: Criando uma Aplicação de Análise de Dados com Streamlit e uma API Pública

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:

  1. O que é o Streamlit e por que usá-lo

  2. Como instalar e configurar o ambiente

  3. Como consumir uma API pública de dados

  4. Como fazer análise e visualização desses dados

  5. 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.

 

Compartilhe este post:
Voltar para a Home