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
naniar::gg_miss_var(dados_xl_filt) 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_linhasggplotly(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_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)
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
freq <- dados_xl_filt %>% mutate(ano = as.character(dt_confirm_ano)) %>%
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
freq <- dados_xl_filt %>% mutate(ano = as.character(dt_confirm_ano)) %>%
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
df_pizza_porcent=prop.table(table(dados_xl_filt$tipo_pagamento_oferta))
df_pizza_porcent <<- as.data.frame(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
colors <- c('rgb(0,204,204)', 'rgb(102,51,0)')
grafico_pizza_iterativo = plot_ly(df_pizza_porcent,
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_iterativoBoxplot 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_data_receita_alunos = 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(
Trimestre = case_when(
dt_confirm_mes %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"
)
)
dados_xl_filt_data_receita_alunos$Ano = factor(dados_xl_filt_data_receita_alunos$dt_confirm_ano)
dados_xl_filt_data_receita_alunos_trimestre = 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 )
grafico_dispersao1 = ggplot(dados_xl_filt_data_receita_alunos_trimestre, aes(x=total_alunos, y=total_receita) ) +
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_data_receita_alunos = 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)
grafico_dispersao2 = ggplot(dados_xl_filt_data_receita_alunos, aes(x=total_alunos, y=total_receita) ) +
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
dados_xl_alunos = readxl::read_xlsx("Boas vindas - Comunidade De Estatística (respostas) (01022024) .xlsx",
sheet = 2)Unindo os bancos
names(dados_xl_alunos)[2] = "email"
dados_xl_alunos_join = inner_join(dados_xl_alunos,dados_xl, by = "email")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 = dados_xl_alunos_join %>% dplyr::select(
sexo,
faixa_etaria,
descoberta_comunidade,
estudante_sim_nao,
area_formacao,
empresa,
cargo,
atuacao,
cluster_formacao,
conhecimento_r
)Verificando dados faltantes
naniar::gg_miss_var(dados_xl_alunos_join) Gráfico de pizza do sexo dos alunos da CECD
df_pizza_porcent=prop.table(table(dados_xl_alunos_join$sexo))
df_pizza_porcent <<- as.data.frame(df_pizza_porcent)
df_pizza_porcent## Var1 Freq
## 1 Feminino 0.3180212
## 2 Masculino 0.6819788
colors <- c('rgb(0,204,204)', 'rgb(102,51,0)')
grafico_pizza_iterativo = plot_ly(df_pizza_porcent,
labels = ~Var1,
values = ~Freq,
marker = list(colors = colors),
type = 'pie') %>%
layout(title = 'Gráfico de pizza do sexo dos alunos da CECD (%) ')
grafico_pizza_iterativoGráfico de pizza da faixa etária das alunas da CECD (%)
df_pizza_porcent=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## 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
colors <- c('rgb(0,204,204)', 'rgb(102,51,0)')
grafico_pizza_iterativo_m = plot_ly(df_pizza_porcent,
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_mGráfico de pizza da faixa etária das alunos da CECD (%)
df_pizza_porcent=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## 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
colors <- c('rgb(0,204,204)', 'rgb(102,51,0)')
grafico_pizza_iterativo_h = plot_ly(df_pizza_porcent,
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_hGráfico da proporção de estudantes de graduação que são alunos da CECD
df_pizza_porcent=prop.table(table(dados_xl_alunos_join$estudante_sim_nao))
df_pizza_porcent <<- as.data.frame(df_pizza_porcent)
df_pizza_porcent## Var1 Freq
## 1 Não 0.6925795
## 2 Sim 0.3074205
colors <- c('rgb(0,204,204)', 'rgb(102,51,0)')
grafico_pizza_iterativo = plot_ly(df_pizza_porcent,
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_iterativoGráfico da proporção de nível de conhecimento em R dos alunos da CECD
df_pizza_porcent=prop.table(table(dados_xl_alunos_join$conhecimento_r))
df_pizza_porcent <<- as.data.frame(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
colors <- c('rgb(0,204,204)', 'rgb(102,51,0)')
grafico_pizza_iterativo = plot_ly(df_pizza_porcent,
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_iterativoGráfico de barras da origem da descoberta da CECD
dados_xl_alunos_join_descoberta = 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")
)
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_cluster = 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")
)
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")