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)
Importação dos Dados
# Carregamento da Planilha xlsx
vendas <- read_excel("Vendas2024.xlsx")
salarios <- read_excel("Salario_base2024.xlsx")
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))
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 ...
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
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
##
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>
estatisticas_vendedor %>%
kable(
caption = "Estatísticas por vendedor",
digits = 2
) %>%
kable_styling(full_width = FALSE)
| 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 |
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
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
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"
)
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"
)
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"
)
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"
)
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"
)
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"
)
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
)
| 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 |
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
)
| 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")
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.