Alura > Cursos de Inteligência Artificial > Cursos de IA para Dados > Conteúdos de IA para Dados > Primeiras aulas do curso ChatGPT com R: utilizando o ChatGPT como assistente

ChatGPT com R: utilizando o ChatGPT como assistente

Acessando os dados - Apresentação

Olá! Boas-vindas ao curso de ChatGPT com R.

Sou o Marcelo Cruz, faço parte da Escola de Dados e vou te acompanhar durante esse curso.

Audiodescrição: Marcelo é uma pessoa de pele clara, cabelos e barba castanhos-escuros. Usa uma camiseta preta e um headphone. Ao fundo, uma parede lisa com iluminação azul.

Esse curso é para você que está dando os primeiros passos na análise de dados com R e também para quem deseja automatizar as tarefas do dia a dia.

Como projeto, analisaremos os dados de vendas de um e-commerce fictício chamado Meteora. Para isso, contaremos com a ajuda do ChatGPT, criando prompts e validando suas respostas.

Nosso objetivo é proporcionar uma aprendizagem ativa, para que você possa extrair o máximo proveito do conteúdo. Para isso, disponibilizamos atividades entre os vídeos, textos complementares, exercícios e muita prática.

Lembrando que esse curso não possui pré-requisitos!

Caso sujam dúvidas na sua jornada de aprendizado, você pode utilizar o Fórum e participar da nossa comunidade no Discord. Nesses ambientes, você poderá conversar com a monitoria e pessoas estudantes.

Estamos muito animados com sua presença. Vamos começar?

Acessando os dados - Carregando os dados

Fomos contratados como cientistas de dados pela Meteora, que utiliza a linguagem de programação R.

Embora tenhamos familiaridade com outras linguagens de programação, ainda não temos experiência com a programação R. Para nos auxiliar no projeto da Meteora, contaremos com a ajuda do ChatGPT.

Nossa principal tarefa será a análise de dados, mais especificamente os dados de vendas do primeiro trimestre de 2019. Para isso, seguiremos algumas etapas:

  1. Exploração inicial dos dados;
  2. Limpeza e tratamento dos dados;
  3. Análise de vendas;
  4. Cruzamento dos dados;
  5. Criação de visualizações.

O objetivo final dessa análise será responder a algumas perguntas de negócios que a liderança nos passou. Sendo elas:

Para executar o código R, utilizaremos um ambiente de desenvolvimento em nuvem chamado Posit Cloud. Mais especificamente, utilizaremos o notebook R Markdown. É nesse ambiente que importaremos nosso projeto e os arquivos para análise. Conheceremos esse ambiente.

Conhecendo o Posit Cloud

Para isso, no navegador, acessamos o site do Posit Cloud. Começaremos criando uma nova conta nessa ferramenta.

Na lateral superior direita, encontramos o botão "Log In", para entrar na conta e o botão "Sign Up" para criar, então, clicamos na segunda opção. Feito isso, somos encaminhados para uma página onde é exibida as opções de pacotes oferecidas pela ferramenta.

Embora seja uma ferramenta paga, há uma opção gratuita limitada. É essa que usaremos, sendo assim, clicamos no botão "Learn More". Na página que abre, é exibido as limitações do pacote gratuito. Após ler, na lateral direita clicamos no botão "Sign Up".

Abre uma página de cadastro padrão, nela preencheremos dados como nome, e-mail e senha.

Lembrando que disponibilizamos como material complementar das aulas uma explicação mais detalhada do Posit, assim como importar arquivos e o R Markdown.

Conta criada, iniciaremos nosso projeto. O primeiro passo será realizar uma exploração inicial dos dados. Para isso, precisamos carregar nossos dados. Usaremos um arquivo no formato JSON chamado base_de_dados_praca_meteoro.

Esse arquivo JSON está estruturado em campos de chave e valor, a chave se refere aos campos de identificação e o valor aos registros. Precisamos importá-lo com o R para trabalhar com ele no formato tabular.

Para isso, iniciaremos o notebook e com a ajuda do ChatGPT criaremos o código R para realizar a importação. Vamos lá!

Leitura de dados JSON

Começamos abrindo o notebook. Nessa etapa inicial, é importante considerarmos a recomendação da liderança, que solicitou a utilização de pacotes comuns ao trabalhar com R, nesse caso, a coleção de pacotes chamada Tidyverse. Usaremos o pacote dplyr.

Sabendo disso, escrevemos o seguinte prompt:

Vamos atuar como cientistas de dados em uma loja de roupas!
 
Recebemos dados no formato de arquivo JSON, estruturados em linhas e colunas. O arquivo está salvo localmente.

Precisamos analisar esses dados para ajudar nas decisões da loja. Programamos em R conhecemos a coleção de pacotes de manipulação de dados tidyverse, mais especificamente o pacote dplyr. Portanto, priorize o uso dessa biblioteca.

Por favor, nos informe como podemos fazer a leitura desses dados no formato JSON e como podemos visualizá-los em formato de tabela no R. 

Copiamos esse prompt. Depois, no navegador, acessamos o ChatGPT na versão gratuita 3.5 e fazemos o login. No campo de texto, colamos e pressionamos "Enter".

Feito isso, temos o seguinte retorno:

Claro! Para trabalhar com dados em formato JSON no R, você pode usar o pacote jsonlite para ler os dados e o pacote tidyverse para manipulação.

Passo 1: Instalação dos pacotes Se ainda não tiver os pacotes instalados, você pode instalá-los usando o seguinte código:

R

install.packages("jsonlite")
install.packages("tidyverse")

Passo 2: Carregar os pacotes Depois de instalados, carregue os pacotes:

library(jsonlite)
library(tidyverse)

Passo 3: Leitura dos dados JSON Supondo que seus dados estão em um arquivo chamado "dados.json", você pode lê-los assim:

R

caminho_do_arquivo <- "caminho/para/seu/arquivo/dados.json"
dados <- fromJSON (caminho_do_arquivo)

Isso carregará os dados JSON em um objeto do tipo data frame em R.

Passo 4: Visualização dos dados em formato de tabela Agora, para visualizar os dados em formato de tabela, você pode usar as funções do dplyr. Por exemplo, para visualizar as primeiras linhas dos dados, você pode usar:

R

head (dados)`

Se precisar de ajuda específica com alguma análise ou manipulação, me avise!

O ChatGPT indicou alguns passos para seguirmos, sendo o primeiro de instalaçã da biblioteca jsonlite, provavelmente específica para importar o arquivo JSON e carregar as bibliotecas.

Foi indicado realizar a leitura dos dados por meio do caminho do arquivo JSON, em uma variável caminho_do_arquivo, usando a função fromJSON para importar esses dados para o nosso dataframe chamado dados. Por fim, no quarto passo, o ChatGPT indicou uma forma de visualização utilizando a função head(dados).

Usaremos todos esses códigos, começando pela instalação da biblioteca. Então, copiamos e abrimos nosso projeto no Posit. Antes de colar, criaremos uma célula de código do R.

Podemos fazer isso de suas formas, usando o atalho "Ctrl + Alt + I" ou então, na própria ferramenta, próximo ao centro direito da tela, clicamos no botão indicado por um quadrado verde com a letra "C" e um símbolo de "+" acima. Depois, clicamos na opção "R". Feito isso, colamos o código.

install.packages("jsonlite")
install.packages("tidyverse")

Para rodar o código, na lateral superior direita, clicamos no botão identificado pelo ícone de play, um triângulo deitado. Feito isso, concluimos a isntalação dos pacotes.

Voltamos ao ChatGPT e copiamos o código de carregamento dos pacotes. No Posit, pressionamos "Ctrl + Alt + I", colamos e rodamos o código.

library(jsonlite)
library(tidyverse)

Nos passos seguintes, seguiremos esse mesmo processo. Copiamos o código de leitura do arquivo JSON, pressionamos "Ctrl + Alt + I" e colamos. Antes de rodar, precisamos mudar o caminho do arquivo. Para isso, passamos Base de Dados - Meteora.json e rodamos.

caminho_do_arquivo <- "Base de Dados - Meteora.json"
dados <- fromJSON (caminho_do_arquivo)

Por fim, copiamos o código de exibição dos dados, colamos no Posit e rodamos.

head (dados)

Temos o seguinte retorno:

produto_idpedido_idvendedor_idid_nfprodutovenda
14151834151<data.frame [6 x 4]><data.frame [6 x 6]>
24307117432<data.frame [6 x 4]><data.frame [6 x 6]>
322407139913<data.frame [6 x 4]><data.frame [6 x 6]>
43820165244<data.frame [6 x 4]><data.frame [6 x 6]>
529012247025<data.frame [6 x 4]><data.frame [6 x 6]>
672621298016<data.frame [6 x 4]><data.frame [6 x 6]>

Assim, podemos conferir todas as colunas do dataset. As primeiras linhas se referem ao registro, temos o produto_id, pedido_id, vendedor_id e id_nf. Por fim, temos as colunas produto e venda, que são diferentes das demais.

Conseguimos identificar que, em produtos, há outros campos dentro cada um desses registros. Dessa forma, não conseguimos fazer uma exploração completa do dataset. Sendo assim, precisamos encontrar uma forma de expor esses dados com os demais.

Para isso, podemos contar novamente com a ajuda do ChatGPT. Usaremos o seguinte prompt:

O DataFrame "dados" possui as colunas produto_id, pedido_id, vendedor_id, id_nf, produto e venda.

As colunas "produto" e "venda" contém campos em formato de dataframe dentro de cada uma das linhas. Dessa forma, não consigo ver os dados que estão dentro desses campos. Como posso acessar esses dados que estão nesses campos em formato de dataframe?

Copiamos, abrimos o ChatGPT, colamos no chat e pressionamos "Enter". Temos o seguinte retorno:

Entendi, parece que os campos "produto" e "venda" contêm data frames aninhados dentro de cada linha do seu data frame principal. Para acessar esses dados, você pode usar a função unnest() do pacote dplyr. Aqui está um exemplo de como você pode fazer isso:

R

library(dplyr)

Esta linha carrega o pacote 'dplyr, que é amplamente utilizado para manipulação eficiente de dados em R.

R

dados <- dados %>%
unnest(cols = c(produto, venda))

A função unnest() é usada para "desdobrar" ou "desaninhar" colunas que contêm listas ou data frames aninhados. No seu caso, as colunas "produto" e "venda" contêm data frames aninhados, e unnest(cols = c(produto, venda)) desaninha esses data frames.

//Retorno omitido

O ChatGPT sugere a utilização da função unnest() para acessar os dados. Para isso, a IA sugere carregarmos a biblioteca do dplyr e depois disponibiliza o código com a função.

Primeiro carregaremos a biblioteca dplyr, então, copiamos o primeiro código. Abrimos o Posit, pressionamos "Ctrl + Alt + I", colamos e rodamos.

library(dplyr)

Fazemos o mesmo procedimento com o segundo código.

dados <- dados %>%
unnest(cols = c(produto, venda))

Agora, para verificarmos quais campos existem a partir do desalinhamento, rodaremos novamente o código abaixo:

head(dados)

Assim, temos o seguinte retorno:

produto_idpedido_idvendedor_idid_nfproduto_nomemarcasku
4151834151Calça Jeans BásicaBanana Republic255410
4307117432Bolsa Intrecciato CarameloBottega Veneta301305
22407139913Cropped Listras FlorzinhasTopshop327426
3820165244Shorts Jeans Tye DyeLezalez252560
29012247025Casaco Branco CosturasTigresse257889
72621298016Capa Fio MarromZara304783
//Colunas omitidas

Vamos conferir se essa é a resposta que queríamos. Repare que agora não temos apenas os campos de produto e venda, visualizamos os campos escondidos, como produto_nome, marca, sku, condicao, data_compra, quantidade, preco, valor_total, Estado e frete.

Agora todos os campos estão disponíveis para exploração, faremos isso no vídeo seguinte. Até lá!

Acessando os dados - Verificando inconsistências

No vídeo anterior, carregamos nossos dados e descobrimos que havia alguns campos alinhados. Tratamos isso usando o ChatGPT.

Agora, com todos os campos visíveis, entenderemos a estrutura dos dados, verificar se existem valores ausentes, duplicados ou outras inconsistências. A partir dessa análise, identificaremos qual o próximo tratamento a ser realizado.

Fazendo a exploração de dados

Para fazermos a exploração de dados, preparamos o seguinte prompt:

O DataFrame "dados" contém dados referentes às vendas de diversos produtos. São fornecidos IDs de produtos, de pedidos, de vendedor e de nota fiscal, o nome do produto, a marca, o sku, sua condição, data de compra, quantidade, preço, valor total, estado e
frete.

Estamos iniciando a etapa de exploração de dados, na qual desejamos conhecer os valores informados, entender a estrutura dos dados, identificar se existem valores ausentes, duplicados e únicos.

Por favor, construa um código para executar a etapa de exploração de dados usando o R.

Copiamos o prompt, abrimos o ChatGPT no navegador, colamos no chat e pressionamos "Enter". Feito isso, temos o seguinte retorno:

Claro, vou adicionar breves explicações para cada parte do código:

# Carregue as bibliotecas
library(dplyr)
library(tidyr)

Aqui, carregamos as bibliotecas dplyr e tidyr, que são amplamente utilizadas para manipulação e limpeza de dados no R.

# Visualize as primeiras linhas dos dados
head (dados)

Essa linha exibe as primeiras linhas do seu conjunto de dados, permitindo uma rápida visualização dos primeiros registros.

# Resumo estatístico
summary (dados)
# informações sobre os dados 
str (dados)

//Retorno omitido

Primeiramente, é solicitado carregar a biblioteca dplyr. Depois, devemos utilizar a função head(dados), para exibir esses dados. É sugerido um resumo estatístico através da função summary, que fornece um resumo estatístico das variáveis em seus dados e as informações sobre os dados com a função str(dados), que mostra a estrutura geral, incluindo os tipos de variáveis.

Sendo assim, no nosso caso rodaremos apenas as funções str(dados) e summary(dados), pois já importamos a biblioteca dplyr e tidyr, e também já visualizamos os dados com a função head(dados).

Começaremos pela função summary(dados).

# Resumo estatístico
summary (dados)

São retornados os valores estatísticos de mínimo, primeiro quartil, mediana, média, terceiro quartil e máxima para os campos de produto_id, pedido_id, vendedor_id, id_nf e sku. Enquanto para os campos de produto_nome, marca e condicao são informados seu tamanho, classe e modo. Em seguida, rodamos a função str(dados).

# informações sobre os dados 
str(dados)

E temos o retorno abaixo.

tibble [25,199 × 14] (S3: tbl_df/tbl/data.frame)
$ produto_id : num [1:25199] 41518 4307 22407 3820 29012 ...
$ pedido_id : int [1:25199] 341 1174 1399 1652 2470 2980 3443 3557 3585 3687 ...
$ vendedor_id : num [1:25199] 5 3 1 4 2 1 3 4 1 3...
$ id_nf $ : int [1:25199] 1 2 3 4 5 6 7 8 9 10 ...
produto_nome: chr [1:25199] "Calça Jeans Básica" "Bolsa Intrecciato Caramelo"
"Cropped Listras Florzinhas" "Shorts Jeans Tye Dye"
$ marca : chr [1:25199] "Banana Republic" "Bottega Veneta" "Topshop" "Lezalez"
...
$ sku
: int [1:25199] 255410 301305 327426 252560 257889 304783 909166 257889
308101 175945 ...
$ Condicao : chr [1:25199] "novo_com_etiqueta" "usado" "usado" "usado"
$ data_compra: chr [1:25199] "2019-01-05" "2019-01-05" "2019-01-05" "2019-01-05"
$ quantidade : int [1:25199] 3 5 3 6 3 3 4 3 3 2...
$ preco : num [1:25199] NA 6175 200 139 525 ...
$ valor_total : int [1:25199] 780 30875 600 834 1575 537 1400 1575 1350 960
$ Estado : chr [1:25199] "BR-BA" "BR-RJ" "BR-PB" "BR-DF"

//Retorno omitido

Nesse caso, focaremos apenas na função str(), que vai verificar a estrutura dos dados. Podemos notar que em cada campo é inficado o tipo de dado, o número de registro e os primeiros registros desse campo.

Notamos que os campos de id, estão preenchidos com num, int e chr. Repare que data_compra também está definido como chr, um caractere. Porém, nesse caso, deve existir um tipo específico de data. Para resolver é simples, então, faremos agora esse tratamento.

Tratando a coluna data_compra

Precisaremos usar uma função R que converta esse tipo. Para isso, usaremos o seguinte prompt:

Ao executar o comando `str()`, percebi que a coluna `data_compra` está definida como tipo `chr`. Porém, esse campo possui valores que correspondem a datas, ou seja, o seu tipo de dado deveria ser data.

Como posso realizar essa modificação no tipo de dado do campo `data_compra`? 

Copiamos o prompt, colamos no ChatGPT e pressionamos "Enter". Assim, temos a resposta abaixo:

Para modificar o tipo de dado da coluna "data_compra" para o formato de data, você pode usar a função as.Date do R. Aqui está um exemplo de como você pode fazer isso:

#Supondo que o formato da data seja "yyyy-mm-dd", ajuste conforme necessário 
dados$data_compra <- as. Date(dados$data_compra, format = "%Y-%m-%d")

//Retorno omitido

O ChatGPT sugere a utilização da função as.Date(), passando o campo data_compra e o argumento format. Este código converte a coluna data_compra para o tipo de dado de data, assumindo que o formato das datas seja ano, mês e dia. Se o formato for diferente, podemos ajustar o argumento format".

Rodamos esse código e para confirmar que realmente mudou, rodamos novamente a função str(dados). Temos o seguinte retorno:

//Retorno omitido
$ sku : int [1:25199] 255410 301305 327426 252560 257889 304783 909166 257889
308101 175945
$ Condicao : chr [1:25199] "novo_com_etiqueta" "usado" "usado" "usado" ...
$ data_compra: Date[1:25199], format: "2019-01-05" "2019-01-05" ...
$ quantidade : int [1:25199] 3 5 3 6 3 3 4 3 3 2 ...
$ preco : num [1:25199] ΝΑ 6175 200 139 525 ...
$ valor_total : int [1:25199] 780 30875 600 834 1575 537 1400 1575 1350 960 ... $ Estado : chr [1:25199] "BR-BA" "BR-RJ" "BR-PB" "BR-DF" ...
$ frete : int [1:25199] 156 6175 120 167 315 107 280 315 270 192

Agora o campo data_compra possui o tipo de dado date, deu certo.

Dessa forma, encerramos a primeira aula na qual começamos a análise dos dados, conhecemos a estrutura e realizamos o tratamento na coluna data_compra.

O foco da aula seguinte será realizar a limpeza e o tratamento dos dados usando o ChatGPT.

Te esperamos lá!

Sobre o curso ChatGPT com R: utilizando o ChatGPT como assistente

O curso ChatGPT com R: utilizando o ChatGPT como assistente possui 119 minutos de vídeos, em um total de 55 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:

Aprenda IA para Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas