Visão Geral • Principais Insights • Instalação e Execução • Estrutura de Pastas • Pipeline de Dados • Conclusão
Este projeto é uma análise de ponta a ponta (end-to-end) do pipeline de dados de obras de infraestrutura no Distrito Federal, utilizando dados da API pública ObrasGov.
O objetivo é construir um pipeline ETL completo, desde a extração de dados brutos até um banco de dados relacional e, finalmente, a geração de um dashboard de insights acionáveis.
Nesses exmplos (mais nos notebooks) de visualizações foi revelado padrões claros sobre o portfólio de projetos no DF:
- Python 3.10+
- Docker Desktop
- Git
git clone https://github.com/seu-usuario/seu-repositorio.git
cd seu-repositorio# Crie o ambiente virtual
python -m venv venv
# Ative o ambiente (Linux/Mac)
source venv/bin/activate
# (No Windows)
venv\Scripts\activate
# Instale as bibliotecas
pip install -r requirements.txtCrie um arquivo chamado .env na raiz do projeto com suas credenciais:
PG_HOST=localhost
PG_PORT=5432
PG_DB=meu_banco
PG_USER=meu_usuario
PG_PASSWORD=minha_senha_secreta
⚠️ Este arquivo é ignorado pelo Git (.gitignore).
docker run --name meu-postgres \
-e POSTGRES_PASSWORD=minha_senha_secreta \
-e POSTGRES_USER=meu_usuario \
-e POSTGRES_DB=meu_banco \
-p 5432:5432 \
-d postgresÉ essencial executar os notebooks na ordem correta, pois eles dependem entre si.
notebooks/
├── 01_data_extraction.ipynb
├── 02_data_transformation.ipynb
├── 03_data_load.ipynb
└── 04_data_analysis.ipynb
.
├── notebooks/
│ ├── 01_data_extraction.ipynb # (E) Extração de dados brutos da API
│ ├── 02_data_transformation.ipynb # (T) Limpeza, Normalização e Feature Engineering
│ ├── 03_data_load.ipynb # (L) Carga dos dados limpos no PostgreSQL
│ └── 04_data_analysis.ipynb # (Análise) Visualização e geração de insights
│
├── data/
│ ├── raw/ # (Saída do Notebook 01)
│ │ └── dados_brutos.parquet
│ └── processed/ # (Saída do Notebook 02)
│ └── dados_projetos_limpos.parquet
│
├── .env # (Configuração local - NÃO ENVIAR AO GIT)
├── .gitignore
├── requirements.txt
└── README.md
-
Função: Conecta-se à API pública do ObrasGov, filtrando projetos pelo estado DF.
-
Processo: API com limitações de extração e paginação de dados.
-
Saída: dados_brutos.parquet salvo em data/raw/.
-
Função: O “T” do ETL — limpeza, normalização e enriquecimento.
-
Processos Principais:
-
Remoção de duplicados com drop_duplicates(subset='id_unico').
-
Padronização de texto (.str.strip().str.upper()).
-
Criação de novas features ex.:
-
valor_total_investimento
-
empregos_por_milhao_brl
-
status_agrupado
-
faixa_valor
-
-
-
Saída: DataFrames limpos e enriquecidos em data/processed/.
-
Função: O “L” do ETL —> popula o banco de dados.
-
Processos: Armazenamento de dados .paquet em .db
-
Saída: Banco PostgreSQL relacional em container.
-
Função: Conecta-se ao banco e gera as visualizações principais.
-
Processo: Transformação de dados em Insight.
-
Resultado: Geração dos gráficos que originaram os insights do início deste README.
Este pipeline demonstra a importância de um fluxo de dados limpo, integrado e auditável, permitindo revelar gargalos estruturais e ineficiências financeiras em obras públicas do DF.
Resultado final: uma base de dados confiável, visualizações significativas e uma visão clara sobre onde, e por que, o progresso para.
Autor: Tiago Bittencourt
Fonte de dados: API ObrasGov.br



