PROJETO: Vendas em e-commerce no Brasil

Introdução

Atualmente as empresas tem utilizado diversas estratégias para conquistar novos clientes e cada vez mais aumentar suas vendas. Entre essas estratégias está o e-commerce, que proporciona praticidade e comodidade aos clientes e vendedores de diferentes localidades. Nesse cenário, se torna importante avaliar os resultados obtidos, considerando diversos aspectos.

Este Projeto realiza um estudo dos resultados obtidos com e-commerce, utilizando um data set público (Brazilian E-Commerce Public Dataset by Olist) ,disponibilizado no site Kaggle, com dados referentes a e-commerce realizado no Brasil durante os anos de 2016 a 2018 através da plataforma Olist Store.

Abordagem

A metodologia de análise será voltada para a identificação de aspectos relevantes contidos nos dados. Primeiramente será necessário visualizar todas as informações do dataset para poder filtrar as informações importantes. Em seguida, após identificar os dados relativos a cada Pedido individualmente serão selecionadas variáveis que permitam a comparação tanto em relação aos diversos períodos de tempo, quanto em relação as categorias dos produtos, e aos estados de compra e venda envolvidos.

Objetivos

O Projeto será desenvolvido considerando os seguintes objetivos:

1) Identificar regiões do pais onde ocorrem altos e baixos volumes de utilização de e-commerce nos diversos períodos analisados;
2) Identificar montante de compras/vendas em relação a períodos analisados;
3) Relacionar os resultados de compra/venda de acordo com o passar do tempo;
4) Identificar categorias de produtos mais comercializados em relação a períodos analisados;
5) Identificar faixa de preço de produtos em que ocorre maior comercialização.

Expectativas

Espera-se que, alcançados os objetivos, os resultados obtidos possam ser utilizados pelas empresas que fazem uso da modalidade de e-commerce para que identifiquem potenciais nichos de mercado. Além disso, será possível que as autoridades políticas gestoras dos estados brasileiros possam conhecer mais profundamente a respeito da movimentação financeira proporcionada pelo e-commerce, visto que existe incidência e arrecadação de impostos referente a circulação de mercadorias e serviços entre estados.

Pacotes requeridos

Para que não exista erros na execução dos códigos, é necessário utilizar os seguintes pacotes:

library(brazilmaps)
library(dplyr)
library(DT)
library(ggplot2)
library(kableExtra)
library(knitr)
library(sf)
library(tidyr)
library(tidyverse)
Pacote Função
brazilmaps Coordenadas geográficas do mapa do Brasil
dplyr Manipular dados
DT Permite a visualização de dados em forma de tabelas paginadas
ggplot2 Construção de gráficos
kableExtra Permitir ajuste das tabelas
knitr Facilitar a criação de tabelas
sf Permite trabalhar com objetos de classe ‘simple feature’, como mapas
tidyr Formatar dados
tidyverse Formatar dados

Raw data (Importação e Preparação)

O início do processo de obtenção dos dados se dá com a importação das tabelas que continham informações relevantes para o Projeto, disponibilizadas no formato csv.

ocd<-read.table(file="olist_customers_dataset.csv",header=TRUE,sep=",")
ood<-read.table(file="olist_orders_dataset.csv",header=TRUE,sep=",")
ooid<-read.table(file="olist_order_items_dataset.csv",header=TRUE,sep=",")
oopd<-read.table(file="olist_order_payments_dataset.csv",header=TRUE,sep=",")
opd<-read.table(file="olist_products_dataset.csv",header=TRUE,sep=",")
osd<-read.table(file="olist_sellers_dataset.csv",header=TRUE,sep=",")

Como os dados foram disponibilizados de forma separada, foi necessário realizar a união(merge) conforme a correspondência e relação entre eles. Foram então utilizados inicialmente dados da compra, produtos, vendedores e entrega.

#selecionando apenas dados importantes do df opd
opd1<-select(opd,product_id,product_category_name)

#### MERGE DAS TABELAS ####
#Merge de tabelas - Etapa 1:
#Nessa etapa são utilizados os dados de compras e produtos
combinado1<-merge(x=ooid,
                  y=opd1,
                  by="product_id",all=F)

#Merge de tabelas - Etapa 2:
#Nessa etapa são adicionados os dados de vendedores 
combinado2<-merge(x=combinado1,
                  y=osd,
                  by="seller_id",all=F)

#Merge de tabelas - Etapa 3:
#Nessa etapa são adicionados dados da compra e entrega
combinado3<-merge(x=combinado2,
                  y=ood,
                  by="order_id",all=F)

Para ser possível analisar os dados conforme dados temporais, foi necessário organizar as informações de data. Nesse caso, levando em conta apenas a data da compra.

#organizando informações de data 
combinado3<-combinado3%>%
  separate(col = "order_purchase_timestamp",
           into = c("Data", "Hora"),
           sep = " ")
#obtendo anos e meses
combinado3<-combinado3%>%
  separate(col = "Data",
           into = c("Ano","Mes", "Dia"),
           sep = "-")
#transformando os dados de meses e ano em fator
combinado3$Ano<-as.factor(combinado3$Ano)
combinado3$Mes<-as.factor(combinado3$Mes)

Em seguida foram adicionados dados de pagamento.

#Merge de tabelas - Etapa 4
#Nessa etapa são adicionados dados de pagamento
combinado4<-merge(x=combinado3,
                  y=oopd,
                  by="order_id",all=F)

Após a análise dos dados combinados até essa etapa, percebeu-se que deve-se atentar para as seguintes observações:

  1) Observação 1: Na coluna 'order_id' são apresentadas todos os pedidos de compra. Cada pedido recebe um código único;
  2) Observação 2: Linhas com valores iguais de 'order_id', 'order_item_id' e 'product_id', apresentam nas colunas 'price' e 'freight_value' o preço e frete totais do pedido; Nessas linhas existe mudança de dados apenas nas colunas referentes a 'payment';
  3) Observação 3: Linhas com valores iguais de 'order_id', mas com valores diferentes de 'order_item_id' apresentam nas colunas 'price' e 'freight_value' o preço e frete apenas do item desse pedido. Ou seja, para obter o total do pedido, esses valores devem ser somados.

Até essa etapa foram adicionados os principais dados em relação a ‘Todos os Pedidos’ realizados. Para facilitar, foram removidas variáveis que não seriam utilizadas para análises. Além disso, verificou-se que não existia NAs.

##Selecionando apenas colunas importantes
combinado4<-combinado4%>%select(-shipping_limit_date,-seller_zip_code_prefix,-seller_city,-Dia,-Hora,-order_approved_at,-order_delivered_carrier_date,-order_delivered_customer_date,-order_estimated_delivery_date)

#Verificando presença de NAs
sum(is.na(combinado4))

A próxima etapa foi obter um dataset contendo dados de ‘Pedidos dos consumidores registrados’. Além disso, verificou-se que não existia NAs.

#Merge de tabelas - Etapa 5:
#Nessa etapa só são utilizadas as compras com consumidores registrados
#Esse data set só é utilizado para análises envolvendo Estados.
combinado5<-merge(x=combinado4,
                  y=ocd,
                  by="customer_id",all=F)

#Verificando presença de NAs
sum(is.na(combinado5))

Após adicionar os dados de consumidores verificou-se que grande parte dos pedidos foram realizados por consumidores cujos dados não estavam presentes no dataset ‘ocd’, que possui, dentre outras, informações sobre os estados brasileiros em que foram realizados os Pedidos de compra. Então optou-se por utilizar esses dados apenas para fazer analise comparativa por estados. Serão feitas então, separadamente, duas análises: uma de acordo com ‘Todos os Pedidos’ e a outra com ‘Pedidos com Consumidores registrados’.

A intenção é que com a análise de ‘Todos os Pedidos’ se obtenha dados que retratem de forma mais fiel o montante de vendas, independente se existe de registro completo do Consumidor. Por outro lado, os dados de ‘Pedidos com Consumidores registrados’ permitem realizar o comparativo entre os diversos estados.

Raw data (Todos os Pedidos)

Para obter o dataset de ‘Todos os Pedidos’, logo após a Etapa 4 de Merge das tabelas foi adicionada uma variável (‘venda_com_frete’) para armazenar o valor total do item da compra. Em seguida, foi feito um tratamento baseado nas Observações 2 e 3, e ao final mantidas apenas as variáveis de interesse. Além disso, foram considerados apenas Pedidos efetivamente realizados.

##Selecionando os dados de interesse 
levels(combinado4$order_status)

##Selecionando os dados de interesse 
levels(combinado4$order_status)
combinado_4.1<-combinado4%>%
  filter(order_status!="canceled",order_status!="unavailable")%>%
  mutate(venda_com_frete = price + freight_value)%>%
  #Seleção de variáveis (baseado nas Observações 2 e 3) 
  select(-freight_value,-order_status,-payment_type,-payment_sequential,-payment_installments,-payment_value,-customer_id,-seller_id)
#Remoção de linhas duplicadas (baseado nas Observações 2 e 3) 
dup1<-which(duplicated(combinado_4.1))
combinado_4.2<-combinado_4.1[-dup1,]

#datatable(combinado_4.2)

Logo após foram identificados quais períodos(ano,mês) os dados estavam retratando, a fim de definir os períodos mais coerentes.

#Análise do período de levantamento de dados a ser considerado
dados2016<-combinado_4.2%>%
  filter(Ano==2016)%>%
  group_by(Mes)%>%
  summarise(Teste=sum(venda_com_frete))
dados2017<-combinado_4.2%>%
  filter(Ano==2017)%>%
  group_by(Mes)%>%
  summarise(Teste=sum(venda_com_frete))
dados2018<-combinado_4.2%>%
  filter(Ano==2018)%>%
  group_by(Mes)%>%
  summarise(Teste=sum(venda_com_frete))
#No ano de 2017, o dataset(raw) apresenta dados dos 12 meses do ano;
#No ano de 2018, o dataset(raw) apresenta dados apenas de Janeiro a Agosto; 
#No ano de 2016, o dataset(raw) apresenta dados apenas do mês de Setembro,Outubro e Dezembro; 

Raw data (Pedidos com Consumidores registrados)

Para obter o dataset de ‘Pedidos com consumidores registrados’, após a Etapa 5 de Merge das tabelas foi adicionada uma variável (‘venda_com_frete’) para armazenar o valor total do item da compra. Em seguida, foi feito um tratamento baseado nas Observações 2 e 3, e ao final mantidas apenas as variáveis de interesse. Além disso, foram considerados apenas Pedidos efetivamente realizados.

##Selecionando os dados de interesse 
levels(combinado5$order_status)

##Selecionando os dados de interesse 
levels(combinado5$order_status)
combinado_5.1<-combinado5%>%
  filter(order_status!="canceled",order_status!="unavailable")%>%
  mutate(venda_com_frete = price + freight_value)%>%
  select(-price,-freight_value,-order_status,-customer_id,-customer_unique_id, seller_id,-payment_type,-payment_sequential,-payment_installments,-payment_value,-customer_zip_code_prefix,-customer_city)
#Remoção de linhas duplicadas (conforme Observações 2 e 3) 
dup1<-which(duplicated(combinado_5.1))
combinado_5.2<-combinado_5.1[-dup1,]

#datatable(combinado_5.2)

Logo após foram identificados quais períodos(ano,mês) os dados estavam retratando, a fim de definir os períodos mais coerentes.

#Análise do período de levantamento de dados a ser considerado
dados2016<-combinado_5.2%>%
  filter(Ano==2016)%>%
  group_by(Mes)%>%
  summarise(Teste=sum(venda_com_frete))
dados2017<-combinado_5.2%>%
  filter(Ano==2017)%>%
  group_by(Mes)%>%
  summarise(Teste=sum(venda_com_frete))
dados2018<-combinado_5.2%>%
  filter(Ano==2018)%>%
  group_by(Mes)%>%
  summarise(Teste=sum(venda_com_frete))
#No ano de 2017, o dataset(raw) apresenta dados dos 12 meses do ano;
#No ano de 2018, o dataset(raw) apresenta dados apenas de Janeiro a Agosto; 
#No ano de 2016, o dataset(raw) apresenta dados apenas do mês de Outubro; 

Clean data

Foram obtidos então dois datasets: o primeiro referente a todos os Pedidos, e o segundo referente apenas a Pedidos realizados por consumidores cadastrados. Vale ressaltar que o dataset original só apresenta informação do estado de compra para os Pedidos de consumidores cadastrados (cadastro completo). Tendo em vista permitir uma análise mais coerente dos dados, será definido para análise o período dos meses de Janeiro a Agosto (anos 2017 e 2018), que é um período comum aos dois dataset obtidos.

Na tabela abaixo são mostradas informações a respeito das variáveis presentes nos dataset.
Variável Tipo Descrição
order_id character N° do Pedido
product_id character Código do produto
order_item_id integer Ordem do produto no Pedido
product_category_name character Categoria do produto
seller_state character Estado de origem do vendedor/loja
Ano integer Ano em que foi realizado o Pedido
Mes character Mês em que foi realizado o Pedido
price numeric Preço do produto
venda_com_frete numeric Valor(R$) de cada item do Pedido, incluindo o frete
customer_state character Estado de origem do consumidor

Abaixo são mostrados os dois dataset.

Clean data (Todos os Pedidos)

clean_data_1<-combinado_4.2%>%
filter((Ano==2017|Ano==2018)&(Mes=="01"|Mes=="02"|Mes=="03"|Mes=="04"|Mes=="05"|Mes=="06"|Mes=="07"|Mes=="08"))

Clean data (Pedidos com Consumidores cadastrados)

clean_data_2<-combinado_5.2%>%
filter((Ano==2017|Ano==2018)&(Mes=="01"|Mes=="02"|Mes=="03"|Mes=="04"|Mes=="05"|Mes=="06"|Mes=="07"|Mes=="08"))

Data subsets

A fim de permitir alcançar os objetivos específicos, foram obtidos datasets com os dados e variáveis importantes para cada objetivo.

Preço dos produtos

A fim de identificar a faixa de preço de produtos em que são realizadas mais compras, foi obtido um data subset com os dados de Nome(‘product_id’) e Preço(‘price’) de cada produto comercializado nos anos de 2017 e 2018. Esses dados permitirão analisar, através de histograma a frequência de compra de acordo com o preço.

precos<-combinado_4.2%>%
  filter(Ano!=2016)%>%
    select(product_id,price)
pdup<-which(duplicated(precos))
precos<-precos[-pdup,]

datatable(precos, caption = "Preço dos produtos comercializados",options = list(searching = FALSE,pageLength = 10, scrollX = T))

Vendas por Categoria de produto

Analisando Todos os Pedidos, foi possível obter para cada categoria o total de vendas realizadas, para cada ano. Esse data subset permitirá identificar as categorias mais comercializadas, por exemplo, também em relação aos anos.

#Total por categoria de produto / ano
total_categoria<-clean_data_1%>%
  group_by(product_category_name,Ano)%>%
  summarize(Total_venda=sum(venda_com_frete))%>%
  arrange(Ano,desc(Total_venda))

datatable(total_categoria, caption = "Total de vendas por categoria",options = list(searching = FALSE,pageLength = 10, scrollX = T))

Compras por mês

Analisando Todos os Pedidos, foi possível obter para cada mês o total de compras realizadas, para cada ano. Esse data subset permitirá identificar os meses com maior volume de compras, por exemplo, também em relação aos anos.

#Compra por ano /mes
total_ano_mes<-clean_data_1%>%
  group_by(Ano,Mes)%>%
  summarize(Total_venda=sum(venda_com_frete))%>%
  arrange(Ano,Mes)

datatable(total_ano_mes, caption = "Total de compras por mês",options = list(searching = FALSE,pageLength = 10, scrollX = T))

Pedidos

Uma etapa essencial para iniciar as análises foi obter o valor total da compra de cada Pedido realizado. Primeiramente, foi obtido o data subset para ‘Todos os Pedidos’, e em seguida para os ‘Pedidos de Consumidores Registrados’.

Compra - Todos os Pedidos

#Total de venda por pedido - Todos os pedidos
total_pedido1<-clean_data_1%>%
  select(order_id,seller_state,Ano,Mes,venda_com_frete)%>%
  group_by(order_id,seller_state,Ano,Mes)%>%
  summarise(Total_venda=sum(venda_com_frete))

datatable(total_pedido1, caption = "Total de compra - 'Todos os Pedidos'",options = list(searching = FALSE,pageLength = 10, scrollX = T))

Compra - Pedidos de consumidores registrados

#Total de venda por pedido - Pedidos de consumidores registrados
total_pedido2<-clean_data_2%>%
  select(order_id,seller_state,customer_state,Ano,Mes,venda_com_frete)%>%
  group_by(order_id,seller_state,customer_state,Ano,Mes)%>%
  summarise(Total_venda=sum(venda_com_frete))

datatable(total_pedido2, caption = "Total de compra - ' Pedidos de consumidores registrados'",options = list(searching = FALSE,pageLength = 10, scrollX = T))

Compras por Estado

De posse do valor total de venda de cada Pedido de consumidor registrado, foi possível obter para cada estado o total de compras realizadas, para cada ano. Esse data subset permitirá identificar os estados com maior nível de compra, por exemplo, também em relação aos anos.

#Compra por estado
total_estados_compra<-total_pedido2%>%
  group_by(customer_state,Ano)%>%
  summarise(Total_compra=sum(Total_venda))%>%
  arrange(Ano,desc(Total_compra))
#códigos dos estados conforme IBGE
estados_codigos<-data.frame("Nome" = c("AC","AL","AP","AM","BA",
                                       "CE","DF","ES","GO","MA","MT",
                                       "MS","MG","PA","PB","PR","PE",
                                       "PI","RJ","RN","RS","RO","RR",
                                       "SC","SP","SE","TO"), 
                          "State" = c(12,27,16,13,29,23,53,32,52,21,51,
                                   50,31,15,25,41,26,22,33,24,43,11,
                                   14,42,35,28,17))
#Adicionando uma coluna com os códigos dos estados
total_estados_compra<-merge(x=total_estados_compra,
                     y=estados_codigos,
                     by.x=c("customer_state"),
                     by.y=c("Nome"),
                     all=F)

datatable(total_estados_compra, caption = "Total de compra por estado",options = list(searching = FALSE,pageLength = 10, scrollX = T))

Vendas por Estado

De posse do valor total de venda de cada Pedido de consumidor registrado, foi possível obter para cada estado o total de vendas realizadas, para cada ano. Esse data subset permitirá identificar os estados com maior nível de venda, por exemplo, também em relação aos anos.

#Venda por estado 
total_estados_venda<-total_pedido2%>%
  group_by(seller_state,Ano)%>%
  summarise(Total_venda=sum(Total_venda))%>%
  arrange(Ano,desc(Total_venda))
#Adicionando uma coluna com os códigos dos estados
total_estados_venda<-merge(x=total_estados_venda,
                     y=estados_codigos,
                     by.x=c("seller_state"),
                     by.y=c("Nome"),
                     all=F)

datatable(total_estados_venda, caption = "Total de vendas por estado",options = list(searching = FALSE,pageLength = 10, scrollX = T))

Visualização dos resultados

Através dos data subsets foi possível obter resultados e gráficos de acordo com o objetivo.

Preço dos produtos

A fim de avaliar a faixa de preços mais frequente dos produtos comercializadosde nos anos de 2017 e 2018 foi elaborado um histograma relacionando a densidade de probabilidade de acordo com a faixa de preço.

#Histograma
pvenda<-precos$price
hist(pvenda, col="orange", freq=F,breaks=seq(0,7000,100), main="Histograma de Preços", ylab="Densidade", xlab="Preço (R$)")

Percebe-se que a maior parte dos produtos comercializados se encontra na faixa de preço R$0 - R$100.

Vendas ao longo do tempo

A fim de comparar os níveis de venda com o passar do tempo, foi elaborado um gráfico de barras em que se compara as vendas durante os meses de Janeiro a Agosto para os anos de 2017 e 2018.

#Gráfico compra por ano /mes
colors = c("blue", "green")
dados <- c("2017","2018")
meses<-c("Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago")
dados_1_2017<-filter(total_ano_mes,Ano==2017)
dados_1_2018<-filter(total_ano_mes,Ano==2018)
total_1_2017<-sum(dados_1_2017$Total_venda)
total_1_2018<-sum(dados_1_2018$Total_venda)
# Criar a matriz dos valores
Values <- matrix(c(dados_1_2017$Total_venda/1000,dados_1_2018$Total_venda/1000), nrow = 2, ncol = 8, byrow = TRUE)
par(mar = c(4, 4, 2, 4),xpd=TRUE)   #c(4, 15, 2.5, 8)
barplot(Values, main = "Total de vendas", names.arg = meses,
        xlab = "Mes", ylab =
          "mil reais", col = colors,
        beside = T)
legend("topright", pch=c(15,15), col=colors,cex=0.7,inset=c(0,0),
       legend=dados,bty ="o")

Percebe-se que para cada mês houve um aumento do montante de vendas em 2018 se comparado a 2017. Além disso, o montante de vendas em 2018 foi de aproximadamente 7.89 milhões de reais, 143% maior que em 2017.

A média de vendas por mês em 2017 foi de aproximadamente 406.65 mil reais. Já em 2018, foi de 986.16 mil reais.

Para analisar a distribuição de vendas entre os meses, foi elaborado um gráfico de pizza, indicando a porcentagem de venda em cada mês, nos anos de 2017 e 2018.

qnt1<-dados_1_2017$Total_venda
pct1<-round((qnt1/sum(qnt1))*100)
lbls<-paste(pct1,"%",sep="")
pie(qnt1,lbls,main="Vendas por mês - 2017",col=rainbow(length(dados_1_2017$Total_venda)))
legend("right",
       legend=c("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto"),
       cex=0.8,fill=rainbow(length(dados_1_2017$Total_venda)))

qnt2<-dados_1_2018$Total_venda
pct2<-round((qnt2/sum(qnt2))*100)
lbls<-paste(pct2,"%",sep="")
pie(qnt2,lbls,main="Vendas por mês - 2018",col=rainbow(length(dados_1_2018$Total_venda)))

legend("right",
       legend=c("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto"),
       cex=0.8,fill=rainbow(length(dados_1_2018$Total_venda)))

Percebe-se que em relação a 2017, em 2018 houve maior homogeneidade no total de vendas de cada mês.

Vendas por Categoria de produtos

A fim de identificar as Categorias de produtos mais comercializados, foram elaborados gráficos de barras, em que se compara o total de vendas por Categoria nos anos de 2017 e 2018. Tendo em vista a grande variedade de categorias, optou-se por elaborar uma lista Top-10 (10 Categorias com os maiores volumes de vendas).

#Gráfico venda por categoria 
par(mar = c(10, 4, 2.5, 0),xpd=TRUE)
dados_4_2017<-filter(total_categoria,Ano==2017)
dados_4_2018<-filter(total_categoria,Ano==2018)
barplot((dados_4_2017$Total_venda[1:10])/1000, main = "TOP 10 - Vendas por Categoria - 2017", names.arg = dados_4_2017$product_category_name[1:10], 
        ylab = "mil reais", ylim=c(0,300),
        las=2, cex.axis=0.8, cex.lab =1, cex=0.8,
        col = "blue")

par(mar = c(10, 4, 2.5, 0),xpd=TRUE)
barplot((dados_4_2018$Total_venda[1:10])/1000, main = "TOP 10 - Vendas por Categoria - 2018", names.arg = dados_4_2018$product_category_name[1:10], 
        ylab = "mil reais", ylim=c(0,1000),
        las=2, cex.axis=0.8, cex.lab =1, cex=0.8,
        col = "green")

Percebe-se que a Categoria que teve maior volume de vendas tanto em 2017 quanto 2018 foi ‘beleza_saude’.

Compras por Estado

A fim de identificar os Estados em que foram realizados mais compras, foram elaborados gráficos de barras, em que se compara as vendas dos diversos Estados nos anos de 2017 e 2018.

#Gráfico compra estado 
#par(mar = c(4, 8, 2.5, 0),xpd=TRUE)
dados_2_2017<-filter(total_estados_compra,Ano==2017)
#adicionando coordenadas com a biblioteca 'brazilmaps'
dados_2_2017<-merge(x=get_brmap("State"),
                      y=dados_2_2017,
                      by="State",
                      all=T)
dados_2_2017<-dados_2_2017%>%arrange(desc(Total_compra))
#grafico de barras
barplot(dados_2_2017$Total_compra/1000, main = "Total de compras - 2017", names.arg = dados_2_2017$customer_state,
        xlab = "Estado", ylab = "mil reais", ylim=c(0,500),
        las=2, cex.axis=0.8, cex.lab =1, cex=0.7,
        col = rainbow(length(dados_2_2017$customer_state)))

dados_2_2018<-filter(total_estados_compra,Ano==2018)
#adicionando coordenadas com a biblioteca 'brazilmaps'
dados_2_2018<-merge(x=get_brmap("State"),
                      y=dados_2_2018,
                      by="State",
                      all=T)
dados_2_2018<-dados_2_2018%>%arrange(desc(Total_compra))
barplot(dados_2_2018$Total_compra/1000, main = "Total de compras - 2018", names.arg = dados_2_2018$customer_state,
        xlab = "Estado", ylab = "mil reais", ylim=c(0,1400),
        las=2, cex.axis=0.8, cex.lab =1, cex=0.7,
        col = rainbow(length(dados_2_2018$customer_state)))

A fim de identificar as regiões do país onde ocorrem os maiores níveis de compra, foi utilizado o mapa do Brasil, em que os estados estão coloridos conforme o nível. Está sendo utilizada escala ‘log na base 10’ para melhorar a aparência do espectro de cores.

##Mapa 2017
dados_2_2017%>% 
  ggplot() +
  geom_sf(aes(fill = log10(Total_compra))) +
  ggtitle("Compras pela plataforma o-list no Brasil em 2017") +
  scale_fill_continuous(name = "Total em Compras(R$) \n [log na base 10]", low = 'white', high = 'blue',
                        na.value = 'white') +
  theme(panel.grid = element_line(colour = "transparent"),
        panel.background = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank())

##Mapa 2018
dados_2_2018%>% 
  ggplot() +
  geom_sf(aes(fill = log10(Total_compra))) +
  ggtitle("Compras pela plataforma o-list no Brasil em 2018") +
  scale_fill_continuous(name = "Total em Compras(R$) \n [log na base 10]", low = 'white', high = 'blue',
                        na.value = 'white') +
  theme(panel.grid = element_line(colour = "transparent"),
        panel.background = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank())

Percebe-se nitidamente que o estado onde foram realizados mais Pedidos em 2017 e 2018 foi ‘SP’. Em 2018, ‘SP’ apresentou um aumento de 180% no volume de compras em relação a 2017.

Vendas por Estado

A fim de facilitar a visualização por parte das autoridades de cada estado, foi obtida a seguinte tabela, em que são apresentados os valores totais de venda de 2017 e 2018 relativos a ‘Todos os Pedidos’.

Tabela de Vendas por estado

dados_3_2017<-filter(total_estados_venda,Ano==2017)
tabelav1 <- data.frame("Estado" = dados_3_2017$seller_state,"Total_2017" = dados_3_2017$Total_venda)
tabelav1<-arrange(tabelav1,Estado)
dados_3_2018<-filter(total_estados_venda,Ano==2018)
tabelav2 <- data.frame("Estado" = dados_3_2018$seller_state, "Total_2018" = dados_3_2018$Total_venda)
tabelav2<-arrange(tabelav2,Estado)
#Obtendo tabela unica / removendo NAs
tabelav<-merge(x=tabelav1,
               y=tabelav2,
               by="Estado",
               all=T)
tabelav[is.na(tabelav)]<-0
#Gerando a tabela
kable(tabelav)%>%
  kable_styling(c("striped","bordered"), full_width =F)
Estado Total_2017 Total_2018
AM 135.25 0.00
BA 17592.30 36039.72
CE 2135.38 6041.71
DF 9767.40 22211.18
ES 8803.11 10873.81
GO 6384.48 17324.95
MA 0.00 21905.56
MG 127484.51 240243.56
MS 1817.56 1122.68
MT 135.91 4832.04
PB 2117.03 2245.36
PE 1997.66 38888.01
PI 0.00 922.64
PR 129391.17 307343.35
RJ 50037.14 239037.86
RN 3172.94 1153.92
RO 1485.01 0.00
RS 38577.54 105942.98
SC 74750.09 161832.25
SE 128.08 522.56
SP 937113.86 2235319.70

Para visualizar as diferenças entre os diferentes estados foi elaborado os seguintes gráficos de barras:

#Gráfico venda estado - 2017
par(mar = c(8, 4, 2.5, 0),xpd=TRUE)
tabelav3<-tabelav%>%arrange(desc(Total_2017))
barplot(tabelav3$Total_2017/1000, main = "Vendas por estado - 2017", names.arg = tabelav3$Estado,
        xlab = "Estado", ylab = "mil reais", ylim=c(0,1000),
        las=2, cex.axis=0.8, cex.lab =1, cex=0.7,
        col = rainbow(length(tabelav3$Estado)))

#Gráfico venda estado - 2018
par(mar = c(8, 4, 2.5, 0),xpd=TRUE)
tabelav4<-tabelav%>%arrange(desc(Total_2018))
barplot(tabelav4$Total_2018/1000, main = "Vendas por estado - 2018", names.arg = tabelav4$Estado,
        xlab = "Estado", ylab = "mil reais", ylim=c(0,2500),
        las=2, cex.axis=0.8, cex.lab =1, cex=0.7,
        col = rainbow(length(tabelav4$Estado)))

A fim de identificar as regiões do país onde ocorrem os maiores níveis de venda, foi utilizado o mapa do Brasil, em que os estados estão coloridos conforme o nível. Está sendo utilizada escala ‘log na base 10’ para melhorar a aparência do espectro de cores.

##Mapa 2017
#adicionando coordenadas com a biblioteca 'brazilmaps'
dados_3_2017<-merge(x=get_brmap("State"),
                      y=dados_3_2017,
                      by="State",
                      all=T)
#mapa do Brasil
dados_3_2017%>% 
  ggplot() +
  geom_sf(aes(fill = log10(Total_venda))) +
  ggtitle("Vendas pela plataforma o-list no Brasil em 2017") +
  scale_fill_continuous(name = "Total em Vendas(R$) \n [log na base 10]", low = 'white', high ='red',na.value = 'white') +
  theme(panel.grid = element_line(colour = "transparent"),
        panel.background = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank())

##Mapa 2018
#adicionando coordenadas com a biblioteca 'brazilmaps'
dados_3_2018<-merge(x=get_brmap("State"),
                      y=dados_3_2018,
                      by="State",
                      all=T)
#mapa do Brasil
dados_3_2018%>% 
  ggplot() +
  geom_sf(aes(fill = log10(Total_venda))) +
  ggtitle("Vendas pela plataforma o-list no Brasil em 2018") +
  scale_fill_continuous(name = "Total em Vendas(R$) \n [log na base 10]", low = 'white', high = 'red',na.value = 'white') +
  theme(panel.grid = element_line(colour = "transparent"),
        panel.background = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank())

Percebe-se nitidamente que o estado onde foram realizados mais vendas em 2017 e 2018 foi ‘SP’. Em 2018, ‘SP’ apresentou um aumento de 139% nas vendas em relação a 2017.

Conclusões

Através desse Projeto foi possível obter informações importantes a respeito de e-commerce realizado através da plataforma Olist Store durante os meses de Janeiro a Agosto dos anos de 2017 e 2018.

Metodologia

A metodologia adotada consistiu em realizar as seguintes etapas: importação e preparação dos dados, divisão em data subsets de acordo com os objetivos definidos, e visualização dos dados. Inicialmente, buscou-se identificar o valor total de cada Pedido realizado, e posteriormente estratificando os dados: por categoria de produtos, por meses, por anos, por estados de compra/venda.

Resultados alcançados

Após a análise dos 69347 pedidos registrados pela plataforma, com uma movimentação de aproximadamente 11.14 milhões de reais nos anos de 2017 e 2018 foi possível identificar que houve avanço nos níveis de venda e compra via e-commerce. De maneira geral, em 2018 percebeu-se um aumento nos níveis de compra e venda se comparado com 2017. Tais aumentos se mostraram tanto em relação às diferentes categorias de produtos, quanto em relação aos períodos de ano e estados em que foram realizados os pedidos.

Foi possível observar que a maior parte das vendas é concentrada em produtos da faixa de preço até R$100. Das 72 categorias de produtos comercializados, a categoria que teve maior volume de vendas foi ‘beleza_saude’. O estado em que foi realizado o maior volume de vendas foi ‘SP’, o que podia ser esperado, já que esse estado é um dos pólos comerciais mais importantes do Brasil. Além disso foi possível identificar para cada estado o montante de vendas realizados em 2017 e 2018.

Todos esses resultados podem ser utilizados pelas lojas vendedoras para identificar nichos de mercado em relação a categorias de produtos, estados, etc. Além disso, pode auxiliar as autoridades gestoras dos estados nas previsões de arrecadação de imposto sobre circulação de mercadorias e serviços.

Limitações

A análise poderia ser melhor desenvolvida se o dataset original tivesse disponibilizado os dados dos consumidores em todos os pedidos. Devido nem todos os consumidores estarem com dados cadastrados na plataforma isso representou uma limitação na análise de vendas e compras por estado. Além disso, não consta dados para todos os meses dos anos de 2016, 2017 e 2018. O ideal seria que fosse disponibilizado os dados dos 12 meses de cada ano para assim ser possível obter uma melhor análise, e identificar tendências em relação às vendas de e-commerce.

Análises futuras

Possíveis análises que possam vir a ser realizadas, mas que não foram abordadas nesse Projeto, poderiam ser as seguintes: análise individual para cada estado, baseando-se, por exemplo, nas categorias de produtos, meses do ano, etc.; contribuição do frete no valor final do pedido em relação aos estados.