Aplicação web para análise exploratória da Fórmula 1 com filtros interativos, KPIs, gráficos focados em insights de impacto e uma aba dedicada para relacionamento dinâmico entre variáveis.
Na Fórmula 1, o desempenho de pilotos e equipes ao longo de uma temporada não depende apenas de velocidade, estratégia e número de vitórias. O campeonato também é fortemente afetado por adversidades, como acidentes, colisões, rodadas, falhas mecânicas e outras situações que impedem a conclusão de uma prova ou comprometem a pontuação esperada em uma corrida.
Esse tema é relevante porque, em um campeonato de longa duração, a consistência costuma ser tão importante quanto momentos de alto desempenho. Um piloto ou uma equipe pode perder pontos decisivos por causa de incidentes isolados, mas ainda assim manter competitividade e terminar bem colocado no campeonato. Por isso, o projeto busca analisar não apenas quem pontua mais, mas também quem consegue sustentar bons resultados mesmo diante de dificuldades ao longo da temporada.
Os dados utilizados vêm do dataset jtrotman/formula-1-race-data, disponibilizado no Kaggle, e reúnem informações históricas da Fórmula 1 em diferentes tabelas, incluindo resultados de corrida, pilotos, equipes, circuitos, status finais e classificações de campeonato. A partir dessas tabelas, é possível relacionar eventos ocorridos nas corridas com o desempenho acumulado de pilotos e construtores ao fim de cada temporada.
Em que medida incidentes e não conclusões ao longo da temporada estão associados à posição final no campeonato, e quais pilotos e equipes mais superaram essas adversidades?
- Python 3.11+
- Suporte a
venvhabilitado no Python - Internet para instalar dependências (na primeira execução)
Esse fluxo é opcional. As dependências dele já ficam no requirements.txt, mesmo
que você não use a atualização automática logo de início.
Este projeto pode baixar os arquivos CSV mais recentes diretamente do dataset
jtrotman/formula-1-race-data no Kaggle.
Passos básicos:
- Instale as dependências do projeto:
python -m pip install -r requirements.txt
- Configure sua autenticação Kaggle usando o arquivo de exemplo:
- Copie o arquivo de exemplo para
.env:cp .env.example .env
- Abra
.enve substituaKGAT_<seu_token>pelo seu token real do Kaggle. - O script dá prioridade ao
.envda raiz do projeto.
- Copie o arquivo de exemplo para
- Execute o script de atualização:
python update_data.py
Isso usa a API do Kaggle e copia os CSVs mais recentes para a pasta dados f1/.
Nesse caso, baixe o ZIP manualmente do dataset no Kaggle e extraia o conteúdo de CSV para dados f1/.
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m streamlit run app.pypython3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m streamlit run app.pyUse os comandos abaixo se quiser recriar o ambiente do projeto do zero.
Eles removem o ambiente virtual e arquivos temporários de Python, mas não apagam a pasta dados f1.
if (Test-Path .venv) { Remove-Item -Recurse -Force .venv }
Get-ChildItem -Directory -Recurse -Filter __pycache__ | Remove-Item -Recurse -Force
Get-ChildItem -File -Recurse -Include *.pyc,*.pyo | Remove-Item -Forcerm -rf .venv
find . -type d -name "__pycache__" -prune -exec rm -rf {} +
find . -type f \( -name "*.pyc" -o -name "*.pyo" \) -delete- O app lê os arquivos da pasta
dados f1automaticamente. update_data.pyé opcional, mas as dependências dele já fazem parte derequirements.txt.- Nesta versão inicial, o dashboard usa as tabelas centrais:
results,races,drivers,constructors,circuitsestatus. - A aba principal mostra KPIs, 4 gráficos de impacto e os dados filtrados.
- A aba "Relacionamento dinâmico" mantém a análise agregada personalizável.
- Se
streamlitnão for reconhecido como comando, use semprepython -m streamlit. - Se o
venvnão estiver disponível no Linux, instale o pacote equivalente da sua distribuição, comopython3-venv.