# Read data
dados <- read_csv('preco-combustivel-2004-2021.csv')
## Rows: 120823 Columns: 18
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (10): REGIÃO, ESTADO, PRODUTO, UNIDADE DE MEDIDA, MARGEM MÉDIA REVENDA,...
## dbl (6): NÚMERO DE POSTOS PESQUISADOS, PREÇO MÉDIO REVENDA, DESVIO PADRÃO ...
## date (2): DATA INICIAL, DATA FINAL
##
## ℹ 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.
# glimpse(dados)
# Convert dates to datetime
dados$DATA_INICIAL <- as.POSIXct(dados$'DATA INICIAL', format = "%d/%m/%Y")
dados$DATA_FINAL <- as.POSIXct(dados$'DATA FINAL', format = "%d/%m/%Y")
# Sum of number of gas stations by region
quantidade_regiao <- aggregate(dados$`NÚMERO DE POSTOS PESQUISADOS`, by=list(dados$REGIÃO), FUN=sum)
quantidade_regiao <- quantidade_regiao[order(quantidade_regiao$x),]
quantidade_regiao
## Group.1 x
## 3 NORTE 1754917
## 1 CENTRO OESTE 2284267
## 5 SUL 4806124
## 2 NORDESTE 4882880
## 4 SUDESTE 12981725
quantidade_regiao <- quantidade_regiao[order(quantidade_regiao$x),]
ggplot(quantidade_regiao, aes(x = Group.1, y = x)) +
geom_bar(stat = "identity", fill = "royalblue", color = "black", alpha = 0.6) +
labs(x = "REGIÃO", y = "NÚMERO DE POSTOS") +
theme_minimal()
dados_regiao_min <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by=list(dados$REGIÃO), FUN=min)
dados_regiao_min
## Group.1 x
## 1 CENTRO OESTE 1.097
## 2 NORDESTE 0.975
## 3 NORTE 1.219
## 4 SUDESTE 0.766
## 5 SUL 0.922
dados_regiao_max <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = max)
dados_regiao_max
## Group.1 x
## 1 CENTRO OESTE 105.194
## 2 NORDESTE 91.725
## 3 NORTE 107.500
## 4 SUDESTE 87.091
## 5 SUL 91.189
preco_max <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = max)
preco_max
## Group.1 x
## 1 CENTRO OESTE 105.194
## 2 NORDESTE 91.725
## 3 NORTE 107.500
## 4 SUDESTE 87.091
## 5 SUL 91.189
De acordo com a análise da quantidade de combustíveis por região, entendemos que a região influencia no preço.
dados$DATA_INICIAL <- as.Date(dados$`DATA INICIAL`)
dados$Ano <- format(dados$DATA_INICIAL, "%Y")
head(dados)
## # A tibble: 6 × 21
## `DATA INICIAL` `DATA FINAL` REGIÃO ESTADO PRODUTO NÚMERO DE POSTOS PES…¹
## <date> <date> <chr> <chr> <chr> <dbl>
## 1 2004-05-09 2004-05-15 CENTRO OESTE DISTR… ETANOL… 127
## 2 2004-05-09 2004-05-15 CENTRO OESTE GOIAS ETANOL… 387
## 3 2004-05-09 2004-05-15 CENTRO OESTE MATO … ETANOL… 192
## 4 2004-05-09 2004-05-15 CENTRO OESTE MATO … ETANOL… 162
## 5 2004-05-09 2004-05-15 NORDESTE ALAGO… ETANOL… 103
## 6 2004-05-09 2004-05-15 NORDESTE BAHIA ETANOL… 408
## # ℹ abbreviated name: ¹`NÚMERO DE POSTOS PESQUISADOS`
## # ℹ 15 more variables: `UNIDADE DE MEDIDA` <chr>, `PREÇO MÉDIO REVENDA` <dbl>,
## # `DESVIO PADRÃO REVENDA` <dbl>, `PREÇO MÍNIMO REVENDA` <dbl>,
## # `PREÇO MÁXIMO REVENDA` <dbl>, `MARGEM MÉDIA REVENDA` <chr>,
## # `COEF DE VARIAÇÃO REVENDA` <dbl>, `PREÇO MÉDIO DISTRIBUIÇÃO` <chr>,
## # `DESVIO PADRÃO DISTRIBUIÇÃO` <chr>, `PREÇO MÍNIMO DISTRIBUIÇÃO` <chr>,
## # `PREÇO MÁXIMO DISTRIBUIÇÃO` <chr>, `COEF DE VARIAÇÃO DISTRIBUIÇÃO` <chr>, …
dados_filtered <- dados[dados$Ano >= 2020 & dados$Ano < 2022, ]
#rownames(dados) <- dados$DATA_INICIAL
#dados$DATA_INICIAL <- NULL
head(dados, 2)
## # A tibble: 2 × 21
## `DATA INICIAL` `DATA FINAL` REGIÃO ESTADO PRODUTO NÚMERO DE POSTOS PES…¹
## <date> <date> <chr> <chr> <chr> <dbl>
## 1 2004-05-09 2004-05-15 CENTRO OESTE DISTR… ETANOL… 127
## 2 2004-05-09 2004-05-15 CENTRO OESTE GOIAS ETANOL… 387
## # ℹ abbreviated name: ¹`NÚMERO DE POSTOS PESQUISADOS`
## # ℹ 15 more variables: `UNIDADE DE MEDIDA` <chr>, `PREÇO MÉDIO REVENDA` <dbl>,
## # `DESVIO PADRÃO REVENDA` <dbl>, `PREÇO MÍNIMO REVENDA` <dbl>,
## # `PREÇO MÁXIMO REVENDA` <dbl>, `MARGEM MÉDIA REVENDA` <chr>,
## # `COEF DE VARIAÇÃO REVENDA` <dbl>, `PREÇO MÉDIO DISTRIBUIÇÃO` <chr>,
## # `DESVIO PADRÃO DISTRIBUIÇÃO` <chr>, `PREÇO MÍNIMO DISTRIBUIÇÃO` <chr>,
## # `PREÇO MÁXIMO DISTRIBUIÇÃO` <chr>, `COEF DE VARIAÇÃO DISTRIBUIÇÃO` <chr>, …
data_inicial <- 2020
data_final <- 2022
df_pandemia <- dados[dados$Ano >= data_inicial & dados$Ano < data_final, ]
head(df_pandemia, 5)
## # A tibble: 5 × 21
## `DATA INICIAL` `DATA FINAL` REGIÃO ESTADO PRODUTO NÚMERO DE POSTOS PES…¹
## <date> <date> <chr> <chr> <chr> <dbl>
## 1 2020-01-05 2020-01-11 NORTE ACRE ETANOL H… 17
## 2 2020-01-05 2020-01-11 NORDESTE ALAGOAS ETANOL H… 52
## 3 2020-01-05 2020-01-11 NORTE AMAPA ETANOL H… 3
## 4 2020-01-05 2020-01-11 NORTE AMAZONAS ETANOL H… 40
## 5 2020-01-05 2020-01-11 NORDESTE BAHIA ETANOL H… 331
## # ℹ abbreviated name: ¹`NÚMERO DE POSTOS PESQUISADOS`
## # ℹ 15 more variables: `UNIDADE DE MEDIDA` <chr>, `PREÇO MÉDIO REVENDA` <dbl>,
## # `DESVIO PADRÃO REVENDA` <dbl>, `PREÇO MÍNIMO REVENDA` <dbl>,
## # `PREÇO MÁXIMO REVENDA` <dbl>, `MARGEM MÉDIA REVENDA` <chr>,
## # `COEF DE VARIAÇÃO REVENDA` <dbl>, `PREÇO MÉDIO DISTRIBUIÇÃO` <chr>,
## # `DESVIO PADRÃO DISTRIBUIÇÃO` <chr>, `PREÇO MÍNIMO DISTRIBUIÇÃO` <chr>,
## # `PREÇO MÁXIMO DISTRIBUIÇÃO` <chr>, `COEF DE VARIAÇÃO DISTRIBUIÇÃO` <chr>, …
dados_df <- dados %>%
group_by(PRODUTO) %>%
summarize(`PREÇO MÉDIO REVENDA` = round(mean(`PREÇO MÉDIO REVENDA`), 2),
`PREÇO MÍNIMO REVENDA` = round(mean(`PREÇO MÍNIMO REVENDA`), 2),
`PREÇO MÁXIMO REVENDA` = round(mean(`PREÇO MÁXIMO REVENDA`), 2))
dados_pandemia <- df_pandemia %>%
group_by(PRODUTO) %>%
summarize(`PREÇO MÉDIO REVENDA` = round(mean(`PREÇO MÉDIO REVENDA`), 2)) %>%
arrange(`PREÇO MÉDIO REVENDA`)
dados_pandemia
## # A tibble: 7 × 2
## PRODUTO `PREÇO MÉDIO REVENDA`
## <chr> <dbl>
## 1 GNV 3.23
## 2 ETANOL HIDRATADO 3.64
## 3 OLEO DIESEL 3.69
## 4 OLEO DIESEL S10 3.76
## 5 GASOLINA COMUM 4.55
## 6 GASOLINA ADITIVADA 5.05
## 7 GLP 77.2
dados_regiao <- df_pandemia %>%
group_by(REGIÃO) %>%
summarize(`PREÇO MÉDIO REVENDA` = round(mean(`PREÇO MÉDIO REVENDA`), 2))
dados_regiao <- dados_regiao[order(dados_regiao$`PREÇO MÉDIO REVENDA`),]
dados_regiao
## # A tibble: 5 × 2
## REGIÃO `PREÇO MÉDIO REVENDA`
## <chr> <dbl>
## 1 SUDESTE 14.2
## 2 SUL 14.9
## 3 NORDESTE 15.1
## 4 CENTRO OESTE 16.7
## 5 NORTE 19.0
# Região com o preço mais alto
preco_maximo <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = max)
regiao_preco_maximo <- preco_maximo$Group.1[which.max(preco_maximo$x)]
valor_preco_maximo <- max(preco_maximo$x)
# Região com o preço mais baixo
preco_minimo <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = min)
regiao_preco_minimo <- preco_minimo$Group.1[which.min(preco_minimo$x)]
valor_preco_minimo <- min(preco_minimo$x)
# Período do preço mais alto
periodo_preco_maximo <- dados[dados$REGIÃO == regiao_preco_maximo &
dados$`PREÇO MÉDIO REVENDA` == valor_preco_maximo,
c("DATA INICIAL", "DATA FINAL")]
# Período do preço mais baixo
periodo_preco_minimo <- dados[dados$REGIÃO == regiao_preco_minimo &
dados$`PREÇO MÉDIO REVENDA` == valor_preco_minimo,
c("DATA INICIAL", "DATA FINAL")]
cat("Região com o preço mais alto:", regiao_preco_maximo, "(Valor: R$", valor_preco_maximo, ")\n")
## Região com o preço mais alto: NORTE (Valor: R$ 107.5 )
cat("Período do preço mais alto:", paste(periodo_preco_maximo$`DATA INICIAL`, collapse = ", "), "a", paste(periodo_preco_maximo$`DATA FINAL`, collapse = ", "), "\n")
## Período do preço mais alto: 2021-03-14 a 2021-03-20
cat("\n")
cat("Região com o preço mais baixo:", regiao_preco_minimo, "(Valor: R$", valor_preco_minimo, ")\n")
## Região com o preço mais baixo: SUDESTE (Valor: R$ 0.766 )
cat("Período do preço mais baixo:", paste(periodo_preco_minimo$`DATA INICIAL`, collapse = ", "), "a", paste(periodo_preco_minimo$`DATA FINAL`, collapse = ", "), "\n")
## Período do preço mais baixo: 2004-05-16 a 2004-05-22
# Histogramas por região
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, fill = REGIÃO)) +
geom_histogram(position = "stack", bins = 30) +
geom_density(aes(y = ..density..), alpha = 0.5) +
labs(title = "Distribuição de Preços por Região",
x = "Preço",
y = "Contagem",
fill = "Região") +
theme_minimal()
# Boxplots por região
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, y = REGIÃO)) +
geom_boxplot() +
labs(title = "Boxplots de Preço por Região",
x = "Preço Médio Revenda",
y = "Região") +
theme_minimal()
# Histogramas por produto
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, fill = PRODUTO)) +
geom_histogram(position = "stack", bins = 30) +
geom_density(aes(y = ..density..), alpha = 0.5) +
labs(title = "Distribuição de Preços por Produto",
x = "Preço",
y = "Contagem",
fill = "Produto") +
theme_minimal()
# Boxplots por produto
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, y = PRODUTO)) +
geom_boxplot() +
labs(title = "Boxplots de Preços por Produto",
x = "Preço Médio Revenda",
y = "Produto") +
theme_minimal()
dados_grafico <- dados[, c("REGIÃO", "DATA INICIAL", "PREÇO MÉDIO REVENDA", "ESTADO")]
head(dados_grafico, 5)
## # A tibble: 5 × 4
## REGIÃO `DATA INICIAL` `PREÇO MÉDIO REVENDA` ESTADO
## <chr> <date> <dbl> <chr>
## 1 CENTRO OESTE 2004-05-09 1.29 DISTRITO FEDERAL
## 2 CENTRO OESTE 2004-05-09 1.16 GOIAS
## 3 CENTRO OESTE 2004-05-09 1.39 MATO GROSSO
## 4 CENTRO OESTE 2004-05-09 1.26 MATO GROSSO DO SUL
## 5 NORDESTE 2004-05-09 1.18 ALAGOAS
# Separando o dataframe acima por região
dados_centro_oeste <- dados_grafico[dados_grafico$REGIÃO == "CENTRO OESTE", ]
dados_nordeste <- dados_grafico[dados_grafico$REGIÃO == "NORDESTE", ]
dados_norte <- dados_grafico[dados_grafico$REGIÃO == "NORTE", ]
dados_sul <- dados_grafico[dados_grafico$REGIÃO == "SUL", ]
dados_sudeste <- dados_grafico[dados_grafico$REGIÃO == "SUDESTE", ]
estados_centro_oeste <- unique(dados_centro_oeste$ESTADO)
# Plotando o gráfico de linha para cada estado do Centro Oeste
for (estado in estados_centro_oeste) {
cat(estado)
}
## DISTRITO FEDERALGOIASMATO GROSSOMATO GROSSO DO SUL
dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'DISTRITO FEDERAL', ]
dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`,
by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO),
FUN = max)
dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
ggplot(dado_agregado, aes(x = Group.1, y = x)) +
geom_line() +
labs(title = paste("Variação de Preços no Estado", estado),
x = "Data Inicial",
y = "Preço Médio Revenda") +
theme_minimal()
dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'GOIAS', ]
dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`,
by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO),
FUN = max)
dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
ggplot(dado_agregado, aes(x = Group.1, y = x)) +
geom_line() +
labs(title = paste("Variação de Preços no Estado", estado),
x = "Data Inicial",
y = "Preço Médio Revenda") +
theme_minimal()
dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'MATO GROSSO', ]
dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`,
by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO),
FUN = max)
dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
ggplot(dado_agregado, aes(x = Group.1, y = x)) +
geom_line() +
labs(title = paste("Variação de Preços no Estado", estado),
x = "Data Inicial",
y = "Preço Médio Revenda") +
theme_minimal()
dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'MATO GROSSO DO SUL', ]
dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`,
by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO),
FUN = max)
dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
ggplot(dado_agregado, aes(x = Group.1, y = x)) +
geom_line() +
labs(title = paste("Variação de Preços no Estado", estado),
x = "Data Inicial",
y = "Preço Médio Revenda") +
theme_minimal()