library(tidyverse)
## ── Attaching packages ──────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1     ✔ purrr   0.3.3
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   1.0.0     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## ── Conflicts ─────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(geosphere)
library(dplyr)
options(scipen = 999)
grouped_result <- read_csv("/local/juninho/aggregate_output/output/result.csv", col_types = list(
    date = col_date(format = ""),
    week_day = col_double(),
    route = col_character(),
    start_hour = col_double(),
    end_hour = col_double(),
    quantity_trips = col_double(),
    duration_median = col_double(),
    dist_median = col_double()
  )
)

grouped_result <- grouped_result %>% filter(week_day == 3 | week_day == 4 | week_day == 5)

Análise para os dias de terça-feira até quinta-feira.

  1. Há uma relação entre a distância das viagens e a tempo delas?
grouped_result %>%
  ggplot(aes(x = dist_median, y = duration_median, alpha = .001)) %>%
  + geom_point() + theme_classic() 

  1. Quais as rotas que, na mediana, percorrem uma maior distância?
grouped_result %>%
  group_by(route) %>%
  summarise(median_dist = median(dist_median)) %>%
  top_n(20) %>%
  ggplot(aes(x = reorder(route, -median_dist), y = median_dist)) + labs(x = "route") + geom_col() + theme_classic()
## Selecting by median_dist

  1. Quais as rotas que, na mediana, percorrem uma menor distância?
grouped_result %>%
  group_by(route) %>%
  summarise(median_dist = median(dist_median)) %>% 
  top_n(-20) %>% 
  ggplot(aes(x = reorder(route, median_dist), y = median_dist)) + labs(x = "route") + geom_col() + theme_classic()
## Selecting by median_dist

  1. Quais as rotas mais populares, ou seja, aquelas com mais viagens (levando em consideração o passageiro) durante todo o período?
grouped_result %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -quantity), y = quantity)) + labs(x = "route", y = "trip quantity") + geom_bar(stat = "identity") + theme_classic()
## Selecting by quantity

4.1) Verificando a popularidade mês a mês, temos:

maio:

grouped_result %>% 
  filter(lubridate::month(lubridate::date(lubridate::ymd(date))) == 5) %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -quantity), y = quantity)) + labs(x = "route", y = "trip quantity") + geom_bar(stat = "identity") + theme_classic()
## Selecting by quantity

junho:

grouped_result %>% 
  filter(lubridate::month(lubridate::date(lubridate::ymd(date))) == 6) %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -quantity), y = quantity)) + labs(x = "route", y = "trip quantity") + geom_bar(stat = "identity") + theme_classic()
## Selecting by quantity

Como destaque temos as rotas 602, 603, 507 e 550. A rota 602 apresenta uma queda na quantidade de viagens de cerca de 48%, a rota 603 cerca de 52%, a rota 507 cerca de 47% e a 550 cerca de 50%, de maio para junho.

Destaque: rota 602, 603, 507, 550

julho:

grouped_result %>% 
  filter(lubridate::month(lubridate::date(lubridate::ymd(date))) == 7) %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -quantity), y = quantity)) + labs(x = "route", y = "trip quantity") + geom_bar(stat = "identity") + theme_classic()
## Selecting by quantity

  1. Quais as rotas menos populares, ou seja, aquelas com menos viagens (levando em consideração o passageiro) durante todo o dia?
grouped_result %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(-20) %>% 
  ggplot(aes(x = reorder(route, quantity), y = quantity)) +
    labs(x = "route", y = "trip quantity") +
    geom_bar(stat = "identity") +
    theme_classic()
## Selecting by quantity

Como destaque temos a rota 732, onde nos dias de segunda e sexta apresenta 56% menos viagens do que nos dias de terça a quinta para os mesmos meses. Taxa bastante significativa. A rota 911 também se destaca, pois a mesma apresenta um aumento no número de viagens de 61% nos dias de terça a quinta em comparação com os dias de segunda e sexta.

Destaque: 732, 911

5.1) Mês a mês temos:

maio:

grouped_result %>% 
  filter(lubridate::month(lubridate::date(lubridate::ymd(date))) == 5) %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(-20) %>% 
  ggplot(aes(x = reorder(route, quantity), y = quantity)) + labs(x = "route", y = "trip quantity") + geom_bar(stat = "identity") + theme_classic()
## Selecting by quantity

junho:

grouped_result %>% 
  filter(lubridate::month(lubridate::date(lubridate::ymd(date))) == 6) %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(-20) %>% 
  ggplot(aes(x = reorder(route, quantity), y = quantity)) + labs(x = "route", y = "trip quantity") + geom_bar(stat = "identity") + theme_classic()
## Selecting by quantity

julho:

grouped_result %>% 
  filter(lubridate::month(lubridate::date(lubridate::ymd(date))) == 7) %>% 
  group_by(route) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(-20) %>% 
  ggplot(aes(x = reorder(route, quantity), y = quantity)) + labs(x = "route", y = "trip quantity") + geom_bar(stat = "identity") + theme_classic()
## Selecting by quantity

  1. Quais as rotas cujas viagens são mais demoradas na mediana?
grouped_result %>%
  group_by(route) %>% 
  summarise(duration = median(duration_median)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -duration), y = duration)) +
    labs(x = "route", y = "trip duration (in minutes)") +
    geom_bar(stat = "identity") +
    theme_classic()
## Selecting by duration

  1. Quais as rotas cujas viagens são mais rápidas na mediana?
grouped_result %>%
  group_by(route) %>% 
  summarise(duration = median(duration_median)) %>% 
  top_n(-20) %>% 
  ggplot(aes(x = reorder(route, duration), y = duration)) +
    labs(x = "route", y = "trip duration (in minutes)") +
    geom_bar(stat = "identity") +
    theme_classic()
## Selecting by duration

Destaque para a rota 322 em compração com segunda e sexta. De terças a quintas a rota apresenta um tempo mediano de 8 minutos enquanto que de segundas e sextas o tempo é de 10 minutos. Uma diferença de 2 minutos, na mediana, para cada viagem, é um tempo significativo.

  1. Quais as rotas mais populares (lotadas) das 6h as 8h?
grouped_result %>% 
  group_by(route) %>% 
  filter(start_hour >= 6 & start_hour <= 8) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -quantity), y = quantity)) +
    labs(x = "route", y = "trips quantity") +
    geom_col() +
    theme_classic()
## Selecting by quantity

Comparando com os resultados obtidos na análise de seguna e sexta, temos 3 rotas se destacando. São elas a 022, 204 e a 307. A rota 022 apresenta uma aumento de 43% no número de viagens da segunda e sexta em compração com terça a quinta. Para as rotas 204 e 307 o aumento é de 49% e 41%, respectivamente.

Destaque: 022, 204, 307.

  1. Quais as rotas mais populares (lotadas) das 11h as 13h?
grouped_result %>% 
  group_by(route) %>% 
  filter(start_hour >= 11 & start_hour <= 13) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -quantity), y = quantity)) +
    labs(x = "route", y = "trips quantity") +
    geom_col() +
    theme_classic()
## Selecting by quantity

Comparando também com os resultados obtidos na análise de seguna e sexta, temos agora 2 rotas se destacando. São elas a 502 e a 703. A rota 502 apresenta uma aumento de 51% no número de viagens da segunda e sexta em compração com terça a quinta. Para a 703 o aumento é de 61%.

Destaque: 502, 703.

  1. Quais as rotas mais populares (lotadas) das 17h as 19h?
grouped_result %>% 
  group_by(route) %>% 
  filter(start_hour >= 17 & start_hour <= 19) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  top_n(20) %>% 
  ggplot(aes(x = reorder(route, -quantity), y = quantity)) +
    labs(x = "route", y = "trips quantity") +
    geom_col() +
    theme_classic()
## Selecting by quantity

Na comparação feita 2 rotas se destacaram. São elas a 050, a 545 e a 307. A rota 050 apresenta uma aumento de 66% no número de viagens da segunda e sexta em compração com terça a quinta. Para as rota 307 e 545 o aumento foi de 37% e 52%.

Destaque: 050, 545, 307.

grouped_result %>%
  filter(route == "307") %>%
  group_by(start_hour) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  ggplot(aes(x = start_hour, y = quantity)) + geom_col() + theme_bw()

  1. A rota 204 apresenta comportamento interessante. Na faixa de horário das 17h as 18h a mesma apresenta uma quantidade de viagens 57% menor do que na faixa de horário das 6h as 8h. Vamos ver a distribuição da quantidade de viagens da rota ao longo de todo o dia.
grouped_result %>%
  filter(route == "204") %>%
  group_by(start_hour) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  ggplot(aes(x = start_hour, y = quantity)) + geom_col() + theme_bw()

  1. Iremos analisar agora a rota 506, outra rota que mostra variação na quantidade de viagens nos horários de pico. Fez 4517 das 17h às 19h e 9661 das 6h às 8h, 53% a mais do que no outro horário.
grouped_result %>% 
  filter(route == "506") %>% 
  group_by(start_hour) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  ggplot(aes(x = start_hour, y = quantity)) + geom_col() + theme_classic() 

  1. Iremos analisar agora a rota 550, pois a mesma apresenta uma forte queda na quantidade de viagens no horário de 11h as 13h. Nesse horário ela fez apenas 2191 viagens, enquanto que nos horários de 6h as 8h e de 17h as 19h fez 12322 e 5778, respectivamente.
grouped_result %>% 
  filter(route == "550") %>% 
  group_by(start_hour) %>% 
  summarise(quantity = sum(quantity_trips)) %>% 
  ggplot(aes(x = start_hour, y = quantity)) + geom_col() + theme_classic()