Será que conseguimos utilizar a Inteligência Artificial (IA) para o desenvolvimento de gráficos e visuais em um projeto de análise de dados? Uma possível resposta para essa pergunta está em otimizar o processo da análise exploratória e visualização de dados sem ter um vasto conhecimento na linguagem Python.
É esse curso que vamos utilizar para responder a essa pergunta e todas as outras que podem surgir quando estamos construindo algo dentro desse tema. Este curso estará focado no uso da IA como suporte para a criação de visuais de dados.
Meu nome é Alfonso Rios, sou instrutor aqui da Escola de Data Science da Alura!
Audiodescrição: Alfonso Rios é um homem de cabelos e olhos castanhos escuros. Possui uma barba pequena. Veste uma camisa preta com um símbolo, com uma palavra escrita "Caelum" em amarelo. Ao fundo, há uma parede com cores em tons azul, cinza e branco e algumas decorações que remetem ao futebol e à Alura.
Neste curso, atuaremos como analistas de dados da Zoop, uma grande varejista que entrega em todas as regiões do Brasil por meio do seu e-commerce. Para ajudar na criação de relatórios que abordam tanto a parte das vendas quanto o perfil dos clientes, utilizaremos um projeto que inclui a exploração dos dados e a criação de visuais representativos desses temas.
Além disso, refinaremos todos esses gráficos utilizando a IA do ChatGPT e, por fim, salvaremos essas imagens geradas para serem utilizadas no relatório da Zoop.
Para este projeto, utilizaremos projetos que já foram testados e criados com o ChatGPT dentro do ambiente do Google Colab. Este Google Colab será disponibilizado a partir da próxima atividade.
Para deixar claro, pode ser que quando você for rodar esses projetos no seu computador ou por meio da sua conta do ChatGPT, é possível que as respostas não sejam exatamente iguais às que estou trazendo aqui dentro do curso. Isso se dá à aleatoriedade que as generativas possuem.
Isso não é um problema, basta que você tenha muito cuidado na execução e analise se aquele código que foi gerado realmente vai servir para o seu projeto.
Para que você possa aproveitar este projeto, é importante que você já tenha conhecimento de algumas bibliotecas de manipulação e visualização de dados da linguagem Python, como o Pandas
, o Matplotlib
e o Seaborn
.
Com todas essas expectativas alinhadas, vamos começar o nosso projeto?
Você é uma pessoa analista de dados na Zoop, uma grande empresa de e-commerce que atende todo o Brasil. Recebemos uma demanda do nosso departamento de dados para analisar os dados dos clientes e das vendas da Zoop no ano de 2023.
Nosso objetivo é explorar esses dados e criar visualizações para responder a algumas perguntas levantadas pelas partes interessadas, a fim de construir um relatório de storytelling da Zoop.
Analisaremos aspectos como o faturamento da loja e o perfil do cliente, incluindo a participação ou não no programa de cashback da Zoop, entre outros fatores. Temos um tempo bastante curto para realizar tanto a análise exploratória quanto a geração de visualizações.
No entanto, os dados que vamos receber pelo GitHub já estão tratados, então não precisamos nos preocupar com a limpeza e tratamento dos dados.
Além disso, precisamos conduzir todo esse processo utilizando nosso conhecimento em análise de dados com a linguagem Python. Ou seja, vamos extrair os dados, lê-los, interpretá-los e construir as visualizações com o auxílio de uma IA.
Extração
Leitura
Análise
Visuais
No nosso exemplo, trabalharemos com a IA do ChatGPT.
O ChatGPT vai nos auxiliar a ser rápidos tanto na tarefa da exploração dos dados, quanto na geração e refinamento dos gráficos para que estejam prontos para entrar no relatório da empresa Zoop.
Também precisaremos passar por algumas etapas para entender quais técnicas podemos empregar para melhorar nossas visualizações. Não basta apenas criá-las, mas também precisamos garantir que elas estejam alinhadas com a identidade da Zoop.
Construiremos todo esse processo dentro de um Google Colab, que é um documento que possui tanto blocos executáveis quanto blocos de texto. É um documento ideal para realizar análises de dados e documentar todo o processo que estamos criando.
Agora entraremos no nosso ambiente do Google Colab, que é uma espécie de notebook. Aqui já podemos verificar, por exemplo, o símbolo da Zoop. Todo esse processo, esse storytelling da Zoop, as necessidades, as bases de dados, tudo está descrito aqui para que você possa ler com calma.
Aula 1 - Conhecendo os dados
A Zoop é uma grande varejista que atende a todas as regiões do Brasil por meio do seu e-commerce. Ela é conhecida pela ampla variedade em seus produtos buscando atender a todo tipo de público. Ela possui uma série de centros de distribuição (CDs) para entrega de seus produtos, com grande parte situada no estado de São Paulo.
Para gerenciar o seu alcance, bem como o faturamento de seu setor em lojas online, ela consolida os dados em diferentes períodos de tempo e avalia esses dados para gerar insights e tomar algumas decisões estratégicas em seu negócio. Neste projeto, vamos ter acesso aos dados de parte da sua clientela do e-commerce dentro do ano de 2023.
Você, como analista de dados da empresa, precisará gerar visuais que auxiliem na construção de relatórios de acordo com algumas premissas passadas pelas partes interessadas realizando uma rápida análise do público que possuímos na loja virtual e do faturamento da empresa.
Problema de negócio:
O time de dados da Zoop precisa extrair os dados e gerar informações por meio de visuais que possam ser apresentados à diretoria da empresa apontando os dados de faturamento, perfil do cliente e outros indicadores que possam auxiliar na tomada de decisão em sua loja online.
Base de dados
Vamos importar duas bases de dados:
Dados de clientes do e-commerce da Zoop, separados pelo código identificador da compra.
Dados de vendas do e-commerce da Zoop em 2023, separados pelo código identificador da compra.
Esses dados serão lidos a partir do repositório compartilhado pelo GitHub.
Desafio
Você, como analista de dados do time de dados da Zoop, tem o desafio de extrair os dados de ambas as bases e construir visuais que possam agregar valor à apresentação dos resultados da Zoop em 2023. Para isso, serão repassados ao todo 7 questionamentos que foram separados para que você possa contribuir na construção do storytelling das vendas da empresa.
Para agilizar o processo da análise exploratória dos dados (AED) e a criação dos visuais, utilizaremos a IA do ChatGPT como nossa assistente, tudo isso levando em conta o prazo curto para as análises e a qualidade da entrega.
Nosso processo inicial agora será a obtenção dos dados.
Vamos acessar os links do repositório que contém tanto a base de dados de clientes quanto a base de dados de vendas e vamos abrir esses arquivos. No Google Colab estão os URLs para referência.
url_clientes = "https://raw.githubusercontent.com/alura-cursos/ia-datascience-dataviz/main/dados/zoop_clientes.csv"
url_vendas = "https://raw.githubusercontent.com/alura-cursos/ia-datascience-dataviz/main/dados/zoop_vendas.csv"
Nós temos uma URL para os dados dos clientes, localizada dentro do repositório na pasta "ia-datascience-dataviz/main/dados/zoop_clientes". Além disso, o URL para os dados de vendas também está localizado neste mesmo caminho, contendo um arquivo CSV chamado "zoop_vendas".
Ambas as bases de dados estão no formato CSV e são acessíveis publicamente, não requerendo uma conta do GitHub para acesso, apenas a URL correspondente.
Rodamos essas URLs clicando no ícone de play do lado esquerdo.
Após rodarmos a URL, o que acontece? Ela vai salvar esses caminhos dentro das variáveis url_clientes
e url_vendas
. Essa primeira execução demora um pouco mais, porque é no Colab, então ele está alocando a máquina na nuvem e por isso tem essa demora na primeira execução.
Assim que terminarmos, criaremos os dois dataframes que utilizaremos em nosso projeto.
Primeiramente, importaremos a biblioteca do pandas, que é a ferramenta utilizada para a manipulação de dados. Então, digitamos na próxima célula import pandas as pd
.
import pandas as pd
Executamos a célula.
clientes
Agora, faremos a leitura de uma das nossas tabelas, começando pela tabela de clientes. Faremos isso com o seguinte código: clientes = pd.read_csv(url_clientes)
, o qual criará o nosso dataframe.
Com clientes
estamos passando os valores para dentro de uma variável chamada clientes
para gerar o dataframe. Na sequência, inserimos o pd.read_csv()
para realizar a leitura de um CSV, passando a url_clientes
(caminho do arquivo).
clientes = pd.read_csv(url_clientes)
Executamos a célula.
Para visualizar este dataframe, podemos, por exemplo, ler as primeiras cinco linhas. Assim, executaremos clientes.head()
.
clientes.head()
Obtemos como retorno da visualização:
# | ID_compra | ID_cliente | cidade | uf | regiao | idade | sexo_biologico | cashback | avaliacao_compra |
---|---|---|---|---|---|---|---|---|---|
0 | 904 | 8972 | Natal | Rio Grande do Norte | Nordeste | 49 | Masculino | Não | 9 |
1 | 4613 | 5120 | São Paulo | São Paulo | Sudeste | 49 | Feminino | Não | 9 |
2 | 5579 | 1847 | São Paulo | São Paulo | Sudeste | 24 | Feminino | Não | 8 |
3 | 2405 | 2846 | São Paulo | São Paulo | Sudeste | 38 | Feminino | Sim | 7 |
4 | 2485 | 2715 | Salvador | Bahia | Nordeste | 30 | Feminino | Não | 10 |
Ele apresentou a primeira tabela, que é a tabela de clientes da Zoop. Nela, encontramos dados como ID do cliente, informações geográficas, idade, sexo biológico, participação no programa de cashback e avaliação de compra. No entanto, vamos analisar esses dados com mais detalhes posteriormente.
vendas
Vamos agora fazer a mesma operação, mas agora para vendas. Então, na próxima célula escrevemos vendas = pd.read_csv(url_vendas)
.
vendas = pd.read_csv(url_vendas)
Por fim, vamos ler os últimos cinco dados. Porque já lemos os primeiros cinco no outro. Só para mudar aqui, vamos colocar vendas.tail()
, que é para ler os cinco últimos dados.
vendas.tail()
Como retorno, obtemos:
# | ID_compra | data | horario | categoria | preco_unitario | quantidade | frete | metodo_pagamento |
---|---|---|---|---|---|---|---|---|
6164 | 6141 | 2023-12-31 | 17:49 | Eletrodomésticos | 1509.9 | 5 | 377.48 | Cartão de Crédito |
6165 | 6148 | 2023-12-31 | 23:02 | Papelaria e escritório | 14.0 | 2 | 3.36 | PIX |
6166 | 6123 | 2023-12-31 | 21:25 | Alimentos e bebidas | 77.9 | 1 | 7.79 | Cartão de Crédito |
6167 | 6147 | 2023-12-31 | 21:38 | Livros | 142.9 | 4 | 17.15 | Cartão de Crédito |
6168 | 6122 | 2023-12-31 | 22:11 | Beleza e cuidados pessoas | 89.9 | 5 | 13.48 | Cartão de Crédito |
Agora dispomos de uma tabela adicional, distinta desta vez, que é a tabela de vendas. Nela, encontramos o ID da compra, a data e horário da transação, a categoria do produto, o preço unitário, a quantidade adquirida, o valor do frete associado àquele produto e o método de pagamento utilizado.
Os dados que vamos utilizar já foram carregados e examinamos brevemente o conteúdo de cada um aqui.
No próximo vídeo, vamos começar a utilizar o ChatGPT como assistente, para explorar esses dados com mais detalhes e começar a planejar a criação dos gráficos que precisaremos apresentar para a equipe da Zoop.
Vamos nessa?
Iniciaremos o nosso processo de exploração dos dados e como relacioná-los a fim de construir visuais. Para agilizar nossas análises, utilizaremos o auxílio da ferramenta do ChatGPT.
O nosso desafio é o seguinte: temos duas bases: clientes
e vendas
, que estão separadas pelo código identificador da compra, no ano de 2023. Além disso, precisamos entender quais são esses dados e quais insights podemos obter para que possamos construir visuais a partir desses valores. E como vamos fazer essa relação também desses dados entre as tabelas.
Começaremos trabalhando com o nosso primeiro prompt do ChatGPT. No documento do Colab, já possuímos prompts que foram previamente testados, seguindo todo o fluxo da exploração do dado até a criação do visual.
Utilizaremos esses prompts para copiá-los, colá-los dentro do ambiente do ChatGPT e trazer os códigos que foram gerados a partir da leitura, da compreensão dos prompts que foram colocados nesse ambiente generativo.
É fundamental ressaltar que o código gerado, assim como as instruções fornecidas pelo ChatGPT, podem variar entre indivíduos. Contudo, é sempre recomendável realizar testes para garantir a eficácia da ideia proposta na pergunta e sua coerência dentro do contexto do storytelling que estamos desenvolvendo.
Começaremos primeiro analisando a base de clientes. Temos no Colab um prompt pronto para colocar os dados dos clientes.
Prompt retirado do Google Colab:
Vamos atuar como analista de dados de um e-commerce. Recebemos duas bases de dados com os dados dos clientes e das vendas em 2023, respectivamente.
Neste primeiro momento, vamos explorar a base clientes no formato de um DataFrame, chamado "clientes". Ela contém dados dos clientes que realizaram comprar na loja virtual, sendo eles: ID da compra, ID do cliente, a cidade, estado e região da compra, idade, sexo biológico, se participam do programa de cashback e avaliação da compra.
Queremos fazer uma breve exploração dos dados para compreender um pouco sobre eles. Lembrando que os dados desta base já estão limpos e tratados. Construa um código para executar esta etapa usando o Python.
Não é necessário utilizar "print()" para mostrar o resultado das consultas.
O prompt nos diz:
"Vamos atuar como analista de dados de um e-commerce. Recebemos duas bases de dados com os dados dos clientes e das vendas em 2023, respectivamente. Neste primeiro momento, vamos explorar a base de clientes no formato de DataFrame chamado clientes
.
Observe que já coloquei o nome "clientes" entre aspas para garantir que, ao gerar o código, o ChatGPT não utilize um nome genérico como "dados" ou "DF". Assim, ele utilizará o nome "clientes", conforme desejado.
Continuando: "Ela contém dados dos clientes que realizaram compra na loja virtual sendo eles: ID da compra, ID do cliente, a cidade, estado e região da compra, idade e sexo biológico, se participam do programa de cashback e a avaliação da compra".
Seguindo: "desejamos realizar uma breve análise exploratória dos dados para obter uma compreensão inicial. É importante ressaltar que os dados nesta base já foram previamente limpos e tratados". Portanto, não será necessário fornecer códigos para limpeza ou tratamento de dados. Nosso foco é exclusivamente explorar esses dados de forma rápida e eficaz.
Continuando: "Construa um código para executar essa etapa usando Python". Então, já indicamos, por padrão, normalmente ele vai entregar em Python, mas é sempre importante deixar isso claro.
Seguindo: "não é necessário utilizar print()
para mostrar o resultado das consultas". Isso porque senão ele vai ficar criando variáveis com os resultados e depois printar essa variável. Assim, estamos garantindo que o código vai ser um pouco mais conciso e ele vai direto ao ponto só realmente fazendo essa exploração do meu dado.
Então, vamos agora enviar esse prompt para o ChatGPT, copiar e colar lá, e verificar o que ele produziu. Aqui está o código resultante:
# Exibindo as primeiras linhas do DataFrame para entender a estrutura dos dados
clientes.head()
# Obtendo informações gerais sobre o DataFrame, como tipos de dados e valores não nulos
clientes.info()
# Estatísticas descritivas para variáveis numéricas
clientes.describe()
# Contagem de clientes por sexo
clientes['sexo_biologico'].value_counts()
# Média de idade dos clientes
clientes['idade'].mean()
# Contagem de clientes por região
clientes['regiao'].value_counts()
# Avaliação média das compras
clientes['avaliacao_compra'].mean()
# Verificando a participação no programa de cashback
clientes['cashback'].value_counts()
Eu trouxe diretamente para o Colab porque estamos organizando por blocos para executar cada etapa separadamente.
Fiz algumas pequenas alterações, como substituir "sexo biológico" por sexo_biológico, pois o ChatGPT não trouxe o termo exato. Além disso, removi a parte referente à importação e leitura dos dados, pois isso já foi feito em aulas anteriores.
É importante mencionar que, para executar este código aqui, é necessário ter previamente executado o código anterior lá em cima, o qual cria a variável clientes
, também conhecida como df_clientes
, para que possamos utilizá-la nesta parte do código.
Se por acaso o documento foi fechado ou se passou muito tempo desde a última execução, basta voltar ao topo do documento, na seção de "Ambiente de execução", e selecionar a opção "executar antes" (atalho "Ctrl + F8"). Isso executará todos os códigos anteriores ao atual, permitindo-nos então executar este código sem problemas.
clientes
Temos como primeira etapa:
# Exibindo as primeiras linhas do DataFrame para entender a estrutura dos dados
clientes.head()
Executamos a célula.
Na primeira etapa, ele está exibindo as primeiras linhas. Esse mesmo processo que fizemos vai mostrar os 5 primeiros registros que temos do nosso clientes. Isso já foi feito, inclusive, no vídeo anterior.
Retorno da primeira etapa:
# | ID_compra | ID_cliente | cidade | uf | regiao | idade | sexo_biologico | cashback | avaliacao_compra |
---|---|---|---|---|---|---|---|---|---|
0 | 904 | 8972 | Natal | Rio Grande do Norte | Nordeste | 49 | Masculino | Não | 9 |
1 | 4613 | 5120 | São Paulo | São Paulo | Sudeste | 49 | Feminino | Não | 9 |
2 | 5579 | 1847 | São Paulo | São Paulo | Sudeste | 24 | Feminino | Não | 8 |
3 | 2405 | 2846 | São Paulo | São Paulo | Sudeste | 38 | Feminino | Sim | 7 |
4 | 2485 | 2715 | Salvador | Bahia | Nordeste | 30 | Feminino | Não | 10 |
# Obtendo informações gerais sobre o DataFrame, como tipos de dados e valores não nulos
clientes.info()
No segundo, ele vai trazer o clientes.info()
. Ou seja, ele está obtendo algumas informações gerais sobre os dataframes, verificando se ele tem valores nulos, verificando a quantidade de registros que tem, quantidade de colunas. São informações mais gerais do nosso dataframe.
Se examinarmos este contexto, o que encontraremos?
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6169 entries, 0 to 6168
Data columns (total 9 columns):
# | Column | Non-Null Count | Dtype |
---|---|---|---|
0 | ID_compra | 6169 non-null | int64 |
1 | ID_cliente | 6169 non-null | int64 |
2 | cidade | 6169 non-null | object |
3 | uf | 6169 non-null | object |
4 | regiao | 6169 non-null | object |
5 | idade | 6169 non-null | int64 |
6 | sexo_biologico | 6169 non-null | object |
7 | cashback | 6169 non-null | object |
8 | avaliacao_compra | 6169 non-null | int64 |
dtypes: int64(4), object(5)
memory usage: 433.9+ KB
Temos um total de 6.169 entradas, as quais podem ser entendidas como registros de compras ou, mais precisamente, de clientes.
No entanto, é importante destacar que se trata realmente de registros de compras, pois alguns clientes podem estar repetidos. Portanto, estamos considerando o número total de transações realizadas, independentemente do número de clientes envolvidos.
A faixa dos índices vai de 0 a 6.168. Nossos dados consistem em 9 colunas, cada uma delas descritas aqui. Importante ressaltar que não encontramos valores nulos, pois esta é uma coluna que não possui esses tipos de valores, garantindo que todos os dados estejam completamente preenchidos.
Além disso, observamos que as colunas ID_compra
, ID_cliente
, idade
e avaliacao_compra
estão no formato int (inteiro); enquanto, cidade
, uf
, regiao
, sexo_biológico
e cashback
estão no formato object, indicando variáveis categóricas, textuais ou alfanuméricas.
Essas observações iniciais nos fornecem uma compreensão preliminar dos dados e de seus formatos.
# Estatísticas descritivas para variáveis numéricas
clientes.describe()
Aqui, temos outro trecho de código que envolve o clientes.describe()
.
O que exatamente é o describe? O describe realiza uma análise estatística descritiva das variáveis numéricas. Em outras palavras, ele extrai estatísticas como mínimo, máximo, quartis (25%, 50%, 75%), mediana e desvio padrão das variáveis numéricas presentes, que no caso são ID_compra
, ID_cliente
, idade
e avaliacao_compra
. Esses dados são então apresentados de forma resumida em uma única tabela.
# | ID_compra | ID_cliente | idade | avaliacao_compra |
---|---|---|---|---|
count | 6169.000000 | 6169.000000 | 6169.000000 | 6169.000000 |
mean | 3085.000000 | 5461.475280 | 38.260010 | 8.443670 |
std | 1780.981237 | 2610.959977 | 9.838951 | 1.730584 |
min | 1.000000 | 1005.000000 | 18.000000 | 0.000000 |
25% | 1543.000000 | 3148.000000 | 31.000000 | 8.000000 |
50% | 3085.000000 | 5436.000000 | 38.000000 | 9.000000 |
75% | 4627.000000 | 7748.000000 | 45.000000 | 9.000000 |
max | 6169.000000 | 9999.000000 | 70.000000 | 10.000000 |
Conseguimos notar aqui na tabela que, por exemplo, ID_compra
e ID_cliente
, ele é um número, só que é um código identificador. Então, não faz muito sentido analisar média, mediana, desvio padrão, de um número que é só para identificar a compra ou o cliente.
Então, talvez as duas colunas que façam sentido seriam a idade
e a avaliacao_compra
. Assim, conseguimos ter coisas interessantes, como, por exemplo, em idade
, temos o cliente mais novo, tendo 18 anos, e o mais velho, tendo 70.
Temos também a média dos nossos clientes, em 38.2, por exemplo, e temos também na avaliacao_compra
, a média de avaliação em 38.4, sendo que tem a avaliação que foi zero, do produto, e a avaliação que também foi dada a nota máxima, a nota 10.
Continuando, aqui também realizamos a contagem de clientes por sexo.
# Contagem de clientes por sexo
clientes['sexo_biologico'].value_counts()
Obtemos como retorno:
Então, o que acontece é o seguinte: utilizamos o método value_counts()
na coluna clientes[sexo_biológico]
, onde constatamos que há 3.371 clientes do sexo feminino e 2.798 do sexo biológico masculino, indicando uma maior representação do público feminino.
# Média de idade dos clientes
clientes['idade'].mean()
Como retorno, temos:
38.2600097260496
Além disso, calculamos a média de idade dos clientes, que é obtida através de clientes['idade'].mean()
. Essa média é de 38.2, conforme mencionado anteriormente na descrição estatística.
# Contagem de clientes por região
clientes['regiao'].value_counts()
Como retorno, temos:
# | # |
---|---|
Sudeste | 2666 |
Nordeste | 1882 |
Sul | 819 |
Centro-Oeste | 495 |
Norte | 307 |
Name: | regiao, dtype: int64 |
Também faz a contagem dos clientes por região, então ele pega o clientes['regiao']
e faz um value_counts()
.
Portanto, podemos observar que 2.666 clientes são provenientes da região Sudeste, seguidos por 1.882 do Nordeste, e assim por diante, com números decrescentes para as regiões Sul, Centro-Oeste e Norte.
É importante ressaltar aqui, como mencionei anteriormente, que quando falamos sobre a qualidade da compra, não estamos necessariamente contando 2.666 clientes distintos, mas sim clientes que residem na região Sudeste e realizaram uma compra. Portanto, um único cliente pode ter feito múltiplas compras dentro da Zoop.
# Avaliação média das compras
clientes['avaliacao_compra'].mean()
Temos, como retorno:
8.44366996271681
Seguindo adiante, também teremos a etapa de avaliação, na qual ele calcula a média das avaliações dos clientes utilizando clientes['avaliacao_compra'].mean()
. Portanto, ele examinará a avaliação média, que foi de 8.44, como já observamos anteriormente no describe
.
Por fim, ele também verificou a participação no programa de cashback.
# Verificando a participação no programa de cashback
clientes['cashback'].value_counts()
Como retorno, temos:
# | # |
---|---|
Não | 3557 |
Sim | 2612 |
Name | cashback, stype: int64 |
Então ele fez um value_counts()
da coluna cashback
, e ele previu que 3.557 é não, e 2.612 são sim. Ou seja, tem mais gente que não participa do nosso programa de cashback do que participa. E isso pode ser um tipo de variável bem interessante, um tipo de visualização que podemos trazer dentro do nosso projeto.
Vamos agora para vendas
.
vendas
Também criamos um prompt para isso. E esse prompt, vai trazer um pouco das coisas que estavam no outro.
Agora vamos explorar a base de vendas no formato de um DataFrame, chamado "vendas". Ela contém dados das vendas do e-commerce, sendo eles: ID da compra, data da compra, horário da compra, categoria do produto, preco unitário do produto, quantidade vendida, frete e o método do pagamento.
Queremos fazer uma breve exploração dos dados para compreender um pouco sobre eles. Lembrando que os dados desta base também já estão limpos e tratados. Construa um código para executar esta etapa usando o Python.
Então estamos passando que vamos explorar a base de vendas no formato de DataFrame, chamado vendas
, então estamos dando o nome que queremos.
Mencionamos quais são os dados que temos: ID da compra, a data da compra, o horário da compra, a categoria do produto, o preço unitário do produto, a quantidade vendida, o frete e o método do pagamento que temos.
E faremos uma breve exploração. Já deixamos claro novamente que não queremos lidar com a limpeza e tratamento dos dados, pois já os realizamos. E desejamos isso no código Python.
Observe que aqui não precisamos incluir o print()
, por exemplo, para não adicioná-lo. Isso porque ele já interpretou que o código anterior segue um certo padrão. Portanto, se não pedi print
anteriormente, pode ser que eu não queira print
neste caso. Ele entenderá isso e me fornecerá sem a necessidade de eu explicitamente mencionar aqui.
Rodamos esse código de novo e colamos no Colab o código para a execução e a exploração do dado da base de vendas.
# Exibindo as primeiras linhas do DataFrame para entender a estrutura dos dados
vendas.head()
# Obtendo informações gerais sobre o DataFrame, como tipos de dados e valores não nulos
vendas.info()
vendas["data"] = pd.to_datetime(vendas["data"], format="%Y-%m-%d")
# Estatísticas descritivas para variáveis numéricas
vendas.describe()
# Contagem de vendas por categoria de produto
vendas['categoria'].value_counts()
# Preço médio unitário dos produtos
vendas['preco_unitario'].mean()
# Quantidade total de produtos vendidos
vendas['quantidade'].sum()
# Valor total do frete arrecadado
vendas['frete'].sum()
# Métodos de pagamento utilizados e suas frequências
vendas['metodo_pagamento'].value_counts()
Nosso código está pronto e já está disponível aqui. Então, ele vai seguir a mesma lógica do anterior.
Usaremos vendas.head()
para visualizar os cinco primeiros valores e já podemos fazer isso agora.
# Exibindo as primeiras linhas do DataFrame para entender a estrutura dos dados
vendas.head()
Como retorno, temos:
# | ID_compra | data | horario | categoria | preco_unitario | quantidade | frete | metodo_pagamento |
---|---|---|---|---|---|---|---|---|
0 | 6 | 2023-01-03 | 20:40 | Eletrônicos | 4457.9 | 4 | 713.26 | Boleto |
1 | 5 | 2023-01-03 | 21:48 | Ferramentas e construção | 115.9 | 1 | 0.00 | PIX |
2 | 9 | 2023-01-03 | 17:08 | Beleza e cuidados pessoais | 68.9 | 2 | 13.78 | Cartão de Crédito |
3 | 4 | 2023-01-03 | 14:29 | Ferramentas e construção | 80.9 | 5 | 40.45 | PIX |
4 | 8 | 2023-01-03 | 18:02 | Beleza e cuidados pessoais | 165.0 | 4 | 0.00 | PIX |
Além disso, vamos conferir o info
, onde obtemos informações gerais.
# Obtendo informações gerais sobre o DataFrame, como tipos de dados e valores não nulos
vendas.info()
Temos, como retorno:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6169 entries, 0 to 6168
Data columns (total 8 columns):
# | Column | Non-Null Count | Dtype |
---|---|---|---|
0 | ID_compra | 6169 non-null | int-64 |
1 | data | 6169 non-null | object |
2 | horario | 6169 non-null | object |
3 | categoria | 6169 non-null | object |
4 | preco_unitario | 6169 non-null | float64 |
5 | quantidade | 6169 non-null | int64 |
6 | frete | 6169 non-null | float64 |
7 | metodo_pagamento | 6169 non-null | object |
dtypes: float64(2), int64(2), object(4)
memory usage: 385.7+ KB
Ao contrário do anterior, notamos que algumas variáveis aqui são do tipo float, como preco_unitario
e frete
. E percebemos que a variável data
está no formato object. Se quisermos trabalhar com gráficos mais voltados para séries temporais, faz muito sentido converter essa coluna data
para o tipo datetime.
Então vamos fazer isso. Já que esse processo na importação ele não fez.
Então clicamos aqui em "+ código" e colocamos a seguinte forma: vendas
, abre e fecha colchetes, abre e fecha aspas.Inserimos vendas_data
, que é o nome da coluna.
Copiamos de novo que precisaremos posteriormente. Vai ser igual a pd.pd.to_datetime()
, abre e fecha parênteses. Passamos vendas["data"]
porque desejamos transformar vendas["data"]
para o datetime
e passar para o novo vendas_data
.
No formato, esse format
que colocamos, inserimos o formato que está no nosso dado.
Ou seja, em que formato está a nossa data
? Ela está ano com quatro dígitos, mês com dois dígitos, dia com dois dígitos, separados por traços. Então passamos por format
, o que? Sinal de porcentagem Y
, porque são anos com quatro dígitos, sinal de porcentagem M
para mês e sinal de porcentagem D
.
vendas["data"] = pd.to_datetime(vendas["data"], format="%Y-%m-%d")
Executamos a célula.
E aqui ele entenderá que é necessário converter aquela data
para o formato datetime
.
datetime64[ns]
Para verificar se tudo está correto, executamos novamente o info
, pois ele mostrará o tipo de dado atual. Já podemos observar que agora é do tipo datetime
.
Continuando, vamos ver o describe
, que é a mesma coisa.
# Estatísticas descritivas para variáveis numéricas
vendas.describe()
Temos como retorno:
# | ID_compra | preco_unitario | quantidade | frete |
---|---|---|---|---|
count | 6169.000000 | 6169.000000 | 6169.000000 | 6169.000000 |
mean | 3085.000000 | 873.234738 | 3.004863 | 119.233832 |
std | 1780.981237 | 1852.064342 | 1.420725 | 366.149225 |
min | 1.000000 | 2.900000 | 1.000000 | 0.000000 |
25% | 1543.000000 | 44.900000 | 2.000000 | 0.320000 |
50% | 3085.000000 | 93.900000 | 3.000000 | 7.550000 |
75% | 4627.000000 | 221.900000 | 4.000000 | 29.240000 |
max | 6169.000000 | 8000.000000 | 5.000000 | 4521.540000 |
O id_compra
é redundante, pois serve apenas como um número de identificação. Portanto, vamos considerar as variáveis preço
, quantidade
e frete
, incluindo estatísticas como mínimo, máximo, quartis, mediana e média. É importante examinar esses números com atenção para identificar possíveis insights interessantes.
Temos também a parte de contagem das vendas que ele faz.
# Contagem de vendas por categoria de produto
vendas['categoria'].value_counts()
Ao rodarmos, obtemos:
# | # |
---|---|
Alimentos e bebida | 1495 |
Beleza e cuidados pessoais | 1062 |
Casa e limpeza | 1041 |
Eletrodomésticos | 665 |
Eletrônicos | 580 |
Papelaria e escritório | 551 |
Ferramentas e construção | 474 |
Livros | 301 |
Name: | categoria, dtype: int64 |
Ele vai contar por categoria
e, em seguida, realizará um value_counts
sobre ela. Aqui podemos observar que ele categorizou de forma abrangente, indo desde alimentos até livros, e então contou a quantidade de vendas de cada categoria, não o valor das vendas.
Aqui embaixo ele pegou o preco_unitario
dos produtos.
# Preço médio unitário dos produtos
vendas['preco_unitario'].mean()
Temos como retorno:
873.2347382071648
Ele calculou uma média do preço unitário dos produtos, determinando-a a partir dos preços mais baixos até os mais altos.
Além disso, determinou a quantidade total de produtos vendidos, contabilizando todas as vendas, independentemente do número de itens vendidos por transação, totalizando 18.500 unidades.
# Quantidade total de produtos vendidos
vendas['quantidade'].sum()
18537
Também realizou o cálculo do valor total do frete arrecadado, resultando em um faturamento de 735.553,51 reais apenas com as taxas de entrega.
# Valor total do frete arrecadado
vendas['frete'].sum()
735553.51
E também ele fez aqui uma frequência para distribuir os métodos de pagamento.
# Métodos de pagamento utilizados e suas frequências
vendas['metodo_pagamento'].value_counts()
# | # |
---|---|
Cartão de Crédito | 2851 |
PIX | 2244 |
Cartão de Crédito | 547 |
Boleto | 527 |
Name | metodo_pagamento, dtype: int64 |
Podemos observar que o cartão de crédito é o método de pagamento mais utilizado pelos clientes, seguido pelo PIX, cartão de débito e boleto.
Já exploramos os dados e entendemos um pouco mais sobre eles, utilizando a IA do ChatGPT.
Agora, o nosso próximo passo é unir as tabelas e pensar em quais visuais podemos utilizar para gerar os gráficos que vão ser utilizados no relatório da Zoop. Nos vemos no próximo vídeo.
O curso IA aplicada a Data Science: utilizando IA na construção de visualização de dados possui 162 minutos de vídeos, em um total de 58 atividades. Gostou? Conheça nossos outros cursos de IA para Dados em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.