Analise Descritiva da Comunidade de Estatística e Ciência de dados do Prof.Thiago Marques - 2019 a 2023 - CECD - Mestrado Cefet Engenharia de produção
Analise Descritiva da Comunidade de Estatística e Ciência de dados do Prof.Thiago Marques - 2019 a 2023 - CECD
Carregando os pacotes
Carregando o banco de dados
Renomeando variáveis
Selecionando as variáveis e filtrando os produtos que serão analisados
Verificando dados faltantes
::gg_miss_var(dados_xl_filt) naniar
Vendo a estrutura dos dados e os resumindo
#summarytools::view(dfSummary(dados_xl_filt))
summary(dados_xl_filt)
## nome_prod transacao tipo_moeda preco_produto
## Length:1311 Length:1311 Length:1311 Min. : 0.64
## Class :character Class :character Class :character 1st Qu.: 297.00
## Mode :character Mode :character Mode :character Median : 398.80
## Mean : 483.51
## 3rd Qu.: 636.00
## Max. :1997.00
##
## preco_oferta preco_original numero_parcela dt_venda
## Min. : 0.0 Min. : 2.62 Length:1311 Length:1311
## 1st Qu.: 257.0 1st Qu.: 171.24 Class :character Class :character
## Median : 343.2 Median : 212.25 Mode :character Mode :character
## Mean : 426.2 Mean : 375.88
## 3rd Qu.: 569.5 3rd Qu.: 547.29
## Max. :1798.3 Max. :1024.37
## NA's :1293
## dt_confirm nome_aluno email pais
## Length:1311 Length:1311 Length:1311 Length:1311
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## codigo_produto codigo_oferta tipo_pagamento tipo_pagamento_oferta
## Length:1311 Length:1311 Length:1311 Length:1311
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## cupom
## Length:1311
## Class :character
## Mode :character
##
##
##
##
Tratando os dados
Agrupando os dados de qtd de alunos em transações únicas por ano, mês e dia
Gráfico de linhas diário da Quantidade de alunos de 2019 a 2023 - CECD
=
grafico_linhas ggplot(dados_xl_filt_data, aes(x = dt_confirm_date, y = total_alunos)) +
geom_line(col = "blue") +
stat_peaks(
geom = "point",
span = 15,
color = "steelblue3",
size = 2
+
) stat_peaks(
geom = "label",
span = 15,
color = "steelblue3",
angle = 0,
hjust = -0.1,
x.label.fmt = "%Y-%m-%d"
+
) scale_x_date(date_labels = "%Y-%m-%d") +
ylab("Quantidade de Alunos") +
xlab("Data da confirmação da inscrição") +
ggtitle("Quantidade de alunos por dia de 2019 a 2023 - CECD")+
scale_fill_brewer(palette="BrBG")
grafico_linhas
#ggplotly(grafico_linhas)
Tabela da Quantidade de alunos por ano
Gráfico de colunas da Quantidade de alunos por ano
Estatísticas Descritivas mensais da quantidade de alunos
Agrupando os dados de receita em transações únicas por ano, mês e dia
Gráfico de linhas da Receita total por dia em R$ de 2019 a 2023 - CECD
=
grafico_linhas ggplot(dados_xl_filt_data_receita, aes(x = dt_confirm_date, y = total_receita)) +
geom_line(col = "blue") +
scale_y_continuous(labels = scales::dollar_format(prefix="R$",big.mark = "."))+
stat_peaks(
geom = "point",
span = 15,
color = "steelblue3",
size = 2
+
) stat_peaks(
geom = "label",
span = 15,
color = "steelblue3",
angle = 0,
hjust = -0.1,
x.label.fmt = "%Y-%m-%d"
+
) scale_x_date(date_labels = "%Y-%m-%d") +
ylab("Receita total em R$") +
xlab("Data da confirmação da inscrição") +
ggtitle("Receita total diária em R$ de 2019 a 2023 - CECD")+
scale_fill_brewer(palette="BrBG")
grafico_linhas
ggplotly(grafico_linhas)
Tabela da Quantidade de receita por transações únicas no ano
Gráfico de colunas da Quantidade de receita por transações únicas no ano
= dados_xl_filt_data_receita %>% group_by(dt_confirm_ano) %>% summarise(total_receita = sum(total_receita))
dados_xl_filt_data_receita_ano
$dt_confirm_ano_fator = as.factor(dados_xl_filt_data_receita_ano$dt_confirm_ano)
dados_xl_filt_data_receita_ano
ggplot(dados_xl_filt_data_receita_ano, aes(x = dt_confirm_ano_fator, y = total_receita)) +
geom_bar(aes(fill = dt_confirm_ano_fator),stat = "identity", show.legend = F) +
xlab("Ano") +
ylab("Quantidade de Receita (R$)") +
theme(axis.text.y = element_blank())+
#scale_y_continuous(labels = scales::dollar_format(prefix="R$",big.mark = "."))+
ggtitle("Quantidade de receita por transações únicas e ano da CECD - 2019 a 2023") +
geom_text(aes(label = prettyNum(paste("R$",round(total_receita, 2)),big.mark = ".")), vjust=-0.2, color="black") +
scale_fill_brewer(palette="BrBG")
Estatísticas Descritivas mensais da receita por transações únicas
Gráfico de colunas da Quantidade de alunos por tipo de meios de pagamento
#dados_xl_filt_data_tipo_pagamento = dados_xl_filt %>% distinct(email, .keep_all = TRUE) %>% #group_by(dt_confirm_ano,tipo_pagamento) %>% summarise(total_alunos = n())
#
#dados_xl_filt_data_tipo_pagamento$tipo_pagamento_ord = factor(dados_xl_filt_data_tipo_pagamento$tipo_pagamento, levels #=c("Cartão de Crédito","Boleto Bancário","Pix", "PayPal","Débito Bancário")
#)
#
#ggplot(dados_xl_filt_data_tipo_pagamento, aes(x = tipo_pagamento_ord, y = total_alunos)) +
# geom_bar(aes(fill = tipo_pagamento_ord),stat = "identity", show.legend = F) +
# xlab("Ano") +
# ylab("Quantidade de Alunos") +
# theme(axis.text.y = element_blank())+
# #scale_y_continuous(labels = scales::dollar_format(big.mark = "."))+
# ggtitle("Quantidade de alunos por tipo de meios de pagamento - 2020 a 2023 - CECD") +
# geom_text(aes(label = prettyNum(total_alunos,big.mark = ".")), vjust=-0.1, color="black") +
# facet_grid(~dt_confirm_ano)+
# ggpubr::rotate_x_text() +
# #coord_cartesian(xlim=c(-12,12))+
# #coord_cartesian(ylim=c(-0.5,0.5))+
# #coord_flip()+
# #facet_wrap(~pais)
# scale_fill_brewer(palette="BrBG")
#Plota grafico tipo pagamento por ano
<- dados_xl_filt %>% mutate(ano = as.character(dt_confirm_ano)) %>%
freq group_by(ano, tipo_pagamento) %>%
summarise(n = n()) %>%
mutate(freq = n / sum(n) * 100) %>%
ungroup()
ggplot(freq, aes(x = 1, y = freq, fill = tipo_pagamento, label = round(freq, 1))) +
geom_col() +
geom_text(position = position_stack(vjust = 0.5)) +
ggtitle("Quantidade de alunos por tipo de meios de pagamento - 2019 a 2023 - CECD") +
facet_wrap(~ano)
## Gráfico de colunas da Quantidade de alunos por numero de parcelas
#dados_xl_filt_data_numero_parcela = dados_xl_filt %>% distinct(email, .keep_all = TRUE) %>% #group_by(dt_confirm_ano,numero_parcela) %>% summarise(total_alunos = n())
#
#dados_xl_filt_data_numero_parcela$numero_parcela_ord = factor(dados_xl_filt_data_numero_parcela$numero_parcela, levels = #c("1","12","3","10","6","2","4","5","8","7","11","9"))
#
#
#ggplot(dados_xl_filt_data_numero_parcela, aes(x = numero_parcela_ord, y = total_alunos)) +
# geom_bar(aes(fill = numero_parcela_ord),stat = "identity", show.legend = F) +
# xlab("Número de parcelas") +
# ylab("Quantidade de Alunos") +
# theme(axis.text.y = element_blank())+
# #scale_y_continuous(labels = scales::dollar_format(big.mark = "."))+
# ggtitle("Quantidade de alunos por número de parcelas da CECD - 2020 a 2023") +
# geom_text(aes(label = prettyNum(total_alunos,big.mark = ".")),vjust=-0.2, color="black",size=2.5) +
# facet_grid(~dt_confirm_ano)+
# #facet_wrap(~pais)
# scale_fill_brewer(palette="BrBG")
#Plota grafico Numero parcela por ano
<- dados_xl_filt %>% mutate(ano = as.character(dt_confirm_ano)) %>%
freq mutate(numero_parcela = as.character(numero_parcela)) %>%
group_by(ano, numero_parcela) %>%
summarise(n = n()) %>%
mutate(freq = n / sum(n) * 100) %>%
ungroup()
ggplot(freq, aes(x = 1, y = freq, fill = numero_parcela, label = round(freq, 1))) +
geom_col() +
geom_text(position = position_stack(vjust = 0.5)) +
ggtitle("Quantidade de alunos por número de parcelas - 2019 a 2023 - CECD") +
facet_wrap(~ano)
Gráfico de pizza do tipo de pagamento da oferta por transações realizadas
=prop.table(table(dados_xl_filt$tipo_pagamento_oferta))
df_pizza_porcent<<- as.data.frame(df_pizza_porcent)
df_pizza_porcent df_pizza_porcent
## Var1 Freq
## 1 Apenas à vista 0.39893211
## 2 Assinatura 0.08619375
## 3 Outros 0.05339436
## 4 Parcelamento padrão (até 12×) 0.46147979
<- c('rgb(0,204,204)', 'rgb(102,51,0)')
colors
= plot_ly(df_pizza_porcent,
grafico_pizza_iterativo labels = ~Var1,
values = ~Freq,
marker = list(colors = colors),
type = 'pie') %>%
layout(title = 'Gráfico de pizza do tipo de pagamento da oferta por transações realizadas (%) ')
grafico_pizza_iterativo
Boxplot dos preços das ofertas por quartis - 2019 a 2023
Box-plot da evolução dos Ticket da oferta por Ano
# Gráfico de dispersão do total de alunos vs receita por ano e trimestre
= dados_xl_filt %>% distinct(email, .keep_all = TRUE) %>% group_by(dt_confirm_date,dt_confirm_ano,dt_confirm_mes,dt_confirm_dia) %>% summarise(total_receita = sum(preco_oferta), total_alunos = n(), ticket_medio = total_receita/total_alunos )
dados_xl_filt_data_receita_alunos = dados_xl_filt_data_receita_alunos %>% mutate(
dados_xl_filt_data_receita_alunos Trimestre = case_when(
%in% c(1,2,3) ~ "Primeiro trimestre",
dt_confirm_mes %in% c(4,5,6) ~ "Segundo trimestre",
dt_confirm_mes %in% c(7,8,9) ~ "Terceiro trimestre",
dt_confirm_mes %in% c(10,11,12) ~ "Quarto trimestre"
dt_confirm_mes
)
) $Ano = factor(dados_xl_filt_data_receita_alunos$dt_confirm_ano)
dados_xl_filt_data_receita_alunos
= dados_xl_filt_data_receita_alunos %>% group_by(Ano,Trimestre) %>% summarise(total_receita = sum(total_receita), total_alunos = sum(total_alunos), ticket_medio = total_receita/total_alunos )
dados_xl_filt_data_receita_alunos_trimestre
= ggplot(dados_xl_filt_data_receita_alunos_trimestre, aes(x=total_alunos, y=total_receita) ) +
grafico_dispersao1 geom_point(aes(col=Trimestre,text = paste("Ticket Médio:",prettyNum(paste("R$",round(ticket_medio, 2)),big.mark = ".") ), size =ticket_medio ) ) +
ggtitle("Gráfico de dispersão do total de alunos vs receita por ano e trimestre")+
xlab("Quantidade de alunos") +
ylab("Valor da receita diária em (R$)") +
scale_y_continuous(labels = scales::dollar_format(prefix="R$",big.mark = "."), breaks = seq(5000,80000,by=5000)) +
facet_grid(~Ano)
#labs(colour="Ano") +
#geom_jitter(
# width = .1,
# alpha = .4,
# size = 1,
# color = "brown")
#grafico_boxplot
#grafico_dispersao1
ggplotly(grafico_dispersao1,tooltip = c("x","y","text"))
Gráfico de dispersão do total de alunos vs receita por ano
= dados_xl_filt %>% distinct(email, .keep_all = TRUE) %>% group_by(dt_confirm_date,dt_confirm_ano,dt_confirm_mes,dt_confirm_dia) %>% summarise(total_receita = sum(preco_oferta), total_alunos = n(), ticket_medio = total_receita/total_alunos )
dados_xl_filt_data_receita_alunos
$Ano = factor(dados_xl_filt_data_receita_alunos$dt_confirm_ano)
dados_xl_filt_data_receita_alunos
= ggplot(dados_xl_filt_data_receita_alunos, aes(x=total_alunos, y=total_receita) ) +
grafico_dispersao2 geom_point(aes(col=Ano,text = paste("Ticket Médio:",prettyNum(paste("R$",round(ticket_medio, 2)),big.mark = ".") )) ) +
ggtitle("Gráfico de dispersão do total de alunos vs receita por ano")+
xlab("Quantidade de alunos") +
ylab("Valor da receita diária em (R$)") +
scale_y_continuous(labels = scales::dollar_format(prefix="R$",big.mark = "."), breaks = seq(250,9500,by=1500)) +
facet_grid(~Ano)
#labs(colour="Ano") +
#geom_jitter(
# width = .1,
# alpha = .4,
# size = 1,
# color = "brown")
#grafico_boxplot
#grafico_dispersao2
ggplotly(grafico_dispersao2,tooltip = c("x","y","text"))
Grafo dos quartis dos preços das ofertas por país
Característica dos alunos
# Carregando o banco de dados
= readxl::read_xlsx("Boas vindas - Comunidade De Estatística (respostas) (01022024) .xlsx",
dados_xl_alunos sheet = 2)
Unindo os bancos
names(dados_xl_alunos)[2] = "email"
= inner_join(dados_xl_alunos,dados_xl, by = "email") dados_xl_alunos_join
Renomeando variáveis e as filtrando
names(dados_xl_alunos_join)[4] = c("sexo")
names(dados_xl_alunos_join)[5] = c("faixa_etaria")
names(dados_xl_alunos_join)[6] = c("descoberta_comunidade")
names(dados_xl_alunos_join)[7] = c("estudante_sim_nao")
names(dados_xl_alunos_join)[8] = c("area_formacao")
names(dados_xl_alunos_join)[9] = c("empresa")
names(dados_xl_alunos_join)[10] = c("cargo")
names(dados_xl_alunos_join)[12] = c("atuacao")
names(dados_xl_alunos_join)[13] = c("cluster_formacao")
names(dados_xl_alunos_join)[14] = c("conhecimento_r")
= dados_xl_alunos_join %>% dplyr::select(
dados_xl_alunos_join
sexo,
faixa_etaria,
descoberta_comunidade,
estudante_sim_nao,
area_formacao,
empresa,
cargo,
atuacao,
cluster_formacao,
conhecimento_r )
Verificando dados faltantes
::gg_miss_var(dados_xl_alunos_join) naniar
Gráfico de pizza do sexo dos alunos da CECD
=prop.table(table(dados_xl_alunos_join$sexo))
df_pizza_porcent<<- as.data.frame(df_pizza_porcent)
df_pizza_porcent df_pizza_porcent
## Var1 Freq
## 1 Feminino 0.3180212
## 2 Masculino 0.6819788
<- c('rgb(0,204,204)', 'rgb(102,51,0)')
colors
= plot_ly(df_pizza_porcent,
grafico_pizza_iterativo labels = ~Var1,
values = ~Freq,
marker = list(colors = colors),
type = 'pie') %>%
layout(title = 'Gráfico de pizza do sexo dos alunos da CECD (%) ')
grafico_pizza_iterativo
Gráfico de pizza da faixa etária das alunas da CECD (%)
=prop.table(table(dados_xl_alunos_join$faixa_etaria[dados_xl_alunos_join$sexo == "Feminino"] ))
df_pizza_porcent<<- as.data.frame(df_pizza_porcent)
df_pizza_porcent df_pizza_porcent
## Var1 Freq
## 1 >=50 0.03333333
## 2 18-25 0.04444444
## 3 26-33 0.50000000
## 4 34-41 0.28888889
## 5 42-49 0.13333333
<- c('rgb(0,204,204)', 'rgb(102,51,0)')
colors
= plot_ly(df_pizza_porcent,
grafico_pizza_iterativo_m labels = ~Var1,
values = ~Freq,
marker = list(colors = colors),
type = 'pie') %>%
layout(title = 'Gráfico de pizza da faixa etária das alunas da CECD (%) ')
grafico_pizza_iterativo_m
Gráfico de pizza da faixa etária das alunos da CECD (%)
=prop.table(table(dados_xl_alunos_join$faixa_etaria[dados_xl_alunos_join$sexo == "Masculino"] ))
df_pizza_porcent<<- as.data.frame(df_pizza_porcent)
df_pizza_porcent df_pizza_porcent
## Var1 Freq
## 1 >=50 0.11917098
## 2 18-25 0.06217617
## 3 26-33 0.30051813
## 4 34-41 0.26943005
## 5 42-49 0.24870466
<- c('rgb(0,204,204)', 'rgb(102,51,0)')
colors
= plot_ly(df_pizza_porcent,
grafico_pizza_iterativo_h labels = ~Var1,
values = ~Freq,
marker = list(colors = colors),
type = 'pie') %>%
layout(title = 'Gráfico de pizza da faixa etária das alunos da CECD (%) ')
grafico_pizza_iterativo_h
Gráfico da proporção de estudantes de graduação que são alunos da CECD
=prop.table(table(dados_xl_alunos_join$estudante_sim_nao))
df_pizza_porcent<<- as.data.frame(df_pizza_porcent)
df_pizza_porcent df_pizza_porcent
## Var1 Freq
## 1 Não 0.6925795
## 2 Sim 0.3074205
<- c('rgb(0,204,204)', 'rgb(102,51,0)')
colors
= plot_ly(df_pizza_porcent,
grafico_pizza_iterativo labels = ~Var1,
values = ~Freq,
marker = list(colors = colors),
type = 'pie') %>%
layout(title = 'Gráfico de pizza proporção de estudantes de graduação que são alunos da CECD (%) ')
grafico_pizza_iterativo
Gráfico da proporção de nível de conhecimento em R dos alunos da CECD
=prop.table(table(dados_xl_alunos_join$conhecimento_r))
df_pizza_porcent<<- as.data.frame(df_pizza_porcent)
df_pizza_porcent df_pizza_porcent
## Var1 Freq
## 1 Avançado 0.01413428
## 2 Básico 0.46996466
## 3 Intermediário 0.22261484
## 4 Nunca tinha estudado R 0.29328622
<- c('rgb(0,204,204)', 'rgb(102,51,0)')
colors
= plot_ly(df_pizza_porcent,
grafico_pizza_iterativo labels = ~Var1,
values = ~Freq,
marker = list(colors = colors),
type = 'pie') %>%
layout(title = 'Gráfico de pizza proporção de nível de conhecimento em R dos alunos da CECD (%) ')
grafico_pizza_iterativo
Gráfico de barras da origem da descoberta da CECD
= dados_xl_alunos_join %>% group_by(descoberta_comunidade) %>% summarise(total_alunos = n())
dados_xl_alunos_join_descoberta
$descoberta_comunidade_ord = factor(dados_xl_alunos_join_descoberta$descoberta_comunidade, levels =c("Linkedin","Youtube","Telegram", "Instagram","WhatsApp","Facebook")
dados_xl_alunos_join_descoberta
)
ggplot(dados_xl_alunos_join_descoberta, aes(x = descoberta_comunidade_ord, y = total_alunos)) +
geom_bar(aes(fill = descoberta_comunidade_ord),stat = "identity", show.legend = F) +
xlab("Ano") +
ylab("Quantidade de alunos") +
theme(axis.text.y = element_blank())+
ggtitle("Quantidade de alunos por origem de descoberta da CECD - 2020 a 2023") +
geom_text(aes(label = total_alunos), vjust=-0.2, color="black") +
scale_fill_brewer(palette="BrBG")
Gráfico de barras da origem da descoberta da CECD
= dados_xl_alunos_join %>% group_by(cluster_formacao) %>% summarise(total_alunos = n())
dados_xl_alunos_join_cluster
$cluster_formacao_ord = ifelse(dados_xl_alunos_join_cluster$cluster_formacao == "44 | Ciências naturais, Matemática, Estatistica,Apropecuaria, Veterinaria, saude e bem estar","44 | Ciências naturais, Matemática, Estatistica",dados_xl_alunos_join_cluster$cluster_formacao)
dados_xl_alunos_join_cluster
$cluster_formacao_ord = factor(dados_xl_alunos_join_cluster$cluster_formacao_ord, levels =c("55 | Técnologias da Informação e Comunicação","44 | Ciências naturais, Matemática, Estatistica","22 | Ciências Sociais, Jornalismo e Informação", "33 | Negócios, Admnistração e Direito","66 | Engenharia, Produção e construção","11 | Eduação, Artes e Humanidades")
dados_xl_alunos_join_cluster
)
ggplot(dados_xl_alunos_join_cluster, aes(x = cluster_formacao_ord, y = total_alunos)) +
geom_bar(aes(fill = cluster_formacao_ord),stat = "identity", show.legend = F) +
#xlab("Ano") +
ylab("Quantidade de alunos") +
#theme(axis.text.y = element_blank())+
ggtitle("Quantidade de alunos por origem de descoberta
da CECD - 2020 a 2023") +
geom_text(aes(label = total_alunos), vjust=-0.2, color="black") +
coord_flip()+
#ggpubr::rotate_x_text()+
scale_fill_brewer(palette="BrBG")