Projeto Análise de Dados de Vendas em Restaurante

Fase 2

Aluno: Rafael Oliveira

Curso: Engenharia Civil

Instituição: Faculdade Celso Lisboa

Disciplina: Programação em Rmd

Local: Rio de Janeiro - RJ


Introdução

Este relatório apresenta uma análise estatística de uma base de dados relacionada às vendas de um restaurante. A proposta do trabalho é utilizar a linguagem R, no ambiente RStudio, para carregar, organizar, tratar e interpretar os dados de uma planilha no formato .xlsx.

O objetivo principal é demonstrar como a análise de dados pode auxiliar no acompanhamento das vendas, na identificação dos pratos mais vendidos, na avaliação das categorias com maior faturamento e na observação das formas de pagamento mais utilizadas. Dessa forma, o projeto contribui para a compreensão do comportamento financeiro do restaurante e para a tomada de decisões administrativas.

A base utilizada está organizada em colunas, sem células mescladas, o que permite sua leitura adequada no RStudio. A preparação dos dados foi realizada dentro do próprio R, conforme solicitado na proposta da atividade.

O relatório está estruturado em: carregamento dos pacotes, carregamento da base de dados, preparação e tratamento dos dados, estatística básica, análises por agrupamento, gráficos estatísticos e conclusão final.

Carregamento dos Pacotes

Os pacotes abaixo foram utilizados para leitura da planilha, manipulação dos dados, construção de tabelas e elaboração dos gráficos estatísticos. Este chunk foi deixado aparente para demonstrar as bibliotecas utilizadas no desenvolvimento do projeto.

library(readxl)
library(dplyr)
library(ggplot2)
library(knitr)
library(scales)

Explicação dos Pacotes

  • readxl: utilizado para importar arquivos em formato Excel.
  • dplyr: utilizado para manipulação, organização, filtragem e agrupamento dos dados.
  • ggplot2: utilizado para criação dos gráficos estatísticos.
  • knitr: utilizado para apresentação das tabelas com a função kable.
  • scales: utilizado para formatação de valores monetários nos gráficos e tabelas.

Carregamento da Base de Dados

A base de dados utilizada neste trabalho foi obtida a partir da planilha Restaurante_Vendas.xlsx, elaborada para fins acadêmicos e utilizada no desenvolvimento desta atividade. O acesso e uso da planilha ocorreram em maio de 2026.

A planilha apresenta os dados organizados em colunas, sem células mescladas, facilitando a importação e a manipulação no RStudio.

vendas_restaurante <- read_excel("Restaurante_Vendas.xlsx")

Visualização Inicial da Base

## # A tibble: 6 × 11
##   ID_Pedido Data       Cliente  Garçom Categoria Prato Quantidade Valor_Unitario
##   <chr>     <chr>      <chr>    <chr>  <chr>     <chr>      <dbl>          <dbl>
## 1 PED-1001  2026-01-05 Carlos … João   Massas    Lasa…          2           42.9
## 2 PED-1002  2026-01-05 Mariana… Felipe Bebidas   Refr…          1           12  
## 3 PED-1003  2026-01-06 Lucas A… Pedro  Lanches   Hamb…          3           38.5
## 4 PED-1004  2026-01-06 Fernand… João   Sobremes… Peti…          2           24.9
## 5 PED-1005  2026-01-07 Rafael … Felipe Massas    Fett…          1           47.9
## 6 PED-1006  2026-01-07 Juliana… Pedro  Japonesa  Comb…          2           89.9
## # ℹ 3 more variables: Valor_Total <dbl>, Forma_Pagamento <chr>, Status <chr>

Preparação e Tratamento dos Dados

Nesta etapa foram realizadas verificações dos nomes das colunas, tipos de dados, valores ausentes e padronização das variáveis. Essa preparação é importante para evitar erros durante as análises e garantir que os comandos sejam executados corretamente.

Nomes Originais das Colunas

names(vendas_restaurante)
##  [1] "ID_Pedido"       "Data"            "Cliente"         "Garçom"         
##  [5] "Categoria"       "Prato"           "Quantidade"      "Valor_Unitario" 
##  [9] "Valor_Total"     "Forma_Pagamento" "Status"

Padronização dos Nomes das Colunas

Os nomes das colunas foram padronizados para letras minúsculas, facilitando a escrita dos códigos e reduzindo a possibilidade de erro na manipulação da base.

names(vendas_restaurante) <- names(vendas_restaurante) %>%
  tolower()

names(vendas_restaurante)
##  [1] "id_pedido"       "data"            "cliente"         "garçom"         
##  [5] "categoria"       "prato"           "quantidade"      "valor_unitario" 
##  [9] "valor_total"     "forma_pagamento" "status"

Conversão de Caracteres para UTF-8

Os campos de texto foram convertidos para UTF-8, evitando problemas com acentuação no relatório em HTML.

vendas_restaurante <- vendas_restaurante %>%
  mutate(across(where(is.character), ~ iconv(.x, from = "", to = "UTF-8")))

Ajuste dos Tipos de Dados

Nesta etapa, algumas variáveis foram convertidas para os tipos adequados. A data foi tratada como data, e as variáveis quantidade, valor_unitario e valor_total foram tratadas como numéricas.

vendas_restaurante <- vendas_restaurante %>%
  mutate(
    data = as.Date(data),
    quantidade = as.numeric(quantidade),
    valor_unitario = as.numeric(valor_unitario),
    valor_total = as.numeric(valor_total)
  )

Estrutura dos Dados

str(vendas_restaurante)
## tibble [10 × 11] (S3: tbl_df/tbl/data.frame)
##  $ id_pedido      : chr [1:10] "PED-1001" "PED-1002" "PED-1003" "PED-1004" ...
##  $ data           : Date[1:10], format: "2026-01-05" "2026-01-05" ...
##  $ cliente        : chr [1:10] "Carlos Lima" "Mariana Souza" "Lucas Alves" "Fernanda Costa" ...
##  $ garçom         : chr [1:10] "João" "Felipe" "Pedro" "João" ...
##  $ categoria      : chr [1:10] "Massas" "Bebidas" "Lanches" "Sobremesas" ...
##  $ prato          : chr [1:10] "Lasanha Bolonhesa" "Refrigerante 2L" "Hambúrguer Artesanal" "Petit Gateau" ...
##  $ quantidade     : num [1:10] 2 1 3 2 1 2 1 4 2 1
##  $ valor_unitario : num [1:10] 42.9 12 38.5 24.9 47.9 89.9 64.9 9.5 29.9 26.9
##  $ valor_total    : num [1:10] 85.8 12 115.5 49.8 47.9 ...
##  $ forma_pagamento: chr [1:10] "PIX" "Crédito" "Débito" "PIX" ...
##  $ status         : chr [1:10] "Entregue" "Entregue" "Entregue" "Preparando" ...

Resumo Geral da Base

summary(vendas_restaurante)
##      id_pedido       data                 cliente         garçom  
##  Length   :10   Min.   :2026-01-05   Length   :10   Length   :10  
##  N.unique :10   1st Qu.:2026-01-06   N.unique :10   N.unique : 3  
##  N.blank  : 0   Median :2026-01-07   N.blank  : 0   N.blank  : 0  
##  Min.nchar: 8   Mean   :2026-01-07   Min.nchar:11   Min.nchar: 4  
##  Max.nchar: 8   3rd Qu.:2026-01-08   Max.nchar:14   Max.nchar: 6  
##                 Max.   :2026-01-09                                
##      categoria        prato      quantidade  valor_unitario   valor_total    
##  Length   :10   Length   :10   Min.   :1.0   Min.   : 9.50   Min.   : 12.00  
##  N.unique : 6   N.unique :10   1st Qu.:1.0   1st Qu.:25.40   1st Qu.: 40.48  
##  N.blank  : 0   N.blank  : 0   Median :2.0   Median :34.20   Median : 54.80  
##  Min.nchar: 6   Min.nchar:10   Mean   :1.9   Mean   :38.73   Mean   : 68.04  
##  Max.nchar:10   Max.nchar:20   3rd Qu.:2.0   3rd Qu.:46.65   3rd Qu.: 80.58  
##                                Max.   :4.0   Max.   :89.90   Max.   :179.80  
##   forma_pagamento       status  
##  Length   :10     Length   :10  
##  N.unique : 4     N.unique : 3  
##  N.blank  : 0     N.blank  : 0  
##  Min.nchar: 3     Min.nchar: 8  
##  Max.nchar: 8     Max.nchar:10  
## 

Verificação de Valores Ausentes

ausentes <- data.frame(
  coluna = names(vendas_restaurante),
  valores_ausentes = colSums(is.na(vendas_restaurante))
)

kable(ausentes)
coluna valores_ausentes
id_pedido id_pedido 0
data data 0
cliente cliente 0
garçom garçom 0
categoria categoria 0
prato prato 0
quantidade quantidade 0
valor_unitario valor_unitario 0
valor_total valor_total 0
forma_pagamento forma_pagamento 0
status status 0

Consultas Iniciais

As consultas iniciais permitem conhecer melhor a composição da base de dados, identificando pratos, categorias e formas de pagamento presentes na planilha.

Categorias Identificadas

categoria
Bebidas
Japonesa
Lanches
Massas
Pizzas
Sobremesas

Pratos Identificados

prato
Batata Frita Suprema
Cheesecake
Combinado Sushi
Fettuccine Alfredo
Hambúrguer Artesanal
Lasanha Bolonhesa
Petit Gateau
Pizza Calabresa
Refrigerante 2L
Suco Natural

Formas de Pagamento Identificadas

forma_pagamento
Crédito
Dinheiro
Débito
PIX

Estatística Básica

A tabela abaixo apresenta os principais indicadores estatísticos das variáveis numéricas escolhidas: quantidade, valor_unitario e valor_total. Foram calculados média, mediana, desvio padrão, variância, valor máximo e valor mínimo.

Variavel Media Mediana Desvio_Padrao Variancia Maximo Minimo
Quantidade 1.90 2.0 0.99 0.99 4.0 1.0
Valor Unitário 38.73 34.2 24.46 598.09 89.9 9.5
Valor Total 68.04 54.8 49.00 2401.07 179.8 12.0

Análises por Agrupamento

As análises por agrupamento permitem identificar padrões importantes da base, como categorias com maior faturamento, pratos mais vendidos, formas de pagamento mais utilizadas e evolução das vendas ao longo do tempo.

Valor Total por Categoria

categoria quantidade_total valor_total
Japonesa 2 179.8
Lanches 5 175.3
Massas 3 133.7
Sobremesas 3 76.7
Pizzas 1 64.9
Bebidas 5 50.0

Pratos Mais Vendidos

prato quantidade_total valor_total
Suco Natural 4 38.0
Hambúrguer Artesanal 3 115.5
Batata Frita Suprema 2 59.8
Combinado Sushi 2 179.8
Lasanha Bolonhesa 2 85.8
Petit Gateau 2 49.8
Cheesecake 1 26.9
Fettuccine Alfredo 1 47.9
Pizza Calabresa 1 64.9
Refrigerante 2L 1 12.0

Faturamento por Forma de Pagamento

forma_pagamento quantidade_total valor_total
Crédito 5 251.6
PIX 6 227.4
Débito 7 153.5
Dinheiro 1 47.9

Vendas por Data

data quantidade_total valor_total
2026-01-05 3 97.8
2026-01-06 5 165.3
2026-01-07 3 227.7
2026-01-08 5 102.9
2026-01-09 3 86.7

Ticket Médio por Categoria

O ticket médio representa o valor médio vendido por categoria, sendo calculado pela divisão entre o valor total e a quantidade total vendida.

categoria quantidade_total valor_total ticket_medio
Japonesa 2 179.8 89.90
Pizzas 1 64.9 64.90
Massas 3 133.7 44.57
Lanches 5 175.3 35.06
Sobremesas 3 76.7 25.57
Bebidas 5 50.0 10.00

Gráficos Estatísticos

Gráfico de Linha

O gráfico de linha apresenta a evolução do valor total das vendas ao longo das datas registradas na base.

Boxplot

O boxplot permite observar a distribuição dos valores totais das vendas por categoria, destacando variações e possíveis valores extremos.

Histograma

O histograma apresenta a frequência dos valores totais das vendas, permitindo observar a concentração dos registros em diferentes faixas de valor.

Gráfico de Colunas

O gráfico de colunas apresenta o faturamento total por categoria.

Gráfico de Pizza

O gráfico de pizza apresenta a participação das formas de pagamento no faturamento total.

Conclusão

A análise estatística da base de vendas do restaurante permitiu identificar informações importantes sobre o comportamento das vendas, o desempenho das categorias, os pratos com maior saída e a participação das formas de pagamento no faturamento total.

A estatística básica mostrou indicadores relevantes, como média, mediana, desvio padrão, variância, valor máximo e valor mínimo das variáveis numéricas analisadas. Esses resultados ajudam a compreender a distribuição dos valores, a variação das vendas e a existência de possíveis diferenças entre os registros.

As análises por agrupamento permitiram observar quais categorias apresentaram maior faturamento, quais pratos tiveram maior quantidade vendida e como as formas de pagamento contribuíram para o valor total movimentado. O cálculo do ticket médio por categoria também contribuiu para avaliar quais grupos de produtos apresentaram maior valor médio por unidade vendida.

Os gráficos facilitaram a interpretação visual dos resultados. O gráfico de linha demonstrou a evolução das vendas ao longo do tempo; o boxplot evidenciou a distribuição dos valores por categoria; o histograma mostrou a frequência dos valores de venda; o gráfico de colunas comparou o faturamento por categoria; e o gráfico de pizza apresentou a participação das formas de pagamento.

Conclui-se que o uso do RStudio e da linguagem R foi adequado para transformar uma planilha de vendas em informações organizadas, estatísticas e gráficas. O trabalho atende à proposta da Fase 2 ao apresentar carregamento da base, preparação dos dados, análise estatística, gráficos obrigatórios e conclusão baseada nos resultados obtidos.