Projeto de Análise de Dados

Aluno: Renato Rodrigues Alves
Curso: Engenharia Civil
Instituição: Faculdade Celso Lisboa
Disciplina: Análise de Dados
Local: Rio de Janeiro - RJ

1. Introdução

Este relatório apresenta uma Análise Exploratória de Dados (AED) das vendas da empresa Bar da Dorinha. O objetivo principal é avaliar o desempenho individual dos vendedores, identificar tendências de vendas ao longo dos meses e estruturar a folha de pagamento referente a março de 2024, aplicando automação de processos por meio da linguagem R.

Adicionalmente, ao final do relatório, é apresentada uma projeção de vendas para os próximos 6 meses utilizando modelos de séries temporais.

2. Carregamento de pacote

3. Carregamento de planilha

vendas <- read_excel("Vendas2024.xlsx", sheet = "Sheet1")

vendas <- vendas %>%
  mutate(
    vendedor = as.factor(vendedor),
    dias = as.Date(dias),
    venda_diaria = as.numeric(venda_diaria)
  )

vendas_limpo <- vendas %>%
  filter(!is.na(venda_diaria))

str(vendas_limpo)
## tibble [113,202 × 5] (S3: tbl_df/tbl/data.frame)
##  $ vendedor    : Factor w/ 12 levels "101101","101102",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ dias        : Date[1:113202], format: "2018-01-01" "2018-01-01" ...
##  $ venda_diaria: num [1:113202] 372 139 354 241 123 ...
##  $ ano         : num [1:113202] 2018 2018 2018 2018 2018 ...
##  $ mes         : num [1:113202] 1 1 1 1 1 1 1 1 1 1 ...
head(vendas_limpo) %>% 
  kable(caption = "Primeiras Linhas da Base de Vendas") %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Primeiras Linhas da Base de Vendas
vendedor dias venda_diaria ano mes
101101 2018-01-01 371.97 2018 1
101101 2018-01-01 138.59 2018 1
101101 2018-01-01 353.93 2018 1
101101 2018-01-01 240.73 2018 1
101101 2018-01-01 122.54 2018 1
101101 2018-01-01 165.06 2018 1
summary(vendas_limpo)
##     vendedor          dias             venda_diaria         ano      
##  101102 :14604   Min.   :2018-01-01   Min.   :  9.79   Min.   :2018  
##  101101 :13742   1st Qu.:2020-09-19   1st Qu.:133.27   1st Qu.:2020  
##  101103 :12779   Median :2022-02-03   Median :254.06   Median :2022  
##  101104 :10493   Mean   :2021-11-21   Mean   :260.38   Mean   :2021  
##  101105 :10419   3rd Qu.:2023-03-15   3rd Qu.:373.85   3rd Qu.:2023  
##  101106 : 9997   Max.   :2024-03-30   Max.   :838.42   Max.   :2024  
##  (Other):41168                                                       
##       mes        
##  Min.   : 1.000  
##  1st Qu.: 3.000  
##  Median : 7.000  
##  Mean   : 6.548  
##  3rd Qu.:10.000  
##  Max.   :12.000  
## 

4. Análise Estatística com dplyr

4.1 Desempenho Individual por Vendedor

estat_vendedor <- vendas_limpo %>%
  group_by(vendedor) %>%
  summarise(
    Total_Vendas = sum(venda_diaria),
    Media_Diaria = mean(venda_diaria),
    Mediana_Diaria = median(venda_diaria),
    Desvio_Padrao = sd(venda_diaria),
    Total_Registros = n()
  ) %>%
  arrange(desc(Total_Vendas))

estat_vendedor %>%
  kable(caption = "Métricas de Vendas por Vendedor", digits = 2) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "bordered"))
Métricas de Vendas por Vendedor
vendedor Total_Vendas Media_Diaria Mediana_Diaria Desvio_Padrao Total_Registros
101102 4031176 276.03 268.37 160.76 14604
101101 3489519 253.93 249.28 146.27 13742
101103 3433923 268.72 264.70 155.34 12779
101105 2694622 258.63 250.79 150.14 10419
101104 2491491 237.44 232.13 137.85 10493
101108 2473665 271.47 265.24 157.04 9112
101106 2458056 245.88 240.99 143.15 9997
102111 2441308 244.67 240.99 140.90 9978
101107 2201441 250.28 243.28 146.59 8796
102112 1338667 289.50 282.73 166.85 4624
101109 1296194 304.06 297.62 173.87 4263
101110 1125154 256.01 252.31 145.72 4395

4.2 Venda Mensal Total (Geral)

venda_mensal_geral <- vendas_limpo %>%
  group_by(ano, mes) %>%
  summarise(Total_Mensal = sum(venda_diaria)) %>%
  arrange(ano, mes)

venda_mensal_geral %>%
  kable(caption = "Venda Mensal Total da Empresa", digits = 2) %>%
  kable_styling(bootstrap_options = c("striped", "hover"))
Venda Mensal Total da Empresa
ano mes Total_Mensal
2018 1 101567.93
2018 2 84566.85
2018 3 85530.13
2018 4 98811.06
2018 5 120225.68
2018 6 97619.83
2018 7 83419.18
2018 8 124339.31
2018 9 120982.09
2018 10 127807.90
2018 11 155285.26
2018 12 187369.81
2019 1 136127.00
2019 2 98931.27
2019 3 114280.20
2019 4 126960.42
2019 5 171233.06
2019 6 149914.75
2019 7 107252.77
2019 8 141441.62
2019 9 129484.14
2019 10 288625.81
2019 11 355359.75
2019 12 468261.28
2020 1 271472.65
2020 2 222533.09
2020 3 382382.08
2020 4 421068.32
2020 5 517596.70
2020 6 416373.11
2020 7 351208.06
2020 8 331284.75
2020 9 400772.74
2020 10 387258.35
2020 11 505659.62
2020 12 595835.98
2021 1 360726.31
2021 2 301422.03
2021 3 385502.04
2021 4 430170.60
2021 5 483334.28
2021 6 476022.42
2021 7 400116.30
2021 8 392945.07
2021 9 375571.56
2021 10 441425.94
2021 11 503923.84
2021 12 608599.31
2022 1 398929.02
2022 2 344108.08
2022 3 366832.24
2022 4 479610.28
2022 5 669782.26
2022 6 616457.44
2022 7 540985.75
2022 8 530524.87
2022 9 510590.58
2022 10 614907.36
2022 11 736200.89
2022 12 817665.03
2023 1 568067.46
2023 2 477297.07
2023 3 577768.37
2023 4 608208.92
2023 5 699119.04
2023 6 682889.59
2023 7 574676.55
2023 8 571171.72
2023 9 572114.63
2023 10 651203.73
2023 11 757312.16
2023 12 898480.62
2024 1 549534.22
2024 2 468779.94
2024 3 553397.54

4.3 Venda Mensal por Vendedor

venda_mensal_vendedor <- vendas_limpo %>%
  group_by(vendedor, ano, mes) %>%
  summarise(Total_Vendas_Mensais = sum(venda_diaria)) %>%
  arrange(vendedor, ano, mes)

head(venda_mensal_vendedor, 15) %>%
  kable(caption = "Venda Mensal por Vendedor (Apenas primeiras 15 linhas)", digits = 2) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Venda Mensal por Vendedor (Apenas primeiras 15 linhas)
vendedor ano mes Total_Vendas_Mensais
101101 2018 1 40681.80
101101 2018 2 41947.67
101101 2018 3 39753.13
101101 2018 4 40270.40
101101 2018 5 60735.17
101101 2018 6 37626.92
101101 2018 7 52441.26
101101 2018 8 34252.90
101101 2018 9 30023.94
101101 2018 10 41341.30
101101 2018 11 51040.47
101101 2018 12 39680.91
101101 2019 1 41224.85
101101 2019 2 29976.22
101101 2019 3 39335.37

5. Visualização de Dados com ggplot2

5.1 Venda Total por Vendedor

ggplot(estat_vendedor, aes(x = reorder(vendedor, -Total_Vendas), y = Total_Vendas, fill = vendedor)) +
  geom_col(show.legend = FALSE) +
  theme_minimal() +
  labs(title = "Faturamento Total por Vendedor", x = "Vendedor", y = "Total de Vendas (R$)") +
  scale_y_continuous(labels = scales::comma)

5.2 Tendência Geral das Vendas Mensais

# Criando uma coluna de data fictícia para o eixo X do gráfico de linhas
venda_mensal_geral <- venda_mensal_geral %>%
  mutate(Data_Ref = as.Date(paste(ano, mes, "01", sep = "-")))

ggplot(venda_mensal_geral, aes(x = Data_Ref, y = Total_Mensal)) +
  geom_line(color = "darkblue", size = 1.2) +
  geom_point(color = "red", size = 2) +
  theme_minimal() +
  labs(title = "Tendência de Vendas Mensais da Empresa", x = "Período", y = "Venda Total (R$)") +
  scale_x_date(date_labels = "%m/%Y", date_breaks = "3 months")

5.3 Tendência Mensal Facetada por Vendedor

venda_mensal_vendedor <- venda_mensal_vendedor %>%
  mutate(Data_Ref = as.Date(paste(ano, mes, "01", sep = "-")))

ggplot(venda_mensal_vendedor, aes(x = Data_Ref, y = Total_Vendas_Mensais, group = vendedor, color = vendedor)) +
  geom_line(size = 1) +
  facet_wrap(~vendedor, scales = "free_y") +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(title = "Evolução Mensal de Vendas por Vendedor", x = "Período", y = "Total Mensal (R$)")

5.4 Distribuição dos Valores de Venda Diária

ggplot(vendas_limpo, aes(x = venda_diaria)) +
  geom_histogram(bins = 40, fill = "seagreen", color = "white", alpha = 0.8) +
  theme_minimal() +
  labs(title = "Distribuição dos Valores das Vendas Diárias", x = "Valor da Venda Diária (R$)", y = "Frequência")

5.5 Boxplot de Vendas Diárias por Mês

ggplot(vendas_limpo, aes(x = as.factor(mes), y = venda_diaria, fill = as.factor(mes))) +
  geom_boxplot(show.legend = FALSE) +
  theme_minimal() +
  labs(title = "Dispersão das Vendas Diárias por Mês", x = "Mês", y = "Valor da Venda (R$)")

5.6 Boxplot de Vendas por Vendedor

ggplot(vendas_limpo, aes(x = vendedor, y = venda_diaria, fill = vendedor)) +
  geom_boxplot(show.legend = FALSE) +
  theme_minimal() +
  labs(title = "Dispersão das Vendas Diárias por Vendedor", x = "Vendedor", y = "Valor da Venda (R$)")

6. Cálculo do Salário de Março de 2024

Regra aplicada para Março de 2024: \[Salário = Salário\_Base + Comissão(5\%) - FGTS(8\%) - INSS(11\%)\]

# Criando dados simulados de Salário Base para os vendedores existentes na base
vendedores_unicos <- unique(vendas_limpo$vendedor)
salario_base_df <- data.frame(
  vendedor = vendedores_unicos,
  salario_base = rep(2000.00, length(vendedores_unicos)) # Exemplo: R$ 2.000,00 de base para todos
)

# Filtrando as vendas apenas de Março de 2024
vendas_mar_2024 <- vendas_limpo %>%
  filter(ano == 2024, mes == 3) %>%
  group_by(vendedor) %>%
  summarise(Vendas_Total_Mes = sum(venda_diaria))

# Unindo com a tabela de salário base e efetuando os cálculos
folha_marco <- salario_base_df %>%
  inner_join(vendas_mar_2024, by = "vendedor") %>%
  mutate(
    Comissao = Vendas_Total_Mes * 0.05,
    FGTS_Desconto = salario_base * 0.08,
    INSS_Desconto = salario_base * 0.11,
    Salario_Liquido = salario_base + Comissao - FGTS_Desconto - INSS_Desconto
  )

folha_marco %>%
  kable(caption = "Folha de Pagamento - Março de 2024", digits = 2) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Folha de Pagamento - Março de 2024
vendedor salario_base Vendas_Total_Mes Comissao FGTS_Desconto INSS_Desconto Salario_Liquido
101101 2000 37178.72 1858.94 160 220 3478.94
101102 2000 46217.34 2310.87 160 220 3930.87
101103 2000 44313.81 2215.69 160 220 3835.69
101104 2000 48342.67 2417.13 160 220 4037.13
101106 2000 43376.99 2168.85 160 220 3788.85
102111 2000 50860.12 2543.01 160 220 4163.01
101105 2000 55186.72 2759.34 160 220 4379.34
101107 2000 49625.06 2481.25 160 220 4101.25
101108 2000 37490.39 1874.52 160 220 3494.52
101109 2000 33693.06 1684.65 160 220 3304.65
101110 2000 41738.19 2086.91 160 220 3706.91
102112 2000 65374.47 3268.72 160 220 4888.72

Desafios (Automação de Contra-cheques)

# Função para gerar holerites individuais em arquivos .txt
gerar_holerites <- function(dados_folha) {
  for(i in 1:nrow(dados_folha)) {
    vendedor_id <- dados_folha$vendedor[i]
    texto <- paste0(
      "====================================================\n",
      "              BAR DA DORINHA - HOLERITE             \n",
      "====================================================\n",
      "Vendedor ID: ", vendedor_id, "\n",
      "----------------------------------------------------\n",
      "Salário Base:       R$ ", round(dados_folha$salario_base[i], 2), "\n",
      "Comissão (5%):      R$ ", round(dados_folha$Comissao[i], 2), "\n",
      "(-) Desconto FGTS:  R$ ", round(dados_folha$FGTS_Desconto[i], 2), "\n",
      "(-) Desconto INSS:  R$ ", round(dados_folha$INSS_Desconto[i], 2), "\n",
      "----------------------------------------------------\n",
      "SALÁRIO LÍQUIDO:    R$ ", round(dados_folha$Salario_Liquido[i], 2), "\n",
      "====================================================\n"
    )
    # Salva em arquivo individual
    writeLines(texto, paste0("Holerite_Vendedor_", vendedor_id, ".txt"))
  }
}

7. DESAFIO (Previsão de Vendas para os próximos 6 meses)

# Criando o objeto de Série Temporal (TS) baseado no faturamento mensal geral
# Ajuste o start de acordo com o ano/mês inicial real dos seus dados
vendas_ts <- ts(venda_mensal_geral$Total_Mensal, start = c(min(venda_mensal_geral$ano), min(venda_mensal_geral$mes)), frequency = 12)

# Ajustando o modelo de previsão automática
modelo_previsao <- forecast(vendas_ts, h = 6)

# Plotando o gráfico de previsão
plot(modelo_previsao, main = "Previsão de Vendas para os Próximos 6 Meses - Bar da Dorinha",
     xlab = "Tempo", ylab = "Vendas Totais (R$)", col = "blue", fcol = "red")

8. Conclusão

A análise de dados permitiu identificar com clareza quais colaboradores trazem o maior faturamento para o Bar da Dorinha, além de apontar as tendências de crescimento da empresa. O modelo preditivo nos próximos meses serve como uma excelente ferramenta de apoio à tomada de decisão gerencial, permitindo prever necessidades de estoque e fluxo de caixa.