Este trabalho tem como objetivo realizar uma análise exploratória de uma base de dados sobre acidentes em rodovias federais no Brasil no ano de 2026. A base de dados utilizada foi obtida em fonte pública de dados abertos e contém informações como data do acidente, estado, município, causa do acidente, tipo de acidente, quantidade de pessoas envolvidas, feridos, mortos e veículos.
Fonte: Dados Abertos dda Polícia Rodoviária Federal / dados.gov.br. Base: Acidentes em Rodovias Federais - 2026. Formato: CSV.
library(readr)
library(dplyr)
##
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
##
## filter, lag
## Os seguintes objetos são mascarados por 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(knitr)
library(readr)
datatran2026 <- read_csv2("~/Projeto fase 2/datatran2026.csv",
locale = locale(encoding = "Latin1"))
## ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
## Rows: 17502 Columns: 30
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (15): dia_semana, uf, municipio, causa_acidente, tipo_acidente, classif...
## dbl (13): id, br, km, pessoas, mortos, feridos_leves, feridos_graves, ileso...
## date (1): data_inversa
## time (1): horario
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(datatran2026)
library(dplyr)
glimpse(datatran2026)
## Rows: 17,502
## Columns: 30
## $ id <dbl> 742921, 742942, 742943, 742947, 742960, 742971,…
## $ data_inversa <date> 2026-01-01, 2026-01-01, 2026-01-01, 2026-01-01…
## $ dia_semana <chr> "quinta-feira", "quinta-feira", "quinta-feira",…
## $ horario <time> 04:04:00, 06:40:00, 06:58:00, 07:05:00, 06:17:…
## $ uf <chr> "TO", "MG", "SC", "DF", "MT", "SP", "MG", "GO",…
## $ br <dbl> 153, 262, 101, 60, 163, 116, 365, 40, 153, 262,…
## $ km <dbl> 155.0, 146.1, 193.0, 23.0, 1044.0, 568.0, 393.4…
## $ municipio <chr> "ARAGUAINA", "RIO CASCA", "BIGUACU", "BRASILIA"…
## $ causa_acidente <chr> "Objeto estático sobre o leito carroçável", "Co…
## $ tipo_acidente <chr> "Tombamento", "Colisão frontal", "Colisão later…
## $ classificacao_acidente <chr> NA, "Com Vítimas Feridas", "Com Vítimas Feridas…
## $ fase_dia <chr> "Amanhecer", "Pleno dia", "Amanhecer", "Pleno d…
## $ sentido_via <chr> "Crescente", "Crescente", "Crescente", "Decresc…
## $ condicao_metereologica <chr> "Céu Claro", "Céu Claro", "Nublado", "Céu Claro…
## $ tipo_pista <chr> "Simples", "Simples", "Dupla", "Dupla", "Simple…
## $ tracado_via <chr> "Aclive;Reta", "Reta", "Curva", "Aclive;Reta", …
## $ uso_solo <chr> "Não", "Não", "Sim", "Não", "Não", "Não", "Não"…
## $ pessoas <dbl> 3, 6, 3, 3, 3, 2, 3, 3, 2, 3, 4, 2, 1, 2, 3, 4,…
## $ mortos <dbl> 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ feridos_leves <dbl> 0, 0, 1, 1, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0,…
## $ feridos_graves <dbl> 0, 4, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0,…
## $ ilesos <dbl> 1, 1, 1, 1, 1, 0, 1, 2, 1, 0, 1, 1, 0, 1, 1, 3,…
## $ ignorados <dbl> 3, 1, 2, 1, 3, 1, 0, 3, 1, 2, 3, 0, 0, 2, 1, 2,…
## $ feridos <dbl> 0, 4, 1, 1, 1, 1, 2, 0, 0, 1, 0, 1, 1, 0, 1, 0,…
## $ veiculos <dbl> 5, 3, 4, 3, 5, 2, 2, 5, 2, 3, 4, 2, 1, 3, 3, 4,…
## $ latitude <dbl> -7.291548, -20.024073, -27.489352, -15.988927, …
## $ longitude <dbl> -48.28625, -42.74223, -48.65566, -48.22630, -54…
## $ regional <chr> "SPRF-TO", "SPRF-MG", "SPRF-SC", "SPRF-DF", "SP…
## $ delegacia <chr> "DEL02-TO", "DEL03-MG", "DEL01-SC", "DEL03-DF",…
## $ uop <chr> "UOP01-DEL02-TO", "UOP03-DEL03-MG", "UOP01-DEL0…
colnames(datatran2026)
## [1] "id" "data_inversa" "dia_semana"
## [4] "horario" "uf" "br"
## [7] "km" "municipio" "causa_acidente"
## [10] "tipo_acidente" "classificacao_acidente" "fase_dia"
## [13] "sentido_via" "condicao_metereologica" "tipo_pista"
## [16] "tracado_via" "uso_solo" "pessoas"
## [19] "mortos" "feridos_leves" "feridos_graves"
## [22] "ilesos" "ignorados" "feridos"
## [25] "veiculos" "latitude" "longitude"
## [28] "regional" "delegacia" "uop"
datatran2026 %>%
select(
codigo = id,
data_ocorrencia = data_inversa,
dia_da_semana = dia_semana,
hora = horario,
estado = uf,
rodovia = br,
quilometragem = km,
cidade = municipio,
causa = causa_acidente,
natureza = tipo_acidente,
gravidade = classificacao_acidente,
periodo = fase_dia,
fluxo_via = sentido_via,
clima = condicao_metereologica,
pista = tipo_pista,
via = tracado_via,
area = uso_solo,
envolvidos = pessoas,
obitos = mortos,
vitimas_leves = feridos_leves,
vitimas_graves = feridos_graves,
ilesas = ilesos,
ignoradas = ignorados,
total_feridos = feridos,
qtd_veiculos = veiculos
)
## # A tibble: 17,502 × 25
## codigo data_ocorrencia dia_da_semana hora estado rodovia quilometragem
## <dbl> <date> <chr> <time> <chr> <dbl> <dbl>
## 1 742921 2026-01-01 quinta-feira 04:04 TO 153 155
## 2 742942 2026-01-01 quinta-feira 06:40 MG 262 146.
## 3 742943 2026-01-01 quinta-feira 06:58 SC 101 193
## 4 742947 2026-01-01 quinta-feira 07:05 DF 60 23
## 5 742960 2026-01-01 quinta-feira 06:17 MT 163 1044
## 6 742971 2026-01-01 quinta-feira 08:50 SP 116 568
## 7 742985 2026-01-01 quinta-feira 12:00 MG 365 393.
## 8 742987 2026-01-01 quinta-feira 13:30 GO 40 104.
## 9 742988 2026-01-01 quinta-feira 09:30 MG 153 246.
## 10 742989 2026-01-01 quinta-feira 12:50 ES 262 108.
## # ℹ 17,492 more rows
## # ℹ 18 more variables: cidade <chr>, causa <chr>, natureza <chr>,
## # gravidade <chr>, periodo <chr>, fluxo_via <chr>, clima <chr>, pista <chr>,
## # via <chr>, area <chr>, envolvidos <dbl>, obitos <dbl>, vitimas_leves <dbl>,
## # vitimas_graves <dbl>, ilesas <dbl>, ignoradas <dbl>, total_feridos <dbl>,
## # qtd_veiculos <dbl>
datatran2026 %>%
mutate(id = as.numeric(id))
## # A tibble: 17,502 × 30
## id data_inversa dia_semana horario uf br km municipio
## <dbl> <date> <chr> <time> <chr> <dbl> <dbl> <chr>
## 1 742921 2026-01-01 quinta-feira 04:04 TO 153 155 ARAGUAINA
## 2 742942 2026-01-01 quinta-feira 06:40 MG 262 146. RIO CASCA
## 3 742943 2026-01-01 quinta-feira 06:58 SC 101 193 BIGUACU
## 4 742947 2026-01-01 quinta-feira 07:05 DF 60 23 BRASILIA
## 5 742960 2026-01-01 quinta-feira 06:17 MT 163 1044 MATUPA
## 6 742971 2026-01-01 quinta-feira 08:50 SP 116 568 BARRA DO TURVO
## 7 742985 2026-01-01 quinta-feira 12:00 MG 365 393. PATOS DE MINAS
## 8 742987 2026-01-01 quinta-feira 13:30 GO 40 104. CRISTALINA
## 9 742988 2026-01-01 quinta-feira 09:30 MG 153 246. FRONTEIRA
## 10 742989 2026-01-01 quinta-feira 12:50 ES 262 108. VENDA NOVA DO IMI…
## # ℹ 17,492 more rows
## # ℹ 22 more variables: causa_acidente <chr>, tipo_acidente <chr>,
## # classificacao_acidente <chr>, fase_dia <chr>, sentido_via <chr>,
## # condicao_metereologica <chr>, tipo_pista <chr>, tracado_via <chr>,
## # uso_solo <chr>, pessoas <dbl>, mortos <dbl>, feridos_leves <dbl>,
## # feridos_graves <dbl>, ilesos <dbl>, ignorados <dbl>, feridos <dbl>,
## # veiculos <dbl>, latitude <dbl>, longitude <dbl>, regional <chr>, …
datatran2026 <- datatran2026 %>%
mutate(
id = as.numeric(id)
)
datatran2026 %>%
mutate(classificacao_acidente = as.numeric(classificacao_acidente))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `classificacao_acidente = as.numeric(classificacao_acidente)`.
## Caused by warning:
## ! NAs introduzidos por coerção
## # A tibble: 17,502 × 30
## id data_inversa dia_semana horario uf br km municipio
## <dbl> <date> <chr> <time> <chr> <dbl> <dbl> <chr>
## 1 742921 2026-01-01 quinta-feira 04:04 TO 153 155 ARAGUAINA
## 2 742942 2026-01-01 quinta-feira 06:40 MG 262 146. RIO CASCA
## 3 742943 2026-01-01 quinta-feira 06:58 SC 101 193 BIGUACU
## 4 742947 2026-01-01 quinta-feira 07:05 DF 60 23 BRASILIA
## 5 742960 2026-01-01 quinta-feira 06:17 MT 163 1044 MATUPA
## 6 742971 2026-01-01 quinta-feira 08:50 SP 116 568 BARRA DO TURVO
## 7 742985 2026-01-01 quinta-feira 12:00 MG 365 393. PATOS DE MINAS
## 8 742987 2026-01-01 quinta-feira 13:30 GO 40 104. CRISTALINA
## 9 742988 2026-01-01 quinta-feira 09:30 MG 153 246. FRONTEIRA
## 10 742989 2026-01-01 quinta-feira 12:50 ES 262 108. VENDA NOVA DO IMI…
## # ℹ 17,492 more rows
## # ℹ 22 more variables: causa_acidente <chr>, tipo_acidente <chr>,
## # classificacao_acidente <dbl>, fase_dia <chr>, sentido_via <chr>,
## # condicao_metereologica <chr>, tipo_pista <chr>, tracado_via <chr>,
## # uso_solo <chr>, pessoas <dbl>, mortos <dbl>, feridos_leves <dbl>,
## # feridos_graves <dbl>, ilesos <dbl>, ignorados <dbl>, feridos <dbl>,
## # veiculos <dbl>, latitude <dbl>, longitude <dbl>, regional <chr>, …
datatran2026 <- datatran2026 %>%
mutate(
classificacao_acidente = as.numeric(classificacao_acidente)
)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `classificacao_acidente = as.numeric(classificacao_acidente)`.
## Caused by warning:
## ! NAs introduzidos por coerção
sum(is.na(datatran2026))
## [1] 17502
summary(datatran2026)
## id data_inversa dia_semana
## Min. :742884 Min. :2026-01-01 Length:17502
## 1st Qu.:747937 1st Qu.:2026-01-24 Class :character
## Median :752786 Median :2026-02-14 Mode :character
## Mean :752745 Mean :2026-02-14
## 3rd Qu.:757570 3rd Qu.:2026-03-09
## Max. :767313 Max. :2026-03-31
##
## horario uf br km
## Min. :00:00:00.000000 Length:17502 Min. : 0.0 Min. : 0.0
## 1st Qu.:08:10:00.000000 Class :character 1st Qu.:101.0 1st Qu.: 75.0
## Median :13:50:00.000000 Mode :character Median :158.0 Median : 195.0
## Mean :13:13:38.385327 Mean :210.1 Mean : 260.0
## 3rd Qu.:18:15:00.000000 3rd Qu.:324.0 3rd Qu.: 409.7
## Max. :23:59:00.000000 Max. :495.0 Max. :1244.0
##
## municipio causa_acidente tipo_acidente
## Length:17502 Length:17502 Length:17502
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## classificacao_acidente fase_dia sentido_via
## Min. : NA Length:17502 Length:17502
## 1st Qu.: NA Class :character Class :character
## Median : NA Mode :character Mode :character
## Mean :NaN
## 3rd Qu.: NA
## Max. : NA
## NA's :17502
## condicao_metereologica tipo_pista tracado_via
## Length:17502 Length:17502 Length:17502
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## uso_solo pessoas mortos feridos_leves
## Length:17502 Min. : 1.000 Min. : 0.00000 Min. : 0.0000
## Class :character 1st Qu.: 2.000 1st Qu.: 0.00000 1st Qu.: 0.0000
## Mode :character Median : 2.000 Median : 0.00000 Median : 1.0000
## Mean : 2.647 Mean : 0.08039 Mean : 0.9044
## 3rd Qu.: 3.000 3rd Qu.: 0.00000 3rd Qu.: 1.0000
## Max. :56.000 Max. :11.00000 Max. :40.0000
##
## feridos_graves ilesos ignorados feridos
## Min. : 0.0000 Min. : 0.000 Min. : 0.0000 Min. : 0.000
## 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 1.000
## Median : 0.0000 Median : 1.000 Median : 0.0000 Median : 1.000
## Mean : 0.2772 Mean : 1.082 Mean : 0.3909 Mean : 1.182
## 3rd Qu.: 0.0000 3rd Qu.: 1.000 3rd Qu.: 1.0000 3rd Qu.: 1.000
## Max. :27.0000 Max. :47.000 Max. :13.0000 Max. :47.000
##
## veiculos latitude longitude regional
## Min. : 1.000 Min. :-33.682 Min. :-72.84 Length:17502
## 1st Qu.: 1.000 1st Qu.:-25.081 1st Qu.:-50.32 Class :character
## Median : 2.000 Median :-20.315 Median :-47.47 Mode :character
## Mean : 1.986 Mean :-18.762 Mean :-46.56
## 3rd Qu.: 2.000 3rd Qu.:-12.532 3rd Qu.:-42.52
## Max. :18.000 Max. : 4.339 Max. :-34.83
##
## delegacia uop
## Length:17502 Length:17502
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
colSums(is.na(datatran2026))
## id data_inversa dia_semana
## 0 0 0
## horario uf br
## 0 0 0
## km municipio causa_acidente
## 0 0 0
## tipo_acidente classificacao_acidente fase_dia
## 0 17502 0
## sentido_via condicao_metereologica tipo_pista
## 0 0 0
## tracado_via uso_solo pessoas
## 0 0 0
## mortos feridos_leves feridos_graves
## 0 0 0
## ilesos ignorados feridos
## 0 0 0
## veiculos latitude longitude
## 0 0 0
## regional delegacia uop
## 0 0 0
mean(datatran2026$feridos)
## [1] 1.181579
summary(datatran2026)
## id data_inversa dia_semana
## Min. :742884 Min. :2026-01-01 Length:17502
## 1st Qu.:747937 1st Qu.:2026-01-24 Class :character
## Median :752786 Median :2026-02-14 Mode :character
## Mean :752745 Mean :2026-02-14
## 3rd Qu.:757570 3rd Qu.:2026-03-09
## Max. :767313 Max. :2026-03-31
##
## horario uf br km
## Min. :00:00:00.000000 Length:17502 Min. : 0.0 Min. : 0.0
## 1st Qu.:08:10:00.000000 Class :character 1st Qu.:101.0 1st Qu.: 75.0
## Median :13:50:00.000000 Mode :character Median :158.0 Median : 195.0
## Mean :13:13:38.385327 Mean :210.1 Mean : 260.0
## 3rd Qu.:18:15:00.000000 3rd Qu.:324.0 3rd Qu.: 409.7
## Max. :23:59:00.000000 Max. :495.0 Max. :1244.0
##
## municipio causa_acidente tipo_acidente
## Length:17502 Length:17502 Length:17502
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## classificacao_acidente fase_dia sentido_via
## Min. : NA Length:17502 Length:17502
## 1st Qu.: NA Class :character Class :character
## Median : NA Mode :character Mode :character
## Mean :NaN
## 3rd Qu.: NA
## Max. : NA
## NA's :17502
## condicao_metereologica tipo_pista tracado_via
## Length:17502 Length:17502 Length:17502
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## uso_solo pessoas mortos feridos_leves
## Length:17502 Min. : 1.000 Min. : 0.00000 Min. : 0.0000
## Class :character 1st Qu.: 2.000 1st Qu.: 0.00000 1st Qu.: 0.0000
## Mode :character Median : 2.000 Median : 0.00000 Median : 1.0000
## Mean : 2.647 Mean : 0.08039 Mean : 0.9044
## 3rd Qu.: 3.000 3rd Qu.: 0.00000 3rd Qu.: 1.0000
## Max. :56.000 Max. :11.00000 Max. :40.0000
##
## feridos_graves ilesos ignorados feridos
## Min. : 0.0000 Min. : 0.000 Min. : 0.0000 Min. : 0.000
## 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 1.000
## Median : 0.0000 Median : 1.000 Median : 0.0000 Median : 1.000
## Mean : 0.2772 Mean : 1.082 Mean : 0.3909 Mean : 1.182
## 3rd Qu.: 0.0000 3rd Qu.: 1.000 3rd Qu.: 1.0000 3rd Qu.: 1.000
## Max. :27.0000 Max. :47.000 Max. :13.0000 Max. :47.000
##
## veiculos latitude longitude regional
## Min. : 1.000 Min. :-33.682 Min. :-72.84 Length:17502
## 1st Qu.: 1.000 1st Qu.:-25.081 1st Qu.:-50.32 Class :character
## Median : 2.000 Median :-20.315 Median :-47.47 Mode :character
## Mean : 1.986 Mean :-18.762 Mean :-46.56
## 3rd Qu.: 2.000 3rd Qu.:-12.532 3rd Qu.:-42.52
## Max. :18.000 Max. : 4.339 Max. :-34.83
##
## delegacia uop
## Length:17502 Length:17502
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
mean(na.omit(datatran2026$feridos))
## [1] 1.181579
Isso significa que a média de feridos por acidente foi aproximadamente 1,18 pessoas.
datatran2026 %>%
select(data_inversa, uf, municipio, causa_acidente, tipo_acidente, mortos, feridos) %>%
head(10) %>%
kable(caption = "Primeiros registros da base de acidentes")
| data_inversa | uf | municipio | causa_acidente | tipo_acidente | mortos | feridos |
|---|---|---|---|---|---|---|
| 2026-01-01 | TO | ARAGUAINA | Objeto estático sobre o leito carroçável | Tombamento | 1 | 0 |
| 2026-01-01 | MG | RIO CASCA | Condutor Dormindo | Colisão frontal | 0 | 4 |
| 2026-01-01 | SC | BIGUACU | Reação tardia ou ineficiente do condutor | Colisão lateral mesmo sentido | 0 | 1 |
| 2026-01-01 | DF | BRASILIA | Reação tardia ou ineficiente do condutor | Colisão traseira | 0 | 1 |
| 2026-01-01 | MT | MATUPA | Transitar na contramão | Colisão frontal | 0 | 1 |
| 2026-01-01 | SP | BARRA DO TURVO | Velocidade Incompatível | Colisão com objeto | 0 | 1 |
| 2026-01-01 | MG | PATOS DE MINAS | Chuva | Colisão frontal | 0 | 2 |
| 2026-01-01 | GO | CRISTALINA | Velocidade Incompatível | Colisão traseira | 0 | 0 |
| 2026-01-01 | MG | FRONTEIRA | Frear bruscamente | Incêndio | 0 | 0 |
| 2026-01-01 | ES | VENDA NOVA DO IMIGRANTE | Ausência de reação do condutor | Colisão com objeto | 0 | 1 |
O gráfico abaixo mostra a quantidade de acidentes por estado.
acidentes_estado <- datatran2026 %>%
count(uf, sort = TRUE)
ggplot(acidentes_estado, aes(x = reorder(uf, n), y = n)) + geom_col() + coord_flip() +
labs(
title = "Quantidade de acidentes por estado",
x = "Estado",
y = " Quantidade de acidentes"
)
O histograma abaixo mostra a distribuição da quantidade de feridos.
ggplot(datatran2026, aes(x = feridos)) + geom_histogram(bins = 30) +
labs(
title = "Distribuição de feridos",
x = "Quantidade de feridos",
y = "Frequência"
)
O boxplot abaixo apresenta a distribuição da quantidade de mortos.
ggplot(datatran2026, aes(y = mortos)) + geom_boxplot() +
labs(
title = "Boxplot da quantidade de mortos",
y = "Mortos"
)
O gráfico de linha mostra a quantidade de acidentes ao longo do tempo
acidentes_data <- datatran2026 %>%
count(data_inversa)
ggplot(acidentes_data, aes(x = data_inversa, y = n)) + geom_line() +
labs(
title = "Acidentes ao longo do tempo",
x = "Data",
y = "Quantidade"
)
O gráfico de pizza apresenta a classificação dos acidentes.
classificacao <- datatran2026 %>%
count(classificacao_acidente)
ggplot(classificacao, aes(x = "", y = n, fill = classificacao_acidente)) + geom_col() +
coord_polar(theta = "y") +
labs(
title = "Classificação dos acidentes"
)
Com a análise dos dados da planilha, foi possível observar informações importantes. Os gráficos e tabelas ajudaram na visualização dos dados, permitindo melhor compreensão da base de dados.