Nota: Acesse meu portfólio completo clicando neste link .
O estudo de caso “Como um sistema de compartilhamento de bicicletas alcança o sucesso rapidamente?” Foi o projeto final escolhido para a obtenção da certificação no curso Google Data Analytics, oferecido pela Coursera.
A análise consiste na exploração de dados referentes ao período de janeiro a dezembro de 2025, com o objetivo de compreender o perfil dos usuários do serviço. A partir dessa análise, busca-se identificar padrões de comportamento, diferenças entre usuários casuais e assinantes anuais e oportunidades estratégicas.
Com base nos insights obtidos, são propostas campanhas de marketing direcionadas para converter usuários casuais em assinantes anuais, auxiliando a empresa na tomada de decisões orientadas por dados.
As etapas exigidas para a conclusão da análise são:
Cyclistic é uma empresa que possui um serviço de compartilhamento de bicicletas. O programa conta com uma frota de 5.824 bicicletas georreferenciadas e conectadas a uma rede de 692 estações em Chicago.
O objetivo principal da análise é desenvolver estratégias de marketing voltadas para a conversão de ciclistas ocasionais em membros anuais.
Os dados utilizados neste estudo foram disponibilizados pelo sistema de compartilhamento de bicicletas Divvy, (sob esta licença), e obtidos a partir de um repositório público neste link, operado na cidade de Chicago.
Embora os dados sejam reais, a empresa chamada Cyclistic é fictícia. Os dados foram utilizados para fins didáticos, com o objetivo de obter o certificado do curso Google Data Analytics Professional Certificate, oferecido pela Coursera.
Seguindo as etapas: Ask, Prepare, Process, Analyze, Share e Act. Com o objetivo de colocar em prática as competências técnicas e analíticas aprendidas durante o curso.
Os dados são referentes ao período de janeiro a dezembro de 2025, disponibilizados em arquivos mensais no formato CSV. As variáveis do banco de dados são:
A partir dessa análise, torna-se possível compreender como os diferentes tipos de clientes utilizam o serviço. Esses insights, auxiliam a empresa na tomada de decisões estratégicas orientadas por dados.
Nota: A versão final da base de dados, após as etapas de limpeza, tratamento e tradução, está disponível no link .
Nesta seção, será apresentada uma descrição detalhada de todo o processo de análise realizado no software R, contemplando desde a obtenção e importação dos dados até as etapas de análise e visualizações.
Caso prefira, é possível avançar diretamente para a seção de Resultados e Discussões.
A ferramenta escolhida para realizar a análise foi o software
R, devido à sua capacidade de processamento de grandes volumes de
dados e pela robustez de suas bibliotecas, que permitem realizar desde a
preparação dos dados até análise, visualização e geração de relatórios
em um único ambiente.
Inicialmente, foi criado um projeto no R, garantindo que todos os arquivos e scripts permanecessem organizados em um único ambiente de trabalho. Todos os arquivos utilizados nesta análise estão disponíveis na pasta do Drive .
Além disso, um relatório detalhado contendo esta análise foi elaborado e está disponível aqui .
Com o link do site de download dos dados, é possível
realizar todo o processo de extração diretamente no ambiente do
R. Para isso, foi criada a função baixar(), que
recebe um vetor de datas, baixa os dados a partir da URL correspondente
a cada mês e os armazena em uma pasta denominada
Dados.
library(curl)
library(tidyverse)
baixar <- function(data) {
ano_mes <- format(data, "%Y%m")
url <- paste0(
"https://divvy-tripdata.s3.amazonaws.com/",
ano_mes,
"-divvy-tripdata.zip"
)
arquivo <- paste0("Dados/", ano_mes, "-divvy-tripdata.zip")
curl::curl_download(url, arquivo)
print(paste("baixado:", ano_mes))
}
datas <- seq(
as.Date("2025-01-01"),
as.Date("2025-12-01"),
by = "month"
)
map(datas, baixar, .progress = TRUE)
Em seguida, os dados foram importados e unificados em uma única base
denominada dados-capstone-bicicletas-2025-01-12.csv. Além
disso, foram criadas duas novas variáveis: Ano e
Mês.
library(tidyverse)
arquivos <- list.files("Dados/", full.names = TRUE)
df_final <- arquivos |>
map_dfr(~ {
ano_mes <- stringr::str_extract(.x, "\\d{6}")
mes <- substr(ano_mes, 5, 6)
read_csv(.x ) %>%
mutate(mes = mes, ano = 2025)
}, .progress = TRUE)
df_final
write.csv(df_final, "Dados/dados-capstone-bicicletas-2025-01-12.csv", row.names = FALSE)
As bibliotecas utilizadas na análise foram: tidyverse,
empregada para preparação, manipulação, análise e visualização de dados;
lubridate, utilizada para manipulação de variáveis
relacionadas a datas e horários; psych,
que possui funções relacionadas a estatísticas descritivas;
scales, utilizada para ajustar a formatação de escalas e
rótulos numéricos nos gráficos; geosphere, responsável pelo
cálculo de distâncias entre dois pontos geográficos a partir da latitude
e longitude; e por fim, xtable, que converte tabelas
geradas no R em formato LaTeX, facilitando sua inserção
no relatório.
Os dados tabulados foram carregados através da função
read_csv().
library(tidyverse)
library(lubridate)
library(psych)
library(scales)
library(xtable)
library(geosphere)
df <- read_csv("Dados/dados-capstone-bicicletas-2025-01-12.csv")
Foram criadas duas colunas, a diferença, em minutos, entre o início e
fim da viagem (journey_duration_min) e o dia da semana em
que a viagem foi iniciada (day_start).
df <- df |>
mutate(
journey_duration_min = as.numeric(
difftime(ended_at, started_at, units = "mins")
),
day_start = wday(started_at, label = TRUE, abbr = FALSE),
distance_journey_km = distHaversine(
cbind(start_lng, start_lat),
cbind(end_lng, end_lat)
) / 1000
)
Foi verificados se existiam id da viagem duplicados, o que não foi observado.
sum(duplicated(df$ride_id))
Ao analisar a quantidade de dados faltantes por coluna, foi observado 1184673 valores ausentes na variável estação de origem e 1243305 na estação de destino.
df |> is.na() |> colSums()
As variáveis categóricas estavam carregadas como strings, sendo então transformadas em fatores:
df <- df |> mutate(across(c(rideable_type, member_casual, day_start), as.factor))
As bicicletas elétricas podem ser deixadas em qualquer local, sem a necessidade de uma estação fixa. Nesse contexto, quando as estações de origem ou destino apresentaram valores ausentes (NA) e o tipo de bicicleta é elétrico, esses campos foram substituídos por “Electric - On-Street”, indicando que o trajeto começou ou terminou fora de uma estação formal.
df <- df |>
mutate(
start_station_name = if_else(is.na(start_station_name) &
rideable_type == "electric_bike",
"Electric - On-Street", start_station_name),
end_station_name = if_else(is.na(end_station_name) &
rideable_type == "electric_bike",
"Electric - On-Street", end_station_name)
)
As viagens com duração inferior a 1 minuto e superior a 24 horas (1440 minutos), são consideradas inconsistências nos dado. Por esse motivo, esses registros são removidos da base de dados. Além disso, são mantidas apenas as observações em que as estações de origem e destino estão devidamente preenchidas.
Assim, aplica-se o seguinte filtro aos dados:
df <- df |>
filter(journey_duration_min > 1 & journey_duration_min < 1440) |>
filter(!is.na(start_station_name) & !is.na(end_station_name))
O branco de dados final possui 5399843 linhas e 18 colunas.
Como esta análise foi realizada em português, optou-se por traduzir
as variáveis do banco de dados utilizando a função
mutate(). Além disso, por meio do argumento
levels, foi possível ordenar a variável
mes de acordo com a sequência cronológica
dos meses.
df <- df |>
mutate(
rideable_type = case_when(
rideable_type == "classic_bike" ~ "Clássica",
rideable_type == "electric_bike" ~ "Elétrica",
TRUE ~ rideable_type
),
member_casual = case_when(
member_casual == "casual" ~ "Casual",
member_casual == "member" ~ "Membro Anual",
TRUE ~ member_casual
),
mes = case_when(
mes == "01" ~ "Janeiro",
mes == "02" ~ "Fevereiro",
mes == "03" ~ "Março",
mes == "04" ~ "Abril",
mes == "05" ~ "Maio",
mes == "06" ~ "Junho",
mes == "07" ~ "Julho",
mes == "08" ~ "Agosto",
mes == "09" ~ "Setembro",
mes == "10" ~ "Outubro",
mes == "11" ~ "Novembro",
mes == "12" ~ "Dezembro",
TRUE ~ mes
),
mes = factor(
mes,
levels = c(
"Janeiro",
"Fevereiro",
"Março",
"Abril",
"Maio",
"Junho",
"Julho",
"Agosto",
"Setembro",
"Outubro",
"Novembro",
"Dezembro"
)
)
)
A versão final da base de dados, após as etapas de limpeza, tratamento e tradução, está disponível em: Cyclistic Bike Share - Jan to Dec 2025 .
Os nomes originais das variáveis foram mantidos, sendo alterados apenas no momento da visualização.
A primeira visualização criada foi uma tabela com a frequência observada e a frequência relativa da distribuição dos tipos de assinatura dos clientes. Para isso, os dados foram agrupados com base na variável de interesse, realizando-se a contagem das observações e criando-se uma nova coluna contendo a proporção de cada categoria.
Com base nessa tabela, foi construído um gráfico de barras utilizando
a frequência relativa. Em seguida, a proporção foi adicionada como
rótulo em cada categoria. O eixo y foi ajustado para
variar de 0 a 100, evitando interpretações equivocadas dos resultados.
Além disso, foi aplicado um tema à visualização, as legendas foram
ampliadas para facilitar a leitura e foram adicionados títulos ao
gráfico e aos eixos x e y. Por fim, os
resultados foram salvos em uma pasta utilizando a função
ggsave().
t1 <- df |>
select(member_casual) |>
group_by(member_casual) |>
summarise(N = n(), .groups = "drop") |>
mutate(perc = round(N / sum(N) * 100, 2)) ; t1
xtable(t1)
g1 <- ggplot(t1, aes(x = member_casual, y = perc)) +
geom_col(fill = paleta_pessoal(tipo = "categorica", 1)) +
geom_text(
aes(label = paste0(perc, "%")),
position = position_dodge(width = 0.9),
vjust = -0.3,
size = 6
) +
ylim(c(0, 100)) + theme_bw() +
theme(
axis.text.x = element_text(size = 16),
axis.text.y = element_text(size = 14),
axis.title = element_text(size = 18),
plot.title = element_text(size = 22, hjust = 0.5)
) +
labs(title = "Proporção dos tipos de assinaturas", x = "Tipos de assinaturas",
y = "Percentual (%)") ; g1
ggsave("Resultados/plot1.png", g1, width = 8, height = 6 ,dpi = 600)
Nesta etapa foi criada uma nova visualização comparando o tipo de assinatura dos clientes com o tipo de bicicleta utilizada. Para isso, os dados foram agrupados considerando simultaneamente as duas variáveis, permitindo calcular a frequência observada e a frequência relativa dentro de cada tipo de assinatura.
No gráfico, as barras foram diferenciadas por meio do argumento
fill = rideable_type, que altera as cores de acordo com o
tipo de bicicleta. Além disso, o parâmetro
position = "dodge" em geom_col() foi utilizado
para posicionar as barras lado a lado, possibilitando uma comparação
direta entre os tipos de bicicleta dentro de cada categoria de
assinatura.
t2 <- df |>
select(member_casual, rideable_type) |>
group_by(member_casual, rideable_type) |>
summarise(N = n(), .groups = "drop_last") |>
mutate(perc = round(N / sum(N) * 100, 2)) ; t2
xtable(t2)
g2 <- ggplot(t2, aes(x = member_casual, y = perc, fill = rideable_type)) +
geom_col(position = "dodge") +
geom_text(
aes(label = paste0(perc, "%")),
position = position_dodge(width = 0.9),
vjust = -0.3,
size = 6
) +
ylim(c(0, 100)) +
scale_fill_manual(values = paleta_pessoal("comparacao"), name = "Tipos de Bicicleta") + theme_bw() +
theme(
axis.text.x = element_text(size = 16),
axis.text.y = element_text(size = 14),
axis.title = element_text(size = 18),
legend.title = element_text(size = 16),
legend.text = element_text(size = 14),
plot.title = element_text(size = 22, hjust = 0.5)
) +
labs(title = "Proporção dos tipos de bicicletas por tipos de assinaturas",
x = "Tipos de assinaturas", y = "Percentual (%)") ; g2
ggsave("Resultados/plot2.png", g2, width = 12, height = 8 ,dpi = 600)
Em seguida foi analisada a variável contínua duração da
jornada em minutos para cada tipo de
assinatura. Inicialmente, foi construída uma tabela com algumas
medidas descritivas da distribuição, como média, mediana, desvio padrão,
valores mínimo e máximo e quartis. Embora a função
summarise() permita obter diversas medidas descritivas,
foram selecionadas apenas aquelas consideradas mais relevantes para a
análise.
Para a visualização da distribuição dos dados, foram construídos
histogramas da duração das viagens. Utilizou-se a função
facet_wrap(~ member_casual), que separa as visualizações de
acordo com o tipo de assinatura, permitindo comparar os padrões de
distribuição entre as categorias. Além disso, a escala do eixo y
**foi ajustada por meio da função
scale_y_continuous(), com o objetivo de melhorar a
legibilidade dos valores apresentados no gráfico.
t5 <- df |>
group_by(member_casual) |>
summarise(
Média = mean(journey_duration_min, na.rm = TRUE),
Mediana = median(journey_duration_min, na.rm = TRUE),
DP = sd(journey_duration_min, na.rm = TRUE),
Mín = min(journey_duration_min, na.rm = TRUE),
Máx = max(journey_duration_min, na.rm = TRUE),
Q1 = quantile(journey_duration_min, 0.25, na.rm = TRUE),
Q3 = quantile(journey_duration_min, 0.75, na.rm = TRUE),
Amplitude = Máx - Mín,
.groups = "drop"
) ; t5
xtable(t5)
g5 <- ggplot(df, aes(x = journey_duration_min, fill = member_casual)) +
geom_histogram(bins = 10, color = "black") +
scale_fill_manual(values = paleta_pessoal("comparacao"), name = "Tipos de assinaturas") +
scale_y_continuous(
limits = c(0, 4000000),
breaks = c(0, 1000000, 2000000, 3000000, 4000000),
labels = label_number(scale_cut = cut_short_scale())
) +
facet_wrap( ~ member_casual) +
theme_bw() +
theme(
strip.background = element_rect(fill = "white", color = "black"),
strip.text = element_text(color = "black", size = 16),
axis.text.x = element_text(size = 14),
axis.text.y = element_text(size = 14),
axis.title = element_text(size = 18),
legend.title = element_text(size = 16),
legend.text = element_text(size = 14),
plot.title = element_text(size = 22, hjust = 0.5)
) +
labs(title = "Histograma da duração das viagens por tipos de assinaturas",
x = "Duração da viagem (minutos)", y = "Quantidade de viagens") ; g5
ggsave("Resultados/plot5.png", g5, width = 14, height = 6 ,dpi = 600)
Para analisar a variável duração média da jornada em minutos para cada tipo de assinatura, também foram construídas tabelas com as medidas descritivas, agrupando os dados por tipo de bicicleta, dias da semana e mês.
Para a visualização da duração média da jornada (em
minutos) para cada tipo de assinatura, considerando os
dados agrupados por tipo de bicicleta, foi utilizado um
gráfico de barras que permite uma comparação clara entre as categorias.
No gráfico, os valores médios foram adicionados diretamente sobre as
barras com a função geom_text() e as barras de erro
adicionando a camada geom_errorbar() . O uso do parâmetro
position = "dodge" em geom_col() possibilitou
o posicionamento das barras lado a lado, permitindo uma comparação mais
direta entre os diferentes tipos de bicicleta dentro de cada categoria
de assinatura.
t6 <- df |>
group_by(rideable_type, member_casual) |>
summarise(
Média = mean(journey_duration_min, na.rm = TRUE),
Mediana = median(journey_duration_min, na.rm = TRUE),
DP = sd(journey_duration_min, na.rm = TRUE),
Mín = min(journey_duration_min, na.rm = TRUE),
Máx = max(journey_duration_min, na.rm = TRUE),
Q1 = quantile(journey_duration_min, 0.25, na.rm = TRUE),
Q3 = quantile(journey_duration_min, 0.75, na.rm = TRUE),
Amplitude = Máx - Mín,
.groups = "drop"
) ; t6
xtable(t6)
g6 <- ggplot(t6, aes(x = rideable_type, y = Média, fill = member_casual)) +
geom_col(position = position_dodge(width = 0.9)) +
geom_errorbar(
aes(ymin = Média - DP, ymax = Média + DP),
position = position_dodge(width = 0.9),
width = 0.2
) +
geom_text(
aes(label = round(Média, 1)),
position = position_dodge(width = 0.9),
vjust = -0.3,
size = 6
) +
scale_fill_manual(values = paleta_pessoal("comparacao"), name = "Tipos de assinaturas") +
theme_bw() +
theme(
axis.text.x = element_text(size = 16),
axis.text.y = element_text(size = 14),
axis.title = element_text(size = 20),
legend.title = element_text(size = 18),
legend.text = element_text(size = 16),
plot.title = element_text(size = 22, hjust = 0.5)
) +
labs(
title = "Duração média das viagens por tipo de bicicleta",
x = "Tipo de bicicleta",
y = "Duração média (minutos)"
) ; g6
ggsave("Resultados/plot6.png", g6, width = 12, height = 8 ,dpi = 600)
Para a visualização da duração média da jornada (em
minutos) por tipo de assinatura, considerando os dados
agrupados por dia da semana e mês, foi
utilizado um gráfico de linhas geom_line(), que permite
observar a duração média da jornada ao longo do tempo, os valores médios
foram adicionados diretamente sobre as linhas por meio da função
geom_text(). Além disso a escala dos valores do eixo
y, foram alterados para uma escala de 0 a 30 minutos,
contribuindo para uma representação mais adequada e evitando distorções
visuais na análise dos resultados.
g7 <- ggplot(t7, aes(x = day_start, y = Média, color = member_casual, group = member_casual)) +
geom_line(size = 1.2) +
geom_point(size = 3) +
geom_text(
aes(label = round(Média, 1)),
vjust = -0.5,
size = 7.5
) +
scale_y_continuous(
limits = c(0, 30),
breaks = seq(0, 30, 5)
) +
scale_color_manual(values = paleta_pessoal("comparacao"), name = "Tipos de assinaturas") +
theme_bw() +
theme(
axis.text.x = element_text(size = 18),
axis.text.y = element_text(size = 16),
axis.title = element_text(size = 18),
legend.title = element_text(size = 18),
legend.text = element_text(size = 16),
plot.title = element_text(size = 22, hjust = 0.5)
) +
labs(
title = "Duração média das viagens por dia da semana",
x = "Dia da semana",
y = "Duração média (minutos)"
) ; g7
ggsave("Resultados/plot7.png", g7, width = 15, height = 8 ,dpi = 800)
As demais visualizações foram elaboradas utilizando as mesmas técnicas apresentadas anteriormente. Na seção de Resultados e discussão, são exibidos todos os gráficos produzidos ao longo da análise.
A Tabela 1 e o Gráfico 1 apresentam a distribuição dos tipos de assinaturas, aproximadamente 64% dos clientes são assinantes anuais.
Tabela 1: Distribuição da proporção dos tipos de assinaturas.
\[ \begin{array}{ccc} \hline \hline \text{Tipos de assinaturas} & \text{N} & \text{%} \\ \hline \hline \text{Casual} & 1915681 & 35.48 \\ \text{Membro Anual} & 3484162 & 64.52 \\ \hline \hline \end{array} \]
Gráfico 1:
Na Tabela 2 e no Gráfico 2, observa-se a distribuição dos tipos de assinaturas, por tipos de bicicletas alugadas. Tanto clientes casuais quanto anuais optam majoritariamente por utilizar bicicletas elétricas, representando aproximadamente 65% e 63%, respectivamente.
Tabela 2: Distribuição da proporção dos tipos de assinaturas por tipo de bicicletas alugadas.
\[ \begin{array}{ccccc} \hline \hline \text{Tipos de Assinaturas} & \text{Tipo de Bicicleta} & \text{N} & \text{%} \\ \hline\hline \text{Casual} & \text{Clássica} & 667868 & 34.86 \\ & \text{Elétrica} & 1247813 & 65.14 \\\hline \text{Membro Anual} & \text{Clássica} & 1274412 & 36.58 \\ & \text{Elétrica} & 2209750 & 63.42 \\ \hline\hline \end{array} \]
Gráfico 2:
A distribuição dos tipos de assinatura ao longo dos dias da semana indica que, de forma geral, as bicicletas são predominantemente utilizadas por membros anuais. Observa-se ainda que, entre segunda-feira a quarta-feira, há um aumento na participação de usuários anuais e diminuição na utilização do serviço por membros casuais. Em contrapartida, nos finais de semana ocorre o movimento inverso, uma diminuição relativa na utilização do serviço por membros anuais e um aumento na utilização por usuários casuais. Os resultados estão apresentados na Tabela 3 e no Gráfico 3.
Tabela 3: Distribuição dos tipos de assinaturas por dia da semana.
\[ \begin{array}{cccc} \hline \hline \text{Dias da Semana} & \text{Tipos de assinaturas} & \text{N} & \text{%} \\ \hline\hline \text{domingo} & \text{Casual} & 316929 & 45.83 \\ & \text{Membro Anual} & 374532 & 54.17 \\ \hline \text{segunda-feira} & \text{Casual} & 219224 & 30.77 \\ & \text{Membro Anual} & 493317 & 69.23 \\ \hline \text{terça-feira} & \text{Casual} & 216920 & 28.19 \\ & \text{Membro Anual} & 552527 & 71.81 \\ \hline \text{quarta-feira} & \text{Casual} & 212729 & 28.25 \\ & \text{Membro Anual} & 540206 & 71.75 \\ \hline \text{quinta-feira} & \text{Casual} & 247875 & 30.49 \\ & \text{Membro Anual} & 565172 & 69.51 \\ \hline \text{sexta-feira} & \text{Casual} & 306453 & 37.15 \\ & \text{Membro Anual} & 518540 & 62.85 \\ \hline \text{sábado} & \text{Casual} & 395551 & 47.35 \\ & \text{Membro Anual} & 439868 & 52.65 \\ \hline\hline \end{array} \]
Gráfico 3:
A Tabela 4 e o Gráfico 4 apresentam a distribuição dos tipos de assinaturas ao longo dos meses de utilização do serviço. De maneira geral, observa-se que o uso das bicicletas é predominantemente realizado por membros anuais durante todo o ano. No entanto, entre os meses de Maio a Agosto verifica-se um aumento na participação de usuários casuais e a diminuição de usuários anuais, nos demais meses ocorre o aumento do uso por usuários anuais e diminuição de usuários casuais período em que essa categoria atinge suas maiores proporções de utilização do serviço.
Tabela 4: Distribuição dos tipos de assinaturas por mês
\[ \begin{array}{cccc} \hline \hline \text{Mês} & \text{Tipos de assinaturas} & \text{N} & \text{%} \\ \hline \hline \text{Janeiro} & \text{Casual} & 23434 & 17.26 \\ & \text{Membro Anual} & 112340 & 82.74 \\ \hline \text{Fevereiro} & \text{Casual} & 27004 & 18.11 \\ & \text{Membro Anual} & 122084 & 81.89 \\ \hline \text{Março} & \text{Casual} & 82862 & 28.44 \\ & \text{Membro Anual} & 208470 & 71.56 \\ \hline \text{Abril} & \text{Casual} & 105241 & 28.98 \\ & \text{Membro Anual} & 257908 & 71.02 \\ \hline \text{Maio} & \text{Casual} & 175551 & 35.86 \\ & \text{Membro Anual} & 313971 & 64.14 \\ \hline \text{Junho} & \text{Casual} & 278733 & 42.34 \\ & \text{Membro Anual} & 379531 & 57.66 \\ \hline \text{Julho} & \text{Casual} & 308422 & 41.75 \\ & \text{Membro Anual} & 430381 & 58.25 \\ \hline \text{Agosto} & \text{Casual} & 323398 & 42.19 \\ & \text{Membro Anual} & 443124 & 57.81 \\ \hline \text{Setembro} & \text{Casual} & 254875 & 36.63 \\ & \text{Membro Anual} & 440957 & 63.37 \\ \hline \text{Outubro} & \text{Casual} & 214349 & 34.11 \\ & \text{Membro Anual} & 414062 & 65.89 \\ \hline \text{Novembro} & \text{Casual} & 94736 & 27.33 \\ & \text{Membro Anual} & 251964 & 72.67 \\ \hline \text{Dezembro} & \text{Casual} & 27076 & 19.84 \\ & \text{Membro Anual} & 109370 & 80.16 \\ \hline \hline \end{array} \]
Gráfico 4:
As medidas descritivas acerca da duração da viagem (em minutos) por tipos de assinatura estão descritos na Tabela 5 e no Gráfico 5. Em geral, observa-se que os usuários casuais realizam viagens mais longas, em média 19,87 minutos e mediana 11,89 minutos, enquanto que os membros anuais apresentam média de 12,18 minutos e mediana de 8,74 minutos. Além disso, ambos os tipos de usuários apresentam desvio padrão elevado, demonstrando uma alta variabilidade na duração das viagens. Destaca-se também valores máximos e mínimos extremos, além de uma distribuição assimétrica à direita evidenciada pelo gráfico de histograma.
Tabela 5: Medidas descritivas da duração das viagens por tipos de assinaturas.
\[ \begin{array}{c c c c c c c c c}\hline\hline \text{Tipos de Assinaturas} & \text{Média} & \text{Mediana} & \text{DP} & \text{Mín} & \text{Máx} & \text{Q1} & \text{Q3} & \text{Amplitude} \\ \hline\hline \text{Casual} & 19.87 & 11.89 & 39.02 & 1.00 & 1439.98 & 6.82 & 21.68 & 1438.98 \\ \text{Membro Anual} & 12.18 & 8.74 & 20.38 & 1.00 & 1439.83 & 5.21 & 14.67 & 1438.83 \\ \hline \end{array} \]
Gráfico 5:
A Tabela 6 e o Gráfico 6 apresentam as medidas descritivas da duração das viagens (em minutos) segundo o tipo de bicicleta e o tipo de assinatura. De modo geral, observa-se que as bicicletas clássicas possui uma duração média de viagem maior independentemente do tipo de usuário. Entre os usuários casuais, a média de duração das viagens com bicicletas clássicas 29,15 minutos, que é superior à observada para bicicletas elétricas 14,90 minutos. Esse mesmo padrão se repete entre os membros anuais, com médias de 13,61 minutos para bicicletas clássicas e 11,35 minutos para elétricas. Além disso, as bicicletas clássicas apresentam maior variabilidade na duração das viagens, especialmente entre os usuários casuais com desvio padrão 61,37. Em contraste a esse resultado, as bicicletas elétricas apresentam menor dispersão.
Tabela 6:
\[ \begin{array}{cccccccccc} \hline \hline \text{Tipo de bicicleta} & \text{Tipos de assinaturas} & \text{Média} & \text{Mediana} & \text{DP} & \text{Mín} & \text{Máx} & \text{Q1} & \text{Q3} & \text{Amplitude} \\ \hline\hline \text{Clássica} & \text{Casual} & 29.15 & 16.28 & 61.37 & 1.00 & 1439.98 & 9.04 & 30.82 & 1438.97 \\ & \text{Membro Anual} & 13.61 & 9.21 & 28.98 & 1.00 & 1439.83 & 5.37 & 16.29 & 1438.83 \\ \hline \text{Elétrica} & \text{Casual} & 14.90 & 10.24 & 15.84 & 1.00 & 479.97 & 6.09 & 17.76 & 478.97 \\ & \text{Membro Anual} & 11.35 & 8.50 & 12.99 & 1.00 & 481.45 & 5.13 & 13.91 & 480.45 \\ \hline \end{array} \]
Gráfico 6:
Na Tabela 7 e no Gráfico 7 estão descritos as medidas descritivas da duração média das viagens (em minutos) ao longo dos dias da semana. De maneira geral, observa-se que a média de duração das viagens para membros anuais é menor e mais constante. Por outro lado, os usuários casuais apresentam maior variação no tempo médio de uso, com redução da duração das viagens entre segunda-feira e quinta-feira, seguida de aumento ao longo do final de semana, período em que se observam os maiores tempos médios de utilização do serviço.
Tabela 7:
\[ \begin{array}{c c c c c c c c c c} \hline \hline \text{Dia da semana} & \text{Tipos de assinaturas} & \text{Média} & \text{Mediana} & \text{DP} & \text{Mín} & \text{Máx} & \text{Q1} & \text{Q3} & \text{Amplitude} \\ \hline\hline \text{Domingo} & \text{Casual} & 23.06 & 13.86 & 43.02 & 1.00 & 1439.98 & 7.75 & 25.56 & 1438.98 \\ & \text{Membro Anual} & 13.44 & 9.25 & 24.04 & 1.00 & 1419.62 & 5.36 & 16.10 & 1418.62 \\ \hline \text{Segunda-feira} & \text{Casual} & 19.68 & 11.42 & 37.52 & 1.00 & 1435.85 & 6.49 & 21.42 & 1434.85 \\ & \text{Membro Anual} & 11.76 & 8.40 & 19.00 & 1.00 & 1427.13 & 5.04 & 14.08 & 1426.13 \\ \hline \text{Terça-feira} & \text{Casual} & 17.60 & 10.52 & 36.84 & 1.00 & 1436.85 & 6.24 & 18.58 & 1435.84 \\ & \text{Membro Anual} & 11.84 & 8.63 & 20.67 & 1.00 & 1418.24 & 5.19 & 14.29 & 1417.24 \\ \hline \text{Quarta-feira} & \text{Casual} & 16.32 & 10.18 & 32.12 & 1.00 & 1433.30 & 6.08 & 17.73 & 1432.30 \\ & \text{Membro Anual} & 11.62 & 8.56 & 18.69 & 1.00 & 1438.66 & 5.14 & 14.16 & 1437.66 \\ \hline \text{Quinta-feira} & \text{Casual} & 17.42 & 10.58 & 35.84 & 1.00 & 1439.27 & 6.28 & 18.65 & 1438.27 \\ & \text{Membro Anual} & 11.72 & 8.62 & 17.84 & 1.00 & 1428.91 & 5.19 & 14.30 & 1427.91 \\ \hline \text{Sexta-feira} & \text{Casual} & 19.59 & 11.82 & 39.22 & 1.00 & 1439.76 & 6.80 & 21.58 & 1438.76 \\ & \text{Membro Anual} & 12.14 & 8.65 & 21.48 & 1.00 & 1439.83 & 5.17 & 14.50 & 1438.83 \\ \hline \text{Sábado} & \text{Casual} & 22.31 & 13.77 & 42.27 & 1.00 & 1434.94 & 7.80 & 24.86 & 1433.94 \\ & \text{Membro Anual} & 13.29 & 9.43 & 21.71 & 1.00 & 1429.20 & 5.51 & 16.12 & 1428.20 \\ \hline\hline \end{array} \]
Gráfico 7:
A Tabela 8 e o Gráfico 8 apresentam as medidas descritivas da duração média das viagens (em minutos) ao longo dos meses. De modo geral, observa-se que, para os membros anuais, o tempo médio de uso permanece relativamente estável, variando entre aproximadamente 10 e 11 minutos ao longo de todo o ano. Enquanto que, para os usuários casuais apresentam maior variação na duração média das viagens, com valores entre cerca de 12 e 21 minutos. Nota-se um crescimento progressivo de março a agosto, seguido por uma redução gradual de setembro a fevereiro. Esse comportamento indica uma sazonalidade mais acentuada entre os usuários casuais, com maior tempo de utilização nos meses intermediários do ano.
Tabela 8:
\[ \begin{array}{c c c c c c c c c} \hline \hline \text{Mês} & \text{Tipos de assinaturas} & \text{Média} & \text{Mediana} & \text{DP} & \text{Mín} & \text{Máx} & \text{Q1} & \text{Q3} \\ \hline\hline \text{Janeiro} & \text{Casual} & 12.08 & 7.15 & 34.92 & 1.00 & 1409.99 & 4.59 & 11.80 \\ & \text{Membro Anual} & 9.98 & 6.88 & 18.91 & 1.00 & 1394.47 & 4.31 & 11.34 \\ \hline \text{Fevereiro} & \text{Casual} & 12.34 & 7.38 & 34.12 & 1.00 & 1433.74 & 4.71 & 12.30 \\ & \text{Membro Anual} & 9.96 & 7.00 & 16.52 & 1.00 & 1277.12 & 4.35 & 11.62 \\ \hline \text{Março} & \text{Casual} & 17.86 & 10.57 & 40.89 & 1.00 & 1435.21 & 6.09 & 19.64 \\ & \text{Membro Anual} & 11.13 & 7.89 & 16.80 & 1.00 & 1414.13 & 4.74 & 13.27 \\ \hline \text{Abril} & \text{Casual} & 18.58 & 10.71 & 38.89 & 1.00 & 1434.94 & 6.14 & 20.12 \\ & \text{Membro Anual} & 11.27 & 8.08 & 16.82 & 1.00 & 1324.19 & 4.81 & 13.69 \\ \hline \text{Maio} & \text{Casual} & 20.73 & 12.26 & 40.40 & 1.00 & 1421.17 & 6.94 & 22.69 \\ & \text{Membro Anual} & 11.89 & 8.72 & 16.23 & 1.00 & 1399.50 & 5.13 & 14.66 \\ \hline \text{Junho} & \text{Casual} & 21.90 & 13.38 & 42.75 & 1.00 & 1428.44 & 7.78 & 23.83 \\ & \text{Membro Anual} & 12.84 & 9.58 & 17.24 & 1.00 & 1383.42 & 5.73 & 15.80 \\ \hline \text{Julho} & \text{Casual} & 21.41 & 12.98 & 40.23 & 1.00 & 1439.76 & 7.51 & 23.41 \\ & \text{Membro Anual} & 13.15 & 9.56 & 22.19 & 1.00 & 1429.20 & 5.71 & 15.87 \\ \hline \text{Agosto} & \text{Casual} & 21.68 & 13.44 & 37.43 & 1.00 & 1435.85 & 7.72 & 24.18 \\ & \text{Membro Anual} & 13.08 & 9.66 & 16.39 & 1.00 & 1384.97 & 5.76 & 16.18 \\ \hline \text{Setembro} & \text{Casual} & 19.56 & 11.96 & 35.78 & 1.00 & 1433.30 & 6.97 & 21.50 \\ & \text{Membro Anual} & 12.60 & 9.29 & 16.98 & 1.00 & 1438.66 & 5.56 & 15.55 \\ \hline \text{Outubro} & \text{Casual} & 18.10 & 10.71 & 37.92 & 1.00 & 1439.98 & 6.24 & 19.48 \\ & \text{Membro Anual} & 12.11 & 8.57 & 23.59 & 1.00 & 1393.97 & 5.13 & 14.39 \\ \hline \text{Novembro} & \text{Casual} & 15.16 & 8.95 & 37.32 & 1.00 & 1439.27 & 5.40 & 15.96 \\ & \text{Membro Anual} & 11.70 & 7.92 & 29.90 & 1.00 & 1439.83 & 4.82 & 13.25 \\ \hline \text{Dezembro} & \text{Casual} & 12.82 & 7.67 & 35.22 & 1.00 & 1431.30 & 4.81 & 13.08 \\ & \text{Membro Anual} & 11.68 & 7.49 & 34.49 & 1.00 & 1418.24 & 4.66 & 12.36 \\ \hline\hline \end{array} \]
Gráfico 8:
Com base na análise estatística realizada, conclui-se que existem diferenças no comportamento de uso entre usuários casuais e membros anuais do serviço. De modo geral, usuários casuais realizam viagens mais longas, com maior variabilidade e forte influência de fatores sazonais, como meses mais quentes, meses de férias e finais de semana. Em contraste, membros anuais apresentam um padrão de uso mais estável, com viagens mais curtas, geralmente associadas a trabalho e distribuídas de forma mais homogênea ao longo do tempo.
Esses resultados indicam que usuários casuais tendem a utilizar o serviço de forma mais recreativa, enquanto membros anuais fazem uso mais frequente e cotidiano. Além disso, observou-se que as bicicletas elétricas são as preferidas entre os usuários e estão associadas a viagens mais curtas e consistentes, o que pode indicar um perfil de uso mais utilitário.
Diante disso, recomenda-se a adoção de estratégias voltadas à marketing e a conversão de usuários casuais em membros anuais, destacam-se as principais estratégias: (i) criação de pacotes promocionais de assinatura anual direcionados a períodos de maior uso dos usuários casuais, como férias e finais de semana; (ii) oferta de incentivos específicos para usuários de bicicletas elétricas, que já apresentam comportamento mais similar ao padrão dos membros anuais; e (iii) a divulgação de promoções de planos anuais nas estações mais utilizadas para aluguel das bicicletas e períodos de maior demanda, aproveitando os locais com maior circulação de usuários casuais para estimular a adesão.
Com isso, conclui-se que as evidências indicam que ações de marketing orientadas pelo perfil e pelo comportamento de uso dos clientes podem representar um importante diferencial para aumentar a taxa de conversão de usuários casuais em membros anuais, contribuindo para maior previsibilidade de receita e fortalecimento da fidelização dos usuários.
[1] BUSSAB, Wilton de Oliveira; MORETTIN, Pedro Alberto. Estatística básica. 10. ed. rev. e ampl. São Paulo: Saraiva, 2017.
[2] WICKHAM, Hadley; ÇETINKAYA-RUNDEL, Mine; GROLEMUND, Garrett. R para Ciência de dados (2ª edição). Disponível em: Acessar livro online. Acesso em: 10 jan. 2026.
[3] MORETTIN, Pedro Alberto; SINGER, Júlio da Motta. Estatística e ciência de dados. 2. ed. Rio de Janeiro: LTC, 2025.
Todos os arquivos estão disponíveis na pasta do drive .
Caso tenha sugestões ou correções, entre em contato pelo e-mail palloma.alves.est@gmail.com.
Nota: Conheça meu site clicando neste link .