O pacote {brasileirao}

Recentemente tive vontade de começar a brincar com dados de futebol, mais especificamente o que sobrou do futebol brasileiro.

Depois de uma busca bem rápida na internet, resolvi que montaria a minha própria base, até como uma forma de praticar web scraping.

Foi assim que surgiu o pacote {brasileirao}, que reune os resultados de todas as partidas da Série A do Campeonato Brasileiro das temporadas de 2003 a 2020.

Abrem-se as cortinas e começa o espetáculo - Fiori Gigliotti, narrador esportivo brasileiro

O pacote

O pacote está disponível neste repositório. Para instalar direto do R, basta rodar o código abaixo:

remotes::install_github("williamorim/brasileirao")

Para acessar os dados das partidas, chame o objeto matches.

library(dplyr)
library(brasileirao)
matches
## # A tibble: 7,646 × 5
##    season date       home          score away       
##     <dbl> <date>     <chr>         <chr> <chr>      
##  1   2003 2003-03-29 Athletico PR  2x0   Grêmio     
##  2   2003 2003-03-29 Guarani       4x2   Vasco      
##  3   2003 2003-03-30 Corinthians   0x3   Atlético MG
##  4   2003 2003-03-30 Goiás         2x2   Paysandu   
##  5   2003 2003-03-30 Criciúma      2x0   Fluminense 
##  6   2003 2003-03-30 Cruzeiro      2x2   São Caetano
##  7   2003 2003-03-30 Flamengo      1x1   Coritiba   
##  8   2003 2003-03-30 Fortaleza     0x0   Bahia      
##  9   2003 2003-03-30 Internacional 1x1   Ponte Preta
## 10   2003 2003-03-30 Juventude     2x2   São Paulo  
## # … with 7,636 more rows

Para ver os dados de uma temporada, você pode usar a função filter(), do pacote dplyr.

matches %>% 
  filter(season == 2020)
## # A tibble: 380 × 5
##    season date       home        score away         
##     <dbl> <date>     <chr>       <chr> <chr>        
##  1   2020 2020-08-08 Fortaleza   0x2   Athletico PR 
##  2   2020 2020-08-08 Coritiba    0x1   Internacional
##  3   2020 2020-08-08 Sport       3x2   Ceará        
##  4   2020 2020-08-09 Flamengo    0x1   Atlético MG  
##  5   2020 2020-08-09 Santos      1x1   Bragantino   
##  6   2020 2020-08-09 Grêmio      1x0   Fluminense   
##  7   2020 2020-09-30 Botafogo    1x2   Bahia        
##  8   2020 2020-09-30 Corinthians 0x0   Atlético GO  
##  9   2020 2020-12-03 Goiás       0x3   São Paulo    
## 10   2020 2021-01-26 Palmeiras   1x1   Vasco        
## # … with 370 more rows

O pacote também possui uma função para padronizar o nome dos times: fix_names(). Alguns times, como o Atlético mineiro aparecem como Atlético MG e Atlético-MG na base. Também há casos de times que mudaram de nome nesse período, como o Athetico e o Grêmio Barueri. Pode isso, Arnaldo?

Veja a seguir um exemplo da função em ação:

atleticos <- matches %>%
  filter(stringr::str_detect(home, "Atlético")) %>% 
  pull(home) %>% 
  unique()

atleticos
## [1] "Atlético MG" "Atlético GO"
fix_names(atleticos)
## [1] "Atlético MG" "Atlético GO"

Ela também pode ser utilizada diretamente em uma coluna com nome de times usando o mutate().

matches %>% 
  mutate(home = fix_names(home), away = fix_names(away))
## # A tibble: 7,646 × 5
##    season date       home          score away       
##     <dbl> <date>     <chr>         <chr> <chr>      
##  1   2003 2003-03-29 Athletico PR  2x0   Grêmio     
##  2   2003 2003-03-29 Guarani       4x2   Vasco      
##  3   2003 2003-03-30 Corinthians   0x3   Atlético MG
##  4   2003 2003-03-30 Goiás         2x2   Paysandu   
##  5   2003 2003-03-30 Criciúma      2x0   Fluminense 
##  6   2003 2003-03-30 Cruzeiro      2x2   São Caetano
##  7   2003 2003-03-30 Flamengo      1x1   Coritiba   
##  8   2003 2003-03-30 Fortaleza     0x0   Bahia      
##  9   2003 2003-03-30 Internacional 1x1   Ponte Preta
## 10   2003 2003-03-30 Juventude     2x2   São Paulo  
## # … with 7,636 more rows

O pacote é atualizado diriamente, a partir de um script executado via Github Actions. Esse fluxo é pausado nos meses entre temporadas.

De onde os dados vieram?

Os dados das temporadas de 2003 a 2019 vieram do site Chance de gol. Particularmente, eu não gosto muito de previsões de resultados esportivos, mas o site é bem legal para quem gosta do tema! E, claro, ele é bem fácil de scrapear, o que é importante se você é nível 1 em Web Scraping igual eu.

Como no Chance de Gol não tinha os dados da temporada de 2020, eu fui buscar na página do ge. A tarefa também bem tranquila, pois os dados da página são atualizados a partir de uma API, que consegui acessar diretamente.

O código que utilizei nos dois casos pode ser encontrado aqui.

Próximos passos

Meu objetivo é continuar implementando o pacote, trazendo mais dados sobre as partidas da Série A (local, público, cartões, posse de bola, chutes a gol etc), além de completar com os dados das demais séries (B, C e D).

Se você encontrar qualquer problema no pacote ou inconsistência nos dados, não deixe de me avisar abrindo uma issue no repositório.

É isso! Dúvidas, sugestões e críticas, mande aqui nos comentários.

Até a próxima!

comments powered by Disqus