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_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_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_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_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_iterativo

Grá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_m

Grá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_h

Grá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_iterativo

Grá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_iterativo

Grá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")

Grafo do cluster de formação vs sexo da CECD