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.
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)
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.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")
## # 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>
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.
names(vendas_restaurante)
## [1] "ID_Pedido" "Data" "Cliente" "Garçom"
## [5] "Categoria" "Prato" "Quantidade" "Valor_Unitario"
## [9] "Valor_Total" "Forma_Pagamento" "Status"
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"
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")))
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)
)
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" ...
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
##
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 |
As consultas iniciais permitem conhecer melhor a composição da base de dados, identificando pratos, categorias e formas de pagamento presentes na planilha.
| categoria |
|---|
| Bebidas |
| Japonesa |
| Lanches |
| Massas |
| Pizzas |
| Sobremesas |
| prato |
|---|
| Batata Frita Suprema |
| Cheesecake |
| Combinado Sushi |
| Fettuccine Alfredo |
| Hambúrguer Artesanal |
| Lasanha Bolonhesa |
| Petit Gateau |
| Pizza Calabresa |
| Refrigerante 2L |
| Suco Natural |
| forma_pagamento |
|---|
| Crédito |
| Dinheiro |
| Débito |
| PIX |
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 |
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.
| 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 |
| 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 |
| forma_pagamento | quantidade_total | valor_total |
|---|---|---|
| Crédito | 5 | 251.6 |
| PIX | 6 | 227.4 |
| Débito | 7 | 153.5 |
| Dinheiro | 1 | 47.9 |
| 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 |
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 |
O gráfico de linha apresenta a evolução do valor total das vendas ao longo das datas registradas na base.
O boxplot permite observar a distribuição dos valores totais das vendas por categoria, destacando variações e possíveis valores extremos.
O histograma apresenta a frequência dos valores totais das vendas, permitindo observar a concentração dos registros em diferentes faixas de valor.
O gráfico de colunas apresenta o faturamento total por categoria.
O gráfico de pizza apresenta a participação das formas de pagamento no faturamento total.
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.