Projeto Fase 3

Disciplina: Análise de Dados

Professor: Adriano

Aluno: Tályson Lopes

Introdução

A análise de dados é uma ferramenta fundamental para apoiar a tomada de decisões nas organizações. Neste projeto foi realizada uma análise exploratória dos dados de vendas da empresa Bar da Dorinha, utilizando a linguagem R e os pacotes dplyr e ggplot2.

O objetivo principal consiste em identificar padrões de vendas, avaliar o desempenho dos vendedores, analisar a evolução temporal das receitas da empresa e calcular a folha de pagamento dos colaboradores considerando remuneração variável baseada em comissão.

Além disso, foi desenvolvida uma previsão das vendas futuras utilizando modelos de séries temporais.

#Carregando as Bibliotecas
 

library(scales) 
library(dplyr)
## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)
library(readr)
## 
## Anexando pacote: 'readr'
## O seguinte objeto é mascarado por 'package:scales':
## 
##     col_factor
library(knitr)
library(kableExtra)
## 
## Anexando pacote: 'kableExtra'
## O seguinte objeto é mascarado por 'package:dplyr':
## 
##     group_rows
library(lubridate)
## 
## Anexando pacote: 'lubridate'
## Os seguintes objetos são mascarados por 'package:base':
## 
##     date, intersect, setdiff, union
library(forecast)

Carregamento e Preparação dos Dados

Importação dos Dados

# Carregamento da Planilha xlsx

vendas <- read_excel("Vendas2024.xlsx")
salarios <- read_excel("Salario_base2024.xlsx")

Tratamento dos Dados

Após a importação dos dados, foi realizada a verificação dos tipos de variáveis e a remoção de registros com valores ausentes. O conjunto de dados encontra-se apto para as análises estatísticas e gráficas subsequentes.

vendas$vendedor <- as.factor(vendas$vendedor)

vendas$venda_diaria <- as.numeric(vendas$venda_diaria)

vendas$dias <- as.Date(vendas$dias)

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

Estrutura dos dados

A análise inicial permitiu verificar a estrutura da base de dados e confirmar que as variáveis estavam corretamente classificadas. Após o tratamento dos dados, foram removidos possíveis registros com valores ausentes na variável de vendas, garantindo maior confiabilidade para as análises estatísticas e gráficas realizadas posteriormente.

str(vendas)
## 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 ...

Primeiras linhas

head(vendas)
## # A tibble: 6 × 5
##   vendedor dias       venda_diaria   ano   mes
##   <fct>    <date>            <dbl> <dbl> <dbl>
## 1 101101   2018-01-01         372.  2018     1
## 2 101101   2018-01-01         139.  2018     1
## 3 101101   2018-01-01         354.  2018     1
## 4 101101   2018-01-01         241.  2018     1
## 5 101101   2018-01-01         123.  2018     1
## 6 101101   2018-01-01         165.  2018     1

Resumo estatístico

summary(vendas)
##     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  
## 

Estatísticas por vendedor

Os resultados demonstram diferenças relevantes entre os vendedores em relação ao volume total de vendas. Observa-se que alguns profissionais apresentaram desempenho superior, contribuindo significativamente para o faturamento da empresa. A média e a mediana das vendas diárias permitiram avaliar o comportamento típico de cada vendedor, enquanto o desvio padrão evidenciou a variabilidade dos resultados obtidos ao longo do período analisado.

estatisticas_vendedor <- vendas %>%
  group_by(vendedor) %>%
  summarise(
    Venda_Total = sum(venda_diaria),
    Media_Diaria = mean(venda_diaria),
    Mediana_Diaria = median(venda_diaria),
    Desvio_Padrao = sd(venda_diaria),
    Total_Registros = n()
  ) %>%
  arrange(desc(Venda_Total))

estatisticas_vendedor
## # A tibble: 12 × 6
##    vendedor Venda_Total Media_Diaria Mediana_Diaria Desvio_Padrao
##    <fct>          <dbl>        <dbl>          <dbl>         <dbl>
##  1 101102      4031176.         276.           268.          161.
##  2 101101      3489519.         254.           249.          146.
##  3 101103      3433923.         269.           265.          155.
##  4 101105      2694622.         259.           251.          150.
##  5 101104      2491491.         237.           232.          138.
##  6 101108      2473665.         271.           265.          157.
##  7 101106      2458056.         246.           241.          143.
##  8 102111      2441308.         245.           241.          141.
##  9 101107      2201441.         250.           243.          147.
## 10 102112      1338667.         290.           283.          167.
## 11 101109      1296194.         304.           298.          174.
## 12 101110      1125154.         256.           252.          146.
## # ℹ 1 more variable: Total_Registros <int>

Formatação da tabela

estatisticas_vendedor %>%
  kable(
    caption = "Estatísticas por vendedor",
    digits = 2
  ) %>%
  kable_styling(full_width = FALSE)
Estatísticas por vendedor
vendedor Venda_Total 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

Venda mensal total da empresa

A consolidação das vendas mensais permitiu acompanhar a evolução do faturamento da empresa ao longo do tempo. Foram identificados períodos de crescimento e estabilidade nas vendas, indicando o comportamento do mercado e a capacidade da empresa de manter seu desempenho comercial. Essa análise é importante para o planejamento financeiro e definição de metas futuras.

venda_mensal <- vendas %>%
  group_by(ano, mes) %>%
  summarise(
    Total_Vendas = sum(venda_diaria),
    .groups = "drop"
  )

venda_mensal
## # A tibble: 75 × 3
##      ano   mes Total_Vendas
##    <dbl> <dbl>        <dbl>
##  1  2018     1      101568.
##  2  2018     2       84567.
##  3  2018     3       85530.
##  4  2018     4       98811.
##  5  2018     5      120226.
##  6  2018     6       97620.
##  7  2018     7       83419.
##  8  2018     8      124339.
##  9  2018     9      120982.
## 10  2018    10      127808.
## # ℹ 65 more rows

Venda mensal por vendedor

A análise individual das vendas mensais possibilitou identificar diferenças de desempenho entre os vendedores ao longo dos meses. Alguns profissionais apresentaram resultados mais consistentes, enquanto outros demonstraram maior oscilação em suas vendas. Essas informações podem auxiliar a gestão na elaboração de estratégias de treinamento e acompanhamento da equipe comercial.

venda_mensal_vendedor <- vendas %>%
  group_by(vendedor, ano, mes) %>%
  summarise(
    Total_Vendas = sum(venda_diaria),
    .groups = "drop"
  )

venda_mensal_vendedor
## # A tibble: 601 × 4
##    vendedor   ano   mes Total_Vendas
##    <fct>    <dbl> <dbl>        <dbl>
##  1 101101    2018     1       40682.
##  2 101101    2018     2       41948.
##  3 101101    2018     3       39753.
##  4 101101    2018     4       40270.
##  5 101101    2018     5       60735.
##  6 101101    2018     6       37627.
##  7 101101    2018     7       52441.
##  8 101101    2018     8       34253.
##  9 101101    2018     9       30024.
## 10 101101    2018    10       41341.
## # ℹ 591 more rows

Gráfico de barras – Venda Total por Vendedor

O gráfico de barras permite comparar visualmente o desempenho dos vendedores. Observa-se que determinados colaboradores se destacam pelo maior volume de vendas acumuladas, demonstrando maior contribuição para os resultados da empresa. A diferença entre os volumes vendidos sugere oportunidades para compartilhamento de boas práticas entre os membros da equipe.

ggplot(
  estatisticas_vendedor,
  aes(
    x = reorder(vendedor, Venda_Total),
    y = Venda_Total
  )
) +
  geom_col(fill = "steelblue") +
  coord_flip() +
  labs(
    title = "Venda Total por Vendedor",
    x = "Vendedor",
    y = "Venda Total"
  )

Tendência geral das vendas mensais

O gráfico de linhas evidencia o comportamento das vendas ao longo do tempo. É possível identificar períodos de crescimento, estabilidade e eventuais oscilações, permitindo compreender melhor a evolução do negócio. Essa visualização auxilia na identificação de tendências e possíveis efeitos sazonais nas vendas da empresa.

venda_mensal$data_ref <- as.Date(
  paste(
    venda_mensal$ano,
    venda_mensal$mes,
    "01",
    sep = "-"
  )
)

ggplot(
  venda_mensal,
  aes(
    data_ref,
    Total_Vendas
  )
) +
  geom_line(color = "darkgreen") +
  geom_point(color = "darkgreen") +
  labs(
    title = "Tendência das Vendas Mensais",
    x = "Período",
    y = "Total de Vendas"
  )

Gráfico facetado– Vendas por Vendedor

A visualização individualizada por vendedor permite acompanhar a evolução do desempenho de cada colaborador ao longo do período analisado. As escalas independentes facilitam a interpretação das tendências específicas de cada profissional, destacando diferenças de crescimento, estabilidade ou variação nos resultados.

venda_mensal_vendedor$data_ref <- as.Date(
  paste(
    venda_mensal_vendedor$ano,
    venda_mensal_vendedor$mes,
    "01",
    sep = "-"
  )
)

ggplot(
  venda_mensal_vendedor,
  aes(
    data_ref,
    Total_Vendas
  )
) +
  geom_line(color = "blue") +
  facet_wrap(
    ~ vendedor,
    scales = "free_y"
  ) +
  labs(
    title = "Venda Mensal por Vendedor",
    x = "Período",
    y = "Total de Vendas"
  )

Histograma das Vendas Diárias

O histograma apresenta a distribuição das vendas diárias registradas na empresa. Observa-se a concentração de maior frequência em determinadas faixas de valores, permitindo identificar o comportamento predominante das vendas. A presença de valores extremos indica a ocorrência de vendas significativamente superiores à média em alguns períodos.

ggplot(
  vendas,
  aes(venda_diaria)
) +
  geom_histogram(
    bins = 30,
    fill = "orange",
    color = "black"
  ) +
  labs(
    title = "Distribuição das Vendas Diárias",
    x = "Venda",
    y = "Frequência"
  )

Boxplot das Vendas por Mês

O boxplot mensal permite avaliar a dispersão dos valores de vendas em cada mês. A diferença entre medianas e amplitudes demonstra que alguns meses apresentaram maior variabilidade nos resultados. Os pontos fora da faixa principal representam vendas atípicas, que podem estar relacionadas a promoções, sazonalidade ou eventos específicos.

ggplot(
  vendas,
  aes(
    as.factor(mes),
    venda_diaria
  )
) +
  geom_boxplot(fill = "lightblue") +
  labs(
    title = "Vendas por Mês",
    x = "Mês",
    y = "Venda Diária"
  )

Boxplot das Vendas por Vendedor

A comparação da distribuição das vendas por vendedor evidencia diferenças no padrão de desempenho entre os colaboradores. Vendedores com caixas mais compactas apresentaram maior regularidade em seus resultados, enquanto aqueles com maior dispersão demonstraram comportamento mais variável ao longo do período analisado.

ggplot(
  vendas,
  aes(
    vendedor,
    venda_diaria
  )
) +
  geom_boxplot(fill = "lightgreen") +
  labs(
    title = "Vendas por Vendedor",
    x = "Vendedor",
    y = "Venda Diária"
  )

Folha de pagamento março/2024

Para o cálculo da folha de pagamento referente ao mês de março de 2024, foi considerado o salário base de cada vendedor acrescido de uma comissão equivalente a 5% do total vendido no período. Sobre o valor bruto obtido foram aplicados os descontos de FGTS (8%) e INSS (11%), conforme especificado na atividade. Os resultados demonstram a influência direta do desempenho em vendas sobre a remuneração final dos colaboradores

# Recarregar a planilha de salários

salarios <- read_excel("Salario_base2024.xlsx")

# Renomear a coluna de matrícula

salarios <- salarios %>%
  rename(
    vendedor = `Número de Inscrição`
  )

# Vendas de março de 2024

vendas_marco <- vendas %>%
  filter(
    ano == 2024,
    mes == 3
  ) %>%
  group_by(vendedor) %>%
  summarise(
    Total_Vendas = sum(venda_diaria),
    .groups = "drop"
  )

# Ajustar tipos

vendas_marco$vendedor <- as.numeric(as.character(vendas_marco$vendedor))
salarios$vendedor <- as.numeric(salarios$vendedor)

# Cruzar tabelas

folha_marco <- left_join(
  vendas_marco,
  salarios,
  by = "vendedor"
)

# Calcular folha

folha_marco <- folha_marco %>%
  mutate(
    Comissao = Total_Vendas * 0.05,
    FGTS = (Salario_base + Comissao) * 0.08,
    INSS = (Salario_base + Comissao) * 0.11,
    Salario_Final = (Salario_base + Comissao) - FGTS - INSS
  ) %>%
  select(
    vendedor,
    Nome,
    Sobrenome,
    Salario_base,
    Total_Vendas,
    Comissao,
    FGTS,
    INSS,
    Salario_Final
  )

knitr::kable(
  folha_marco,
  caption = "Folha de Pagamento - Março de 2024",
  digits = 2
)
Folha de Pagamento - Março de 2024
vendedor Nome Sobrenome Salario_base Total_Vendas Comissao FGTS INSS Salario_Final
101101 Nome1 Sobrenome1 2000 37178.72 1858.94 308.71 424.48 3125.74
101102 Nome2 Sobrenome2 2000 46217.34 2310.87 344.87 474.20 3491.80
101103 Nome3 Sobrenome3 2000 44313.81 2215.69 337.26 463.73 3414.71
101104 Nome4 Sobrenome4 2000 48342.67 2417.13 353.37 485.88 3577.88
101105 Nome5 Sobrenome5 2000 55186.72 2759.34 380.75 523.53 3855.06
101106 Nome6 Sobrenome6 2000 43376.99 2168.85 333.51 458.57 3376.77
101107 Nome7 Sobrenome7 2000 49625.06 2481.25 358.50 492.94 3629.81
101108 Nome8 Sobrenome8 2000 37490.39 1874.52 309.96 426.20 3138.36
101109 Nome9 Sobrenome9 2000 33693.06 1684.65 294.77 405.31 2984.57
101110 Nome10 Sobrenome10 2000 41738.19 2086.91 326.95 449.56 3310.40
102111 Nome11 Sobrenome11 2500 50860.12 2543.01 403.44 554.73 4084.83
102112 Nome12 Sobrenome12 2500 65374.47 3268.72 461.50 634.56 4672.67

Previsão de vendas para os próximos 6 meses

A previsão foi realizada utilizando um modelo de séries temporais do tipo ARIMA, selecionado automaticamente pelo pacote forecast. Os resultados apresentam uma estimativa do comportamento das vendas para os próximos seis meses com base no histórico disponível. A análise permite identificar tendências futuras e auxilia a empresa no planejamento financeiro, definição de metas comerciais e tomada de decisões estratégicas. Embora previsões estejam sujeitas a incertezas, elas fornecem uma importante referência para o acompanhamento do desempenho organizacional.

# Consolidar vendas por mês

serie_vendas <- vendas %>%
  group_by(ano, mes) %>%
  summarise(
    Total_Vendas = sum(venda_diaria),
    .groups = "drop"
  )

serie_vendas
## # A tibble: 75 × 3
##      ano   mes Total_Vendas
##    <dbl> <dbl>        <dbl>
##  1  2018     1      101568.
##  2  2018     2       84567.
##  3  2018     3       85530.
##  4  2018     4       98811.
##  5  2018     5      120226.
##  6  2018     6       97620.
##  7  2018     7       83419.
##  8  2018     8      124339.
##  9  2018     9      120982.
## 10  2018    10      127808.
## # ℹ 65 more rows
ts_vendas <- ts(
  serie_vendas$Total_Vendas,
  start = c(min(serie_vendas$ano), 1),
  frequency = 12
)

ts_vendas
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 2018 101567.93  84566.85  85530.13  98811.06 120225.68  97619.83  83419.18
## 2019 136127.00  98931.27 114280.20 126960.42 171233.06 149914.75 107252.77
## 2020 271472.65 222533.09 382382.08 421068.32 517596.70 416373.11 351208.06
## 2021 360726.31 301422.03 385502.04 430170.60 483334.28 476022.42 400116.30
## 2022 398929.02 344108.08 366832.24 479610.28 669782.26 616457.44 540985.75
## 2023 568067.46 477297.07 577768.37 608208.92 699119.04 682889.59 574676.55
## 2024 549534.22 468779.94 553397.54                                        
##            Aug       Sep       Oct       Nov       Dec
## 2018 124339.31 120982.09 127807.90 155285.26 187369.81
## 2019 141441.62 129484.14 288625.81 355359.75 468261.28
## 2020 331284.75 400772.74 387258.35 505659.62 595835.98
## 2021 392945.07 375571.56 441425.94 503923.84 608599.31
## 2022 530524.87 510590.58 614907.36 736200.89 817665.03
## 2023 571171.72 572114.63 651203.73 757312.16 898480.62
## 2024
modelo <- auto.arima(ts_vendas)

summary(modelo)
## Series: ts_vendas 
## ARIMA(1,0,0)(2,1,0)[12] with drift 
## 
## Coefficients:
##          ar1     sar1     sar2     drift
##       0.7338  -0.6855  -0.3246  8206.357
## s.e.  0.0879   0.1415   0.1623  1056.278
## 
## sigma^2 = 2.474e+09:  log likelihood = -772.23
## AIC=1554.45   AICc=1555.5   BIC=1565.17
## 
## Training set error measures:
##                    ME     RMSE      MAE       MPE     MAPE    MASE       ACF1
## Training set 1183.282 44120.08 30579.36 -1.678233 8.520146 0.29813 0.04457916
previsao <- forecast(
  modelo,
  h = 6
)

previsao
##          Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## Apr 2024       640477.5 576728.0 704227.1 542981.0 737974.0
## May 2024       771324.3 692254.1 850394.5 650396.8 892251.7
## Jun 2024       756612.1 670413.6 842810.7 624782.9 888441.4
## Jul 2024       679514.9 589712.5 769317.3 542173.9 816855.9
## Aug 2024       678775.7 587091.5 770459.8 538556.9 818994.5
## Sep 2024       670983.0 578301.5 763664.5 529238.9 812727.1
knitr::kable(
  data.frame(previsao),
  caption = "Previsão de Vendas para os Próximos 6 Meses",
  digits = 2
)
Previsão de Vendas para os Próximos 6 Meses
Point.Forecast Lo.80 Hi.80 Lo.95 Hi.95
Apr 2024 640477.5 576728.0 704227.1 542981.0 737974.0
May 2024 771324.3 692254.1 850394.5 650396.8 892251.7
Jun 2024 756612.1 670413.6 842810.7 624782.9 888441.4
Jul 2024 679514.9 589712.4 769317.3 542173.9 816855.9
Aug 2024 678775.7 587091.5 770459.8 538556.8 818994.5
Sep 2024 670983.0 578301.5 763664.5 529238.9 812727.1
autoplot(previsao) +
  ggtitle("Previsão de Vendas para os Próximos 6 Meses") +
  xlab("Período") +
  ylab("Valor Previsto")

Conclusão

A análise exploratória realizada permitiu compreender o comportamento das vendas da empresa ao longo dos anos, identificar diferenças de desempenho entre os vendedores e avaliar a distribuição dos resultados obtidos.

Os gráficos facilitaram a visualização das tendências temporais e das características estatísticas dos dados. Além disso, foi possível calcular a folha de pagamento dos vendedores considerando remuneração variável baseada em comissão.

Por fim, foi realizada uma previsão de vendas para os próximos seis meses utilizando técnicas de séries temporais, permitindo uma visão prospectiva do desempenho futuro da empresa.

Os resultados obtidos evidenciam a importância da análise de dados para a gestão empresarial, permitindo decisões mais fundamentadas e orientadas por evidências.