Pipeline em Python para captura, persistência e visualização de cotações de moedas e criptomoedas em tempo real. O projeto coleta dados da AwesomeAPI, registra as informações em SQLite e Excel, e disponibiliza uma interface analítica com Streamlit e Plotly.
Este projeto foi desenvolvido com foco em um fluxo simples, observável e reproduzível de dados. Ele demonstra boas práticas comuns em engenharia de dados, como ingestão automatizada, armazenamento incremental, análise temporal e disponibilização de métricas para consumo rápido.
- Ingestão automatizada de cotações via API REST
- Persistência em SQLite para histórico estruturado
- Exportação incremental para planilha Excel
- Logs de execução para rastreabilidade e diagnóstico
- Análise temporal com variação diária e média móvel
- Dashboard interativo para acompanhamento dos dados
Fluxo principal:
- Consulta à AwesomeAPI para obter cotações de Dólar, Euro e Bitcoin
- Normalização dos dados retornados pela API
- Persistência em SQLite
- Gravação incremental em Excel
- Cálculo de indicadores analíticos
- Exibição dos resultados no dashboard
- Coleta cotações em tempo real de USD, EUR e BTC em relação ao BRL
- Registra data e hora de cada captura
- Persiste os dados em banco SQLite
- Mantém histórico em planilha Excel sem sobrescrever registros anteriores
- Filtra as cotações do dia atual
- Calcula a variação percentual entre a primeira e a última leitura do dia
- Calcula média móvel com janela padrão de 7 dias
- Identifica automaticamente as últimas cotações diárias para análise histórica
- Dashboard interativo com Streamlit
- Gráficos de linha para evolução temporal
- Comparação visual entre moedas com Plotly
- Gráfico de barras para variação percentual diária
- Tabela detalhada com os registros mais recentes
- Python 3.x
- requests para consumo da API
- pandas para manipulação e análise de dados
- openpyxl para exportação em Excel
- sqlite3 para persistência local
- streamlit para interface analítica
- plotly para visualização interativa
- APScheduler para automação periódica
├── main.py
├── scheduler.py
├── requirements.txt
├── README.md
├── api/
│ └── request.py
├── core/
│ ├── data_analysis.py
│ ├── insert.py
│ ├── logger.py
│ └── save_excel.py
├── model/
│ └── database.py
├── view/
│ └── dashboard.py
├── data/
└── logs/
O projeto utiliza a AwesomeAPI Economia:
- Endpoint: https://economia.awesomeapi.com.br/json/last/USD-BRL,EUR-BRL,BTC-BRL
- Documentação: https://docs.awesomeapi.com.br
- Arquivo:
data/database.db - Tabela principal:
cotacoes - Campos:
id,data_hora,dolar,euro,bitcoin
- Arquivo:
data/cotacoes.xlsx - Cada linha representa uma coleta executada
- Atualização em modo append, preservando o histórico
pip install -r requirements.txtpython main.pyEsse comando realiza uma coleta única, persiste os dados e atualiza a planilha Excel.
streamlit run view/dashboard.pypytestOpcionalmente, para saída detalhada:
pytest -vO arquivo scheduler.py executa coletas automáticas de segunda a sexta, das 9h às 18h, em intervalos de 1 hora. Isso simula um pipeline recorrente de ingestão, útil para acompanhar a evolução dos dados ao longo do dia.
Para cada execução, o sistema registra:
| Campo | Descrição |
|---|---|
data_hora |
Data e hora da coleta |
dolar |
Cotação do Dólar (USD → BRL) |
euro |
Cotação do Euro (EUR → BRL) |
bitcoin |
Cotação do Bitcoin (BTC → BRL) |
- É necessária conexão com a internet para consumir a API
- O banco de dados e a planilha são criados automaticamente na primeira execução
- Os registros anteriores são preservados a cada nova coleta
- Os logs são gravados em
logs/app.log
- Ingestão de histórico para janelas maiores de análise
- Adição de novas moedas e ativos digitais
- Métricas adicionais de tendência e volatilidade
- Testes automatizados para as rotinas principais
- Versionamento e observabilidade mais robustos para cenários de produção
Felipe Viana