Pergunta: Considere que é de interesse visualizar a série temporal (anual) do número de decolagens para as 10 empresas nacionais que mais decolaram no perÃodo disponÃvel de dados. Faça duas visualizações uma para enfatizar a comparação entre as empresas e outra para enfatizar a visualização da série de cada empresa. Considere apenas os registros que tenham o número de decolagens.
## Instalando o pacote tidyverse
install.packages("tidyverse")
## Warning: o pacote 'tidyverse' está em uso e não será instalado
## Carregando o pacote tidyverse
library(tidyverse)
#Passo 1: Importando dados do tipo .csv
url <- "https://sistemas.anac.gov.br/dadosabertos/Voos%20e%20opera%C3%A7%C3%B5es%20a%C3%A9reas/Dados%20Estat%C3%ADsticos%20do%20Transporte%20A%C3%A9reo/Dados_Estatisticos.csv"
dados <- read_delim(url, delim = ";", skip = 1) #Descartar a primeira linha do arquivo que tem um dado fora do padrão e definir o separado ";"
## Rows: 1045525 Columns: 38
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (18): EMPRESA_SIGLA, EMPRESA_NOME, EMPRESA_NACIONALIDADE, AEROPORTO_DE_O...
## dbl (20): ANO, MES, PASSAGEIROS_PAGOS, PASSAGEIROS_GRATIS, CARGA_PAGA_KG, CA...
##
## ℹ 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.
#head(dados)
#spec(dados) #Inspecionar os dados carregados e começar a entender sua organização
#Converter DECOLAGENS (remover milhar e ajustar vÃrgula decimal)
dados <- dados %>%
mutate(
DECOLAGENS = str_replace(DECOLAGENS, "\\.", ""),
DECOLAGENS = as.numeric(str_replace(DECOLAGENS, ",", ".")),
EMPRESA_NACIONALIDADE = str_to_upper(EMPRESA_NACIONALIDADE)
)
#Filtrar empresas brasileiras com decolagens válidas
dados_filtrados <- dados %>%
filter(EMPRESA_NACIONALIDADE == "BRASILEIRA", !is.na(DECOLAGENS))
#Selecionar top 10 empresas que mais decolaram no total
top10_empresas <- dados_filtrados %>%
group_by(EMPRESA_NOME) %>%
summarise(total_decolagens = sum(DECOLAGENS), .groups = "drop") %>%
arrange(desc(total_decolagens)) %>%
slice_head(n = 10)
#Filtrar dados apenas dessas 10 empresas
dados_top10 <- dados_filtrados %>%
filter(EMPRESA_NOME %in% top10_empresas$EMPRESA_NOME)
#Agregar por ano e empresa
serie_anual <- dados_top10 %>%
group_by(ANO, EMPRESA_NOME) %>%
summarise(decolagens = sum(DECOLAGENS), .groups = "drop")
Visualização 1
#Visualização 1
ggplot(top10_empresas, aes(x = reorder(EMPRESA_NOME, total_decolagens), y = total_decolagens)) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(title = "Total de Decolagens – Top 10 Empresas Brasileiras",
x = "Empresa",
y = "Total de Decolagens") +
theme_minimal()
Visualização 2
ggplot(serie_anual, aes(x = ANO, y = decolagens, color = EMPRESA_NOME)) +
geom_line(linewidth = 1) +
geom_point() +
labs(title = "Evolução Anual de Decolagens – Top 10 Empresas Brasileiras",
x = "Ano",
y = "Número de Decolagens",
color = "Empresa") +
theme_minimal()
## ExercÃcio
Pergunta: Faça uma visualização de dados comparar o número de passageiros pagantes entre empresas nacionais e estrangeiras ao longo dos anos.
dados <- dados %>%
mutate(
PASSAGEIROS_PAGOS = str_replace(PASSAGEIROS_PAGOS, "\\.", ""),
PASSAGEIROS_PAGOS = as.numeric(str_replace(PASSAGEIROS_PAGOS, ",", ".")),
EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE)
)
passageiros_por_ano <- dados %>%
filter(!is.na(PASSAGEIROS_PAGOS)) %>%
group_by(ANO, EMPRESA_NACIONALIDADE) %>%
summarise(total_passageiros = sum(PASSAGEIROS_PAGOS), .groups = "drop")
ggplot(passageiros_por_ano, aes(x = ANO, y = total_passageiros, color = EMPRESA_NACIONALIDADE)) +
geom_line(linewidth = 1) +
geom_point(size = 2) +
labs(
title = "Evolução de Passageiros Pagantes – Empresas Brasileiras vs Estrangeiras",
x = "Ano",
y = "Total de Passageiros",
color = "Nacionalidade"
) +
theme_minimal()
Pergunta: Faça uma visualização de dados comparar o número de passageiros pagantes entre empresas nacionais e estrangeiras de acordo com o grupo de voo.
dados <- dados %>%
mutate(
PASSAGEIROS_PAGOS = str_replace(PASSAGEIROS_PAGOS, "\\.", ""),
PASSAGEIROS_PAGOS = as.numeric(str_replace(PASSAGEIROS_PAGOS, ",", ".")),
EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE)
)
passageiros_por_grupo <- dados %>%
filter(!is.na(PASSAGEIROS_PAGOS), !is.na(GRUPO_DE_VOO)) %>%
group_by(GRUPO_DE_VOO, EMPRESA_NACIONALIDADE) %>%
summarise(total_passageiros = sum(PASSAGEIROS_PAGOS), .groups = "drop")
ggplot(passageiros_por_grupo, aes(x = GRUPO_DE_VOO, y = total_passageiros, fill = EMPRESA_NACIONALIDADE)) +
geom_col(position = "dodge") +
labs(
title = "Passageiros Pagantes por Grupo de Voo e Nacionalidade",
x = "Grupo de Voo",
y = "Total de Passageiros",
fill = "Nacionalidade"
) +
theme_minimal()
Pergunta: Faça uma visualização para enfatizar a distribuição da variável número de passageiros pagantes de acordo com a região de origem e natureza do voo. Enfatize a comparação entre DOMÉSTICA e INTERNACIONAL para cada região de origem. Para criar o gráfico use o log10 da variável PASSAGEIROS_PAGOS.
dados <- dados %>%
mutate(
PASSAGEIROS_PAGOS = str_replace(PASSAGEIROS_PAGOS, "\\.", ""),
PASSAGEIROS_PAGOS = as.numeric(str_replace(PASSAGEIROS_PAGOS, ",", ".")),
NATUREZA = str_to_title(NATUREZA),
AEROPORTO_DE_ORIGEM_REGIAO = str_to_title(AEROPORTO_DE_ORIGEM_REGIAO)
)
dados_distribuicao <- dados %>%
filter(!is.na(PASSAGEIROS_PAGOS), PASSAGEIROS_PAGOS > 0, !is.na(NATUREZA), !is.na(AEROPORTO_DE_ORIGEM_REGIAO))
# Visualização com escala logarÃtmica (log10)
ggplot(dados_distribuicao, aes(x = AEROPORTO_DE_ORIGEM_REGIAO, y = log10(PASSAGEIROS_PAGOS), fill = NATUREZA)) +
geom_boxplot(outlier.alpha = 0.1) +
labs(
title = "Distribuição (log10) de Passageiros Pagantes por Região e Natureza do Voo",
x = "Região de Origem",
y = "log10(Número de Passageiros Pagantes)",
fill = "Natureza do Voo"
) +
theme_minimal()
## ExercÃcio 6
Pergunta: Crie uma variável que indique a eficiencia no uso do combustÃvel como sendo a razão entre o DISTANCIA_VOADA_KM e COMBUSTIVEL_LITROS. Compare as empresas de acordo com a região de origem e destino. Use a escala y em log10 para facilitar a comparação das regiões.
dados <- dados %>%
mutate(
DISTANCIA_VOADA_KM = str_replace(DISTANCIA_VOADA_KM, "\\.", ""),
DISTANCIA_VOADA_KM = as.numeric(str_replace(DISTANCIA_VOADA_KM, ",", ".")),
COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
AEROPORTO_DE_ORIGEM_REGIAO = str_to_title(AEROPORTO_DE_ORIGEM_REGIAO),
AEROPORTO_DE_DESTINO_REGIAO = str_to_title(AEROPORTO_DE_DESTINO_REGIAO)
)
dados_eficiencia <- dados %>%
filter(
!is.na(DISTANCIA_VOADA_KM),
!is.na(COMBUSTIVEL_LITROS),
COMBUSTIVEL_LITROS > 0
) %>%
mutate(eficiencia = DISTANCIA_VOADA_KM / COMBUSTIVEL_LITROS) %>%
filter(is.finite(eficiencia), eficiencia > 0)
ggplot(dados_eficiencia, aes(x = AEROPORTO_DE_ORIGEM_REGIAO, y = eficiencia)) +
geom_boxplot(aes(fill = AEROPORTO_DE_DESTINO_REGIAO), outlier.alpha = 0.1) +
scale_y_log10() +
labs(
title = "Eficiência no Uso de CombustÃvel (km/l) por Região de Origem e Destino",
x = "Região de Origem",
y = "Eficiência (log10 km/litro)",
fill = "Região de Destino"
) +
theme_minimal()
Pergunta: Faça uma visualização para mostrar a relação entre o consumo de combustÃvel e a distância voada. Considere empresas nacionais e internacionais e os diferentes anos para enriquecer a visualização. Considere transformar as variáveis e use alguma forma estatÃstica para enfatizar a forma do relacionamento.
dados <- dados %>%
mutate(
DISTANCIA_VOADA_KM = str_replace(DISTANCIA_VOADA_KM, "\\.", ""),
DISTANCIA_VOADA_KM = as.numeric(str_replace(DISTANCIA_VOADA_KM, ",", ".")),
COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE)
)
dados_relacao <- dados %>%
filter(
!is.na(DISTANCIA_VOADA_KM),
!is.na(COMBUSTIVEL_LITROS),
DISTANCIA_VOADA_KM > 0,
COMBUSTIVEL_LITROS > 0
)
ggplot(dados_relacao, aes(x = DISTANCIA_VOADA_KM, y = COMBUSTIVEL_LITROS, color = as.factor(ANO))) +
geom_point(alpha = 0.2) +
scale_x_log10() +
scale_y_log10() +
geom_smooth(method = "lm", se = FALSE, color = "black") +
labs(
title = "Relação entre Consumo e Distância Voada (Cor por Ano)",
x = "Distância Voada (km) [log10]",
y = "Consumo de CombustÃvel (litros) [log10]",
color = "Ano"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Pergunta: Baseado na visualização em 6 você diria que tem alguma incosistencia com esses dados? Justique.
Na região próxima de 1e+02 (≈ 100 km) e 1e+01 (≈ 10 litros), há densas colunas verticais e horizontais, o que é incomum. Pontos muito fora da tendência e há um congestionamento incomum na base do gráfico.
Pergunta: Considerando apenas as empresas nacionais. Faça uma visualização para investigar se a região do aeroporto de origem influencia na relação entre combustÃvel e distancia voada..
dados <- dados %>%
mutate(
DISTANCIA_VOADA_KM = str_replace(DISTANCIA_VOADA_KM, "\\.", ""),
DISTANCIA_VOADA_KM = as.numeric(str_replace(DISTANCIA_VOADA_KM, ",", ".")),
COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE),
AEROPORTO_DE_ORIGEM_REGIAO = str_to_title(AEROPORTO_DE_ORIGEM_REGIAO)
)
dados_nacionais <- dados %>%
filter(
EMPRESA_NACIONALIDADE == "Brasileira",
!is.na(DISTANCIA_VOADA_KM),
!is.na(COMBUSTIVEL_LITROS),
DISTANCIA_VOADA_KM > 0,
COMBUSTIVEL_LITROS > 0
)
ggplot(dados_nacionais, aes(x = DISTANCIA_VOADA_KM, y = COMBUSTIVEL_LITROS)) +
geom_point(alpha = 0.1, color = "gray") +
scale_x_log10() +
scale_y_log10() +
geom_smooth(method = "lm", se = FALSE, aes(color = AEROPORTO_DE_ORIGEM_REGIAO)) +
labs(
title = "Relação entre CombustÃvel e Distância Voada por Região de Origem (Empresas Nacionais)",
x = "Distância Voada (km) [log10]",
y = "Consumo de CombustÃvel (litros) [log10]",
color = "Região de Origem"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Pergunta: O indicador RTK (Revenue tonne kilometer) refere-se ao volume de toneladas quilômetros transportada.Faça uma visualização da relação deste indicador com o consumo de combustÃvel. Filtre apenas observações com ambas variáveis maiores que zero. Considere também que é de interesse comparar essa relação entre os diferentes anos. Considere incluir alguma camada estatÃstica para enfatizar o formato do relacionamento entre as variáveis..
dados <- dados %>%
mutate(
RTK = str_replace(RTK, "\\.", ""),
RTK = as.numeric(str_replace(RTK, ",", ".")),
COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
ANO = as.factor(ANO) # Para usar em cores ou facetas
)
dados_rtk <- dados %>%
filter(!is.na(RTK), !is.na(COMBUSTIVEL_LITROS), RTK > 0, COMBUSTIVEL_LITROS > 0)
ggplot(dados_rtk, aes(x = RTK, y = COMBUSTIVEL_LITROS, color = ANO)) +
geom_point(alpha = 0.15) +
geom_smooth(method = "lm", se = FALSE, color = "black") +
scale_x_log10() +
scale_y_log10() +
labs(
title = "Relação entre RTK (Tonelada-Km) e Consumo de CombustÃvel [log-log]",
x = "RTK (Revenue Tonne Kilometer) [log10]",
y = "CombustÃvel (litros) [log10]",
color = "Ano"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Pergunta: O indicador ATK (Available tonne kilometer) refere-se ao volume de tonelada quilômetro oferecida pela companhia. Crie uma visualização para explorar a relação entre estes indicadores. Considere aspectos como GRUPO_DE_VOO e NATUREZA além do anos
dados <- dados %>%
mutate(
ATK = str_replace(ATK, "\\.", ""),
ATK = as.numeric(str_replace(ATK, ",", ".")),
RTK = str_replace(RTK, "\\.", ""),
RTK = as.numeric(str_replace(RTK, ",", ".")),
GRUPO_DE_VOO = str_to_title(GRUPO_DE_VOO),
NATUREZA = str_to_title(NATUREZA)
)
dados_atk_rtk <- dados %>%
filter(!is.na(ATK), !is.na(RTK), ATK > 0, RTK > 0)
ggplot(dados_atk_rtk, aes(x = ATK, y = RTK)) +
geom_point(
aes(color = interaction(GRUPO_DE_VOO, NATUREZA), alpha = ANO),
size = 1
) +
geom_smooth(method = "lm", se = FALSE, color = "black") +
scale_x_log10() +
scale_y_log10() +
scale_alpha_manual(values = rep(0.3, length(unique(dados_atk_rtk$ANO)))) + # uniformizar a transparência
labs(
title = "Relação entre ATK (Oferta) e RTK (Demanda) com Grupo de Voo e Natureza",
x = "ATK (toneladas x km) [log10]",
y = "RTK (toneladas x km) [log10]",
color = "Grupo x Natureza"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'