Skip to content

bolzanMGB/2025.2_BD2_F1Analytics

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

126 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Formula 1 Analytics

Este projeto organiza e analisa dados da Fórmula 1 usando arquitetura Medallion (Bronze → Silver → Gold) com PySpark, Python e Jupyter Notebook. Inclui processos de ETL, dashboards interativos e análises históricas de pilotos, construtores e corridas. Desenvolvido como projeto da disciplina FGA0060 – Sistemas de Banco de Dados 2, do curso de Engenharia de Software da Universidade de Brasília (UnB).

🏎️ Formula 1 Analytics

Formula 1 Car Racing

1. Objetivos do projeto

  • Implementar uma arquitetura Lakehouse para armazenar e processar dados da Fórmula 1, organizada nas camadas Bronze, Silver e Gold;

  • Modelar os dados por meio de representações conceitual (MER), lógica (DER) e física (DLD), garantindo consistência e padronização estrutural;

  • Construir e popular um banco de dados containerizado (via Docker) com tabelas otimizadas para consultas e transformações em larga escala;

  • Disponibilizar um ambiente analítico integrado, permitindo exploração de dados, análises estatísticas e construção de dashboards interativos com base nas camadas Gold.

2. Como usar

2.1. Clone o repositório

git clone https://github.com/Julio1099/formula1-analytics.git
cd formula1-analytics

2.2. Configurar o ambiente

Certifique-se de ter o Java e Python instalados, necessários para rodar o PySpark.

# Instalar Java
sudo apt install default-jdk
java -version

# Instalar Python
sudo apt install python3 python3-venv python3-pip
python3 --version

2.3. Instalar PySpark e Jupyter

Crie um ambiente virtual:

python3 -m venv venv
source venv/bin/activate

Instale PySpark e Jupyter:

pip install pyspark jupyter

Inicie o Jupyter Notebook:

jupyter notebook

2.4. Rodar a stack Docker

cd docker
docker-compose up --build

2.5. Verificar o banco

docker exec -it medallion-db psql -U $POSTGRES_USER -d $POSTGRES_DB -c "\dn+"
docker exec -it medallion-db psql -U $POSTGRES_USER -d $POSTGRES_DB -c "\dt silver.*"

3. Estrutura do repositório

formula1-analytics/
├─ dags
|   ├─ airflowignore
|   └─ formula1_pipeline_dag.py
├─ DataLayer/
│  ├─ raw/                                # Camada Bronze (dados brutos)
│  │  ├─ dados_originais/                 
│  │  ├─ analytics_raw.ipynb           
│  │  └─ dicionario_raw.md             
│  │
│  ├─ silver/                             # Camada Silver (dados tratados)                 
│  │  ├─ dicionario_silver.md
|  |  ├─ ddl_silver.sql
|  |  ├─ analytics.ipynb
|  |  └─ mer_der_dld.pdf
│  │
│  └─ gold/                               # Camada Gold (dados analíticos)
│     ├─ mer_der_dld.pdf
|     ├─ consultas.sql
|     ├─ ddl_gold.sql
|     └─ mnemonicos.pdf           
│
├─ Transformer/                           # Scripts de transformação/ETL
│  ├─ etl_raw_to_silver.ipynb
│  └─ etl_silver_to_gold.ipynb
│
├─ docker/                                # Docker
│  ├─ docker-compose.yml
│  ├─Dockerfile
│  └─Dockerfile.airflow
│
└─ README.md

4. Tópicos de análise possiveis

  • Distribuição de Tempos de Volta em Mônaco;
  • Evolução do Tempo Médio de Volta em Corrida;
  • Pit stops por corrida (distribuição);
  • Experiência vs Eficácia em Voltas Rápidas;
  • Distribuição de Tempos de Volta por Construtor;
  • Proporção de abandonos por status de corrida;
  • Evolução do Tempo de Volta e Consistência da Pista;
  • Heatmap de Performance por Volta;
  • Evolução da Posição em Corrida.

5. Tecnologias utilizadas

  • Python – ETL e manipulação de dados;
  • PySpark – processamento distribuído e transformação de dados em larga escala;
  • PostgreSQL – armazenamento e estruturação dos dados (Lakehouse);
  • Docker – containerização e isolamento dos ambientes;
  • Jupyter Notebook – análise exploratória, desenvolvimento e visualização interativa;
  • SQL – modelagem conceitual, lógica e física do banco de dados.
  • PoweBI – visualização interativa e análise de resultados.

6. Power BI

O dashboard final foi desenvolvido no Power BI, com design planejado no Figma, e é composto por uma página inicial e outras três páginas analíticas, acessadas por um menu interativo com botões clicáveis no topo. As páginas estão dispostas da seguinte forma:

  • Seasons Winners — seleção de ano e corrida, exibindo os 3 melhores colocados e suas equipes.
  • Pace — seleção de ano e corrida, permitindo analisar o ritmo geral da prova e o ritmo individual dos pilotos.
  • Pit Stops — seleção de ano e equipe, mostrando ranking, consistência, evolução do tempo médio e demais métricas de pit stop.
  • Drivers Comparison — seleção de dois pilotos, exibindo comparações de pódios, pontuação, DNFs e outras estatísticas.

🔗 Dashboard no Power BI

Integrantes do Grupo

Fernando Carrijo
Fernando Gabriel dos Santos Carrijo
221008033
Julio Crispim
Júlio Cezar Gomes de Souza Crispim
221007591
Kaleb Macedo
Kaleb de Souza Macedo
231026975
Othavio Araujo Bolzan
Othavio Araujo Bolzan
231039150

About

Repositório destinado ao projeto da disciplina Sistemas de Banco de Dados 2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Jupyter Notebook 99.9%
  • Other 0.1%