Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais
Alura > Cursos de Data Science > Cursos de Data Science > Conteúdos de Data Science > Primeiras aulas do curso R para Data Science: aplicando Data Visualization com ggplot2

R para Data Science: aplicando Data Visualization com ggplot2

Conhecendo os dados - Apresentação

Você já pensou em criar gráficos utilizando os pacotes do R e adequá-los ao seu tipo de público? Quer ter um novo projeto em seu portfólio de dados? Trabalharemos nisso ao longo deste curso sobre visualização de dados utilizando a linguagem R e o ggplot2!

Eu sou o Afonso Rios, instrutor da Escola de Dados da Alura, e te dou boas-vindas a esta jornada.

Audiodescrição: Afonso se descreve como um homem de pele morena, barba preta, cabelos lisos curtos castanho-escuros, e olhos castanhos-escuros. Ele veste uma camisa preta com o logotipo verde da Escola de Dados, e ao fundo, há uma parede azul, cinza e branca, iluminada em gradiente azul, com uma porta de madeira escura à direita e alguns quadros.

O que vamos aprender?

Neste curso, atuaremos como pessoas cientistas de dados juniores pleiteando uma vaga no time de dados da Zoop, uma grande varejista que atende todo o país por meio do seu e-commerce.

Como treinamento, utilizaremos a visualização de dados na linguagem R para responder a questionamentos, seja sobre o perfil dos clientes, ou sobre o histórico de vendas no ano de 2023.

Para isso, iremos explorar os dados e investigar visuais que possam ser utilizados para responder a determinadas dúvidas. Vamos construir visuais e trazer insights para a apresentação dos resultados da Zoop. Além disso, trabalharemos no refinamento dos visuais, utilizando storytelling (narrativa) e técnicas de melhoramento de estética de gráficos.

Por fim, salvaremos os visuais da forma adequada, de modo que eles possam ser apresentados às partes interessadas posteriormente. Faremos tudo isso seguindo as premissas, de acordo com as lideranças, para o nosso treinamento com foco na vaga do time de dados.

Quais são os requisitos?

Para acompanhar o curso da melhor forma, é importante ter conhecimento sobre a linguagem R e saber o básico sobre pacotes no Tidyverse, como ggplot2, dplyr, readr e lubridate.

Conclusão

Alinhadas as nossas expectativas, podemos dar início ao nosso projeto!

Conhecendo os dados - Obtendo os dados

Você, como pessoa cientista de dados júnior, está passando por um treinamento para avaliar seus conhecimentos em análise de dados, visando trabalhar no time de dados da Zoop, uma grande empresa varejista que opera em todo o país por meio do seu e-commerce.

O desafio é extrair dados de clientes e vendas, com o objetivo de construir visuais que contribuam para a apresentação dos resultados da Zoop em 2023. Para isso, precisamos responder a uma série de questionamentos, utilizando visuais para construir o storytelling da Zoop.

Conhecendo os dados

O time de analistas utiliza a linguagem R para realizar as análises dos dados da empresa. Portanto, é necessário ter conhecimento dessa linguagem e utilizar a biblioteca ggplot2 para construir os visuais necessários, criando todo o storytelling da empresa com eles.

Para seguir este treinamento, utilizaremos um documento quarto com o passo a passo de como construir os visuais, a fim de ajudar o time de dados.

Importando os pacotes do projeto

A primeira etapa do projeto é a importação dos pacotes.

Se você passou pela atividade Preparando o ambiente desta aula, o projeto já está no repositório e foi realizada a instalação das bibliotecas necessárias.

Nesse caso, importaremos bibliotecas como ggplot2, dplyr, readr, lubridate e scales. Essas são bibliotecas de visualização, manipulação e leitura de dados, manipulação de datas, e formatação de variáveis. Ao executar a célula de código, trazemos as bibliotecas para o projeto.

# library(tidyverse)
library(ggplot2)
library(dplyr)
library(readr)
library(lubridate)
library(scales)

Obtendo os dados

Após importar os pacotes do R, podemos partir para a obtenção dos dados, coletando tanto os dados de clientes quanto de vendas. Para isso, declaramos url_vendas para trazer os dados de vendas, que estão na pasta "dados", no arquivo zoop_vendas.csv; e url_clientes para trazer dados de clientes, do arquivo zoop_clientes.csv também localizado na pasta "dados.

url_vendas = "dados/zoop_vendas.csv"
url_clientes = "dados/zoop_clientes.csv"

Criando a tabela vendas

Executando este código, importamos os dados para o caminho dos dados, para, então, trazê-los para as respectivas tabelas de clientes e vendas. Começaremos com a tabela de vendas.

Em uma nova célula, definimos a variável vendas e utilizamos o operador <-, que atribui valores no R. É dessa forma que conseguimos passar valores para variáveis.

Usaremos a função read_csv() da biblioteca readr para ler uma base de dados e transformá-la em um tibble, que é um DataFrame mais estilizado, com definições de colunas mais assertivas.

Para a função read_csv(), passaremos primeiro a variável url_vendas que declaramos. Além disso, vamos definir o parâmetro show_col_types como FALSE, pois queremos apenas a tabela.

Por fim, utilizamos head(vendas) para visualizar apenas os primeiros registros da tabela.

vendas <- read_csv(url_vendas, show_col_types = FALSE)
head(vendas)

Retorno da célula:

ID_compradatahorariocategoriapreco_unitarioquantidadefretemetodo_pagamento
62023-01-0320:40:00Tecnologia899.194713.26Boleto
52023-01-0321:48:00Casa/Móveis115.9010.00PIX
92023-01-0317:08:00Beleza/Saúde68.90213.78Crédito
42023-01-0314:29:00Casa/Móveis80.90540.45PIX
82023-01-0318:02:00Beleza/Saúde165.0040.00PIX
22023-01-0318:42:00Tecnologia2028.4851724.37PIX

Executando este código, é retornada uma tabela com colunas como: ID_compra, data, horario, categoria, preco_unitario, entre outras necessárias para análise.

Criando a tabela clientes

Após ler os dados de vendas, vamos para a tabela de clientes.

Utilizaremos um código similar, definindo a variável clientes seguida de <- para atribuir o método read_csv(), que será responsável por ler url_clientes. Além disso, passaremos show_col_types = FALSE, e usaremos glimpse(clientes) para exibir a estrutura dos dados.

clientes <- read_csv(url_clientes, show_col_types = FALSE)
glimpse(clientes)

Retorno da célula:

Rows: 6,169
Columns: 9
$ ID_compra        <dbl>; 904, 4613, 5579, 2405, 2485, 756, 3020, 2390, 3957, 5…
$ ID_cliente       <dbl>; 8972, 5120, 1847, 2846, 2715, 9555, 3793, 4903, 3413,…
$ cidade           <chr>; "Natal", "São Paulo", "São Paulo", "São Paulo", "Salv…
$ uf               <chr>; "Rio Grande do Norte", "São Paulo", "São Paulo", "São…
$ regiao           <chr>; "Nordeste", "Sudeste", "Sudeste", "Sudeste", "Nordest…
$ idade            <dbl>; 49, 49, 24, 38, 30, 46, 32, 26, 30, 28, 25, 31, 40, 4…
$ sexo_biologico   <chr>; "Masculino", "Feminino", "Feminino", "Feminino", "Fem…
$ cashback         <chr>; "Não", "Não", "Não", "Sim", "Não", "Não", "Sim", "Não…
$ avaliacao_compra <dbl>; 9, 9, 8, 7, 10, 7, 9, 9, 10, 8, 7, 10, 9, 8, 8, 7, 10…

Dessa forma, conseguimos tanto criar a tabela de clientes, quanto visualizar a estrutura. No canto superior direito do retorno código, temos a opção "Show in New Window", para abrir em outra página. Assim, é possível visualizar melhor as colunas e suas estruturas.

Nesse caso, temos colunas como: ID_compra; ID_cliente; cidade; e assim em diante. Além disso, temos o formato de cada valor, como double (<dbl>) e character (<chr>). O que mais importa na leitura com glimpse() é entender a estrutura das colunas e como elas estão representadas.

O método head() oferece uma visão mais tabular.

Questionamentos

Importadas as duas tabelas, que fazem parte de uma amostra do ano de 2023 na Zoop, usaremos elas como base para responder a questionamentos trazidos pela liderança no treinamento.

Esses questionamentos envolvem: o histórico de vendas, analisando o desempenho ao longo do ano, por exemplo; e o perfil de clientes, criando uma persona para entender quem gosta de usar e comprar na Zoop, e como elas utilizam os serviços que a empresa oferece.

Vendas

Perfil do cliente

É importante ter ideia de como responder aos questionamentos utilizando visuais. Aprenderemos visuais de diferentes formas e funcionalidades, trazendo tipos específicos de insight com cada um.

Conclusão

Agora que já importamos a base de dados e sabemos quais dados de clientes e vendas nós temos, partiremos para a próxima etapa: explorar os dados e verificar se será necessário tratá-los antes de começar a construir os visuais. Abordaremos esta etapa no próximo vídeo!

Conhecendo os dados - Tratando os dados

Queremos construir visuais para realizar a análise dos dados que já recebemos, mas antes disso, precisamos ter cuidado em observar se os dados estão no formato desejado para construí-los.

Tratando os dados

No vídeo anterior, fizemos a importação da base de dados de vendas e também de clientes da Zoop, e exploramos um pouco os dados, apenas para conferir o conteúdo das bases.

Agora, precisamos resolver algumas questões, como:

Tratando os dados da tabela vendas

Considerando nossos casos, de clientes e de vendas, os dados já estão limpos, ou seja, não há dados faltantes nem nulos. Nossas preocupações agora são as seguintes:

Começaremos pela tabela de vendas. De volta ao documento, iremos ler novamente a tabela vendas, apenas para conferir como está a estrutura e verificar o que precisa ou não ser feito.

vendas

Visualização dos dez primeiros registros da tabela. Para visualizá-la na íntegra, execute a célula de código na sua máquina.

ID_compradatahorariocategoriapreco_unitarioquantidadefretemetodo_pagamento
62023-01-0320:40:00Tecnologia899.194713.26Boleto
52023-01-0321:48:00Casa/Móveis115.9010.00PIX
92023-01-0317:08:00Beleza/Saúde68.90213.78Crédito
42023-01-0314:29:00Casa/Móveis80.90540.45PIX
82023-01-0318:02:00Beleza/Saúde165.0040.00PIX
22023-01-0318:42:00Tecnologia2028.4851724.37PIX
32023-01-0323:47:00Supermercado84.9050.00Crédito
12023-01-0300:13:00Eletrodomésticos2169.981138.64PIX
72023-01-0317:40:00Livros75.90518.98Crédito
112023-01-0421:50:00Casa/Móveis13.9053.48PIX

Nessa tabela, temos o ID da compra (ID_compra), a data (data) e o horário (horario) em formatos adequados, a categoria (categoria) no formato de caractere (<chr>), entre outras variáveis, como valores de número em double (<dbl>) na coluna frete.

Funcionou como esperado, mas quando construímos um visual e temos dados categóricos que se repetem, faz sentido transformá-los em factor, que é muito mais simples de manipular.

Transformando dados categóricos que se repetem em factor

Nesse caso, quais colunas podem ser modificadas?

Na coluna metodo_pagamento, com os valores "Boleto", "PIX" e "Crédito", conseguimos utilizar factor, e também temos o caso da categoria, que serão repetidas ao longo das compras.

É possível fazer essas alterações sem precisar passar em uma coluna por vez, pois há um código específico para isso. Em uma nova célula, vamos escrever o formato de ajuste de character para factor. Começaremos chamando a base de dados vendas, seguida de <- para modificar a tabela.

Na sequência, traremos vendas, para modificar sobre ela mesma e, basicamente, sobrescrever o valor. Usaremos o atalho "Ctrl + Shift + M" para usar o pipe (%>%), pois iremos aplicar uma função sobre a base de dados vendas: a mutate_if().

A função mutate_if() altera colunas de acordo com uma condição estabelecida entre parênteses. Nesse caso, a condição será a seguinte: se o formato for character (is.character), transformaremos em factor (as.factor).

Abaixo, chamamos vendas para conferir como ficou após a operação.

vendas <- vendas %>% 
  mutate_if(is.character, as.factor)
vendas

Ao executar o código, temos as colunas categoria e metodo_pagamento definidas como <fctr>. Assim, conseguimos fazer uma alteração interessante para trabalhar com os visuais.

Outra coisa que podemos notar é que temos as colunas de preco_unitario, quantidade, e frete, mas não temos uma variável correspondente ao valor total, que seria a combinação dessas três.

Achamos mais interessante trazer esse valor na tabela, pois, assim, já temos a coluna pronta para construir o visual. Dessa forma, não precisamos trabalhar com as 3 colunas de uma vez.

Adicionando a coluna total

Para adicionar uma nova coluna, em uma nova célula de código, faremos uma subscrição na base, então chamamos vendas, que irá receber vendas seguida de um pipe (%>%).

Logo abaixo, em vez do método mutate_if(), usaremos mutate(), porque não precisamos de uma condição para isso; queremos apenas criar uma coluna.

Essa coluna se chamará total e vai receber o preco_unitario multiplicado pela quantidade, e somado ao frete pago. O resultado disso irá gerar o total da venda.

Ao final, podemos chamar vendas para ler como ficou.

vendas <- vendas %>% 
  mutate(total = preco_unitario * quantidade + frete)
vendas

Visualização dos dez primeiros registros da tabela. Para visualizá-la na íntegra, execute a célula de código na sua máquina.

ID_compradatahorariocategoriapreco_unitarioquantidadefretemetodo_pagamentototal
62023-01-0320:40:00Tecnologia899.194713.26Boleto4310.02
52023-01-0321:48:00Casa/Móveis115.9010.00PIX115.90
92023-01-0317:08:00Beleza/Saúde68.90213.78Crédito151.58
42023-01-0314:29:00Casa/Móveis80.90540.45PIX444.95
82023-01-0318:02:00Beleza/Saúde165.0040.00PIX660.00
22023-01-0318:42:00Tecnologia2028.4851724.37PIX11866.77
32023-01-0323:47:00Supermercado84.9050.00Crédito424.50
12023-01-0300:13:00Eletrodomésticos2169.981138.64PIX2308.62
72023-01-0317:40:00Livros75.90518.98Crédito398.48
112023-01-0421:50:00Casa/Móveis13.9053.48PIX72.98

Agora, além das colunas anteriores, ao final, temos a coluna total, com os dados de valor total da compra já resumidos. Isso é muito útil para utilizarmos em nosso projeto.

Tratando os dados da tabela clientes

Com os ajustes feitos na tabela de vendas, faremos os ajustes necessários também para a tabela de clientes. Em uma nova célula, chamaremos a tabela clientes para ler como ela está no momento:

clientes

Visualização dos dez primeiros registros da tabela. Para visualizá-la na íntegra, execute a célula de código na sua máquina.

ID_compraID_clientecidadeufregiaoidadesexo_biologicocashback
9048972NatalRio Grande do NorteNordeste49MasculinoNão
46135120São PauloSão PauloSudeste49FemininoNão
55791847São PauloSão PauloSudeste24FemininoNão
24052846São PauloSão PauloSudeste38FemininoSim
24852715SalvadorBahiaNordeste30FemininoNão
7569555João PessoaParaíbaNordeste46FemininoNão
30203793BrasíliaDistrito FederalCentro-Oeste32MasculinoSim
23904903São PauloSão PauloSudeste26FemininoNão
39573413SalvadorBahiaNordeste30FemininoNão
51423556SalvadorBahiaNordeste28FemininoNão

Nessa tabela, temos doubles (<dbl>) e characters (chr). Na coluna cashback, teremos apenas "Sim" ou "Não", o sexo_biologico é "Masculino" ou "Feminino", e a regiao também terá repetições. Sendo assim, o mesmo processo feito na tabela de vendas faz sentido nesse caso.

Os números já foram reconhecidos normalmente, então transformar os dados de character para factor é a única alteração que poderíamos fazer na base de dados no momento.

Transformando dados categóricos que se repetem em factor

Podemos reaproveitar o código utilizado na tabela vendas, apenas alterando para clientes. Além disso, a única diferença é que faremos um head() para pegar poucos dados de clientes.

clientes <- clientes %>%
  mutate_if(is.character, as.factor)
head(clientes)
ID_compraID_clientecidadeufregiaoidadesexo_biologicocashback
9048972NatalRio Grande do NorteNordeste49MasculinoNão
46135120São PauloSão PauloSudeste49FemininoNão
55791847São PauloSão PauloSudeste24FemininoNão
24052846São PauloSão PauloSudeste38FemininoSim
24852715SalvadorBahiaNordeste30FemininoNão
7569555João PessoaParaíbaNordeste46FemininoNão

Observe que as colunas cidade, uf, regiao, sexo_biologico e cashback já estão no formato factor (fctr), que é muito mais fácil para manipular nos visuais.

Conclusão

Já importamos os dados, tanto de clientes quanto de vendas, fizemos os primeiros ajustes, tratamos os dados, e trocamos para os tipos necessários para construir os visuais.

Agora, falta construir o visual efetivamente. No próximo vídeo, começaremos a construir o nosso primeiro visual, entendendo como é o processo da construção a partir do pacote ggplot2.

A partir disso, poderemos começar a responder os questionamentos levantados no treinamento!

Sobre o curso R para Data Science: aplicando Data Visualization com ggplot2

O curso R para Data Science: aplicando Data Visualization com ggplot2 possui 126 minutos de vídeos, em um total de 50 atividades. Gostou? Conheça nossos outros cursos de Data Science em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Data Science acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas