Alura > Cursos de Inteligência Artificial > Cursos de IA para Dados > Conteúdos de IA para Dados > Primeiras aulas do curso Python com IAs: acelerando a produtividade em data science

Python com IAs: acelerando a produtividade em data science

Entendendo os dados mundiais - Apresentação

Imagine utilizar as Inteligências Artificiais (IAs) a nosso favor para desenvolver um projeto de Data Science?

A ideia é otimizar e acelerar o processo do projeto para exploração, visualização de dados e até a apresentação desse projeto desenvolvido em Python, mesmo que não possuamos um conhecimento avançado nessa linguagem.

É precisamente isso que faremos neste curso de IA para potencializar a produtividade em Data Science.

Meu nome é Mirla e sou instrutora da Alura.

Audiodescrição: Mirla Costa é uma mulher branca, de cabelos cacheados e pretos, abaixo da altura dos ombros. Usa um óculos de grau com armação redonda, piercing no septo e aparelho dental. Está com uma camiseta na cor vinho e colar com pingente de lua. Ao fundo, parece branca com iluminação verde e duas prateleiras com livros e decorações.

O que vamos aprender?

Durante nossa jornada, somos cientistas de dados em uma empresa de consultoria e energia. Temos um cliente, a Boltfunds, uma empresa de investimentos no setor energético que nos envia dados para análise.

Dispomos de um curto período para realizar esse projeto e precisaremos:

Para o desenvolvimento desse projeto, vamos utilizar prompts pré-criados e testados nas IAs que utilizaremos neste curso. Esses prompts estarão disponíveis no notebook do curso no Google Colab disponível para download e poderão ser testados durante o curso.

No entanto, é importante lembrar que, ainda que utilizemos os mesmos prompts, o resultado pode variar um pouco devido à aleatoriedade dos chatbots quando você utilizar na sua conta.

Conhecimentos prévios

Para que você possa aproveitar ao máximo este curso, é recomendável que já tenha algum conhecimento de Python, assim como das bibliotecas Pandas, Matplotlib, Seaborn e Plotly.

Vamos começar?

Entendendo os dados mundiais - Import dos dados

Somos cientistas de dados de uma empresa especializada em consultoria em energia elétrica para companhias do setor energético. A nossa empresa fornece informações sobre o mercado e investimentos.

Contexto

Recentemente, recebemos uma demanda de um cliente, a Boltfunds, uma empresa de investimentos no mercado energético. Ela nos forneceu dados que relacionam consumo e produção de energia elétrica por países ao redor do mundo.

A Boltfunds solicitou uma análise desses dados para entender padrões de produção, de consumo e para identificar tendências de mercado para guiar a tomada de decisões.

O resultado final desse trabalho deve ser apresentado em um slide em formato de apresentação oral para a diretoria da Boltfunds. A nível de empresa, foi estipulado um curto prazo para realizar essa demanda.

Os arquivos fornecidos pela Boltfunds que serão utilizados em nosso projeto estão disponíveis no notebook do curso no Google Colab. Para acessá-lo, você pode baixar o notebook diretamente nas atividades desta aula.

Caso você não queira fazer o download do notebook, você pode copiar as URLs que também estarão disponíveis nas atividades.

Além disso, a diretoria da Boltfunds nos informou que os dados fornecidos contêm informações de tempo e de diferentes países. Contudo, nossa análise se concentrará apenas nos dados brutos, sem realizar análises históricas ou geopolíticas.

Problemas

Diante desse contexto, enfrentamos dois problemas. Primeiro, a nossa equipe de dados não possui um conhecimento avançado em Python, embora tenhamos familiaridade com algumas bibliotecas e entendemos como funciona essa linguagem.

Nosso domínio maior é com a linguagem R. Como o projeto exige o uso de Python, este se torna um desafio.

Segundo, temos um curto período para a realização do projeto. Por isso, não podemos perder tempo tentando criar códigos para fazer o projeto de estudos dos dados.

Para solucionar esses problemas, vamos contar com o auxílio de Inteligências Artificiais (IAs) que nos ajudarão na criação dos códigos necessários.

A primeira inteligência artificial que usaremos é o Bard, da Google. Embora seja uma inteligência artificial ainda em seus primeiros estágios, se adequará perfeitamente à etapa inicial do projeto.

Vamos também utilizar prompts, que serão enviados para essas IAs. Essas prompts já foram previamente criadas e testadas, otimizando os resultados das IAs.

É importante lembrar que, ao executar as prompts disponíveis em sua conta, os resultados podem ser ligeiramente diferentes dos nossos, devido à aleatoriedade inerente às IAs.

Agora, vamos acessar o notebook para começar o projeto.

Importação dos dados

Com o Google Colab aberto, já conseguimos visualizar o notebook de análise para a Boltfunds.

Primeiro, devemos fazer a importação dos dados, já que para os estudar, precisamos tê-los em mãos. As URLs que dão acesso a esses dados são as seguintes:

url_resumo_mundial = 'https://raw.githubusercontent.com/alura-cursos/IA-produtividade-DS/main/Dados/Resumo_mundial.csv'
url_producao = 'https://github.com/alura-cursos/IA-produtividade-DS/raw/main/Dados/Producao_total.csv'

Temos dois arquivos CSV, o primeiro se chama Resumo_mundial.csv e o segundo se chama Producao_total.csv. Ambos estão disponíveis no GitHub.

A string da URL de Resumo_mundial.csv está armazenado na variável url_resumo_mundial. A outra, que é Producao_total.csv, está em url_producao.

Agora que entendemos a problemática, podemos desenvolver nosso primeiro código com Bard.

Nós temos uma instrução (prompt) que solicita a criação de um código para importar esses dados. A prompt em questão é:

Quero que você atue como um cientista de dados e codifique para mim. Estou desenvolvendo um projeto de Data Science focado no tema de consumo e produção de energia elétrica pelo mundo.

Tenho as url de 2 datasets no formato csv salvas no meu notebook colab. As variáveis são as seguintes: "url_resumo_mundial" e "url_producao"

Escreva o código em Python para importar os dados.

Portanto, vamos copiar esse prompt com "Ctrl + C" e acessar o Bard. Após fazer login em sua conta, você deve iniciar uma nova conversa.

Na caixa de texto para digitar uma pergunta ou comando, na parte inferior, vamos colar a instrução com "Ctrl + V" e pressionar "Enter" para enviar.

Claro, posso te ajudar com isso. Aqui está o código em Python para importar os dados:

import pandas as pd

# Importar o dataset de resumo mundial
df_resumo_mundial = pd.read_csv(url_resumo_mundial, sep=',')

# Importar o dataset de produção
df_producao = pd.read_csv(url_producao, sep=',')

# Visualizar o primeiro conjunto de dados
print(df_resumo_mundial.head())

# Visualizar o segundo conjunto de dados
print(df_producao.head())

A resposta inicial do Bard já conta com o código de import pandas as pd que serve para importar a biblioteca Pandas.

Em cada etapa, o Bard adiciona comentários explicativos. Além de importar os datasets, ele exibe uma visualização dos dados. Essa importação considera que nossos dados são separados por vírgulas, mesmo que essa informação não tenha sido especificada.

Nós também podemos acessar outros rascunhos, que são outras respostas possíveis que o Bard fornece. Então, apertamos o botão "Acessar outros rascunhos" no canto superior direito.

Vamos mudar para o rascunho 2 que contém uma resposta parecida com o primeiro rascunho.

import pandas as pd

# Importar os dados do resumo mundial
df_resumo_mundial = pd.read_csv(url_resumo_mundial)

# Importar os dados da produção
df_producao = pd.read_csv(url_producao)

# Combinar os dois datasets
df_resumo_mundial.merge(df_producao, on='Country')

# Visualizar as primeiras linhas do dataset
df.head()

O Bard também realiza a importação dos dados com pd.read_csv(). Apesar de não ter a separação dos dados, temos um merge(), que vai combinar esses dois conjuntos de dados. Isso, no entanto, não é o que solicitamos.

O rascunho 3 faz a importação de Pandas da mesma forma que os rascunhos 1 e 2. Depois, ele executa read_csv() diretamente com a URL. Depois, inclui dois códigos para visualizar as primeiras linhas de cada conjunto de dados.

import pandas as pd

# Importar o dataset de resumo mundial
df_resumo = pd.read_csv(url_resumo_mundial)

# Importar o dataset de produção
df_producao = pd.read_csv(url_producao)

# Visualizar as primeiras linhas do dataset de resumo mundial
df_resumo.head()

# Visualizar as primeiras linhas do dataset de produção
df_producao.head()

Este código é o mais adequado para o nosso propósito, então vamos copiá-lo.

No notebook, vamos colar esse código em uma célula vazia. Na primeira parte, não precisamos modificar nada em import pandas as pd.

Depois, onde importamos os datasets, gostaríamos de chamá-los simplesmente de resumo_mundial e producao. No momento, não precisamos visualizar os resultados, só precisamos importar os dados, então vamos remover os últimos códigos da nossa célula.

import pandas as pd

# Importar o dataset de resumo mundial
resumo_mundial = pd.read_csv(url_resumo_mundial)

# Importar o dataset de produção
producao = pd.read_csv(url_producao)

Antes de executar essa célula com "Shift + Enter", devemos executar a célula que contém as URLs para acessar os arquivos CSV. Feito isso, vamos executar a segunda célula para importar os dados.

Agora que temos os dados e entendemos o contexto, podemos começar nossa análise.

Entendendo os dados mundiais - Explorando resumo mundial

Vamos iniciar nossas análises a partir do dataframe resumo_mundial, que contém informações de produção, consumo, exportação do mundo inteiro. Para realizar esses códigos de exploração, que nos permitirão entender melhor nossos dados, vamos novamente utilizar o Bard.

Exploração de resumo_mundial

Na seção do notebook para a exploração de resumo_mundial, já temos um prompt a seguir:

Agora vamos começar a trabalhar com o dataframe "resumo_mundial", escreva um código que permita executar a exploração desses dados.

Vamos copiar essa prompt mais curta, colá-la e executá-la no Bard.

Claro, aqui está o código em Python para explorar os dados do dataframe "resumo_mundial":

import pandas as pd

# Importar o dataset de resumo mundial
resumo_mundial = pd.read_csv(url_resumo_mundial)

# Exibir as primeiras 5 linhas do dataframe
resumo_mundial.head()

# Exibir as últimas 5 linhas do dataframe
resumo_mundial.tail()

# Exibir as estatísticas descritivas do dataframe
resumo_mundial.describe()

# Exibir o tipo de dados de cada coluna do dataframe
resumo_mundial.dtypes

# Exibir o número de linhas e colunas do dataframe
resumo_mundial.shape

# Exibir os nomes das colunas do dataframe
resumo_mundial.columns

# Exibir os valores únicos de cada coluna do dataframe
resumo_mundial.nunique()

# Exibir a correlação entre as colunas do dataframe
resumo_mundial.corr()

# Exibir o gráfico de barras dos valores únicos da coluna "país"
resumo_mundial ["país"].value_counts().plot(kind="bar")

# Exibir o gráfico de linhas dos valores da coluna "consumo" ao longo do tempo
resumo_mundial ["consumo"].plot(kind="line")

# Exibir o gráfico de dispersão dos valores das colunas "consumo" e "produção"
resumo_mundial[["consumo", "produção"]].plot(kind="scatter")

O Bard prontamente nos retorna um código para explorar os dados. A primeira parte do código importa o Pandas como pd e importa os dados do resumo_mundial. Vamos ignorar esse trecho, pois já os realizamos no vídeo anterior.

Agora, vamos analisar as etapas sugeridas para a exploração dos dados. Primeiramente, temos um comando para exibir as cinco primeiras linhas do dataframe, utilizando resumo_mundial.head().

Vamos copiar este código e seu comentário correspondente para colar no nosso notebook.

# Exibir as primeiras 5 linhas do dataframe
resumo_mundial.head()
#dataproducao_total_de_combustiveis_fosseisproducao_de_energia_nuclearproducao_total_de_energia_renovavelproducao_total_de_energia_primariaimportacoes_de_energia_primariaexportacoes_de_energia_primariaimportacoes_liquidas_de_energia_primariavariacao_nas_reservas_de_energia_primaria_e_outrosconsumo_total_de_combustiveis_fosseisconsumo_de_energia_nuclearconsumo_total_de_energia_renovavelconsumo_total_de_energia_primaria
01973-01-314.9326320.0681030.4039815.4047151.1730800.1257811.0472990.7718586.7476510.0681030.4039817.223873
11973-02-284.7295820.0646340.3609005.1551151.1680050.1208831.0471220.3901296.1630950.0646340.3609006.592366
21973-03-314.9469020.0724940.4001615.4195561.3094730.1399501.169523-0.0676406.0446470.0724940.4001616.521439
31973-04-304.7162710.0640700.3804705.1608121.0851690.1941850.890984-0.1100675.4931840.0640700.3804705.941729
41973-05-314.9569950.0621110.3921415.4112461.1628040.1967750.966029-0.3053355.6135510.0621110.3921416.071940

Após apertar "Shift + Enter" para executar a célula, é retornado as primeiras cinco linhas.

Antes de analisarmos, vamos explorar o comando que exibe as últimas cinco linhas do nosso dataframe, usando resumo_mundial.tail(). Copiamos as linhas de código e colar em outra célula do notebook.

# Exibir as últimas 5 linhas do dataframe
resumo_mundial.tail()
#dataproducao_total_de_combustiveis_fosseisproducao_de_energia_nuclearproducao_total_de_energia_renovavelproducao_total_de_energia_primariaimportacoes_de_energia_primariaexportacoes_de_energia_primariaimportacoes_liquidas_de_energia_primariavariacao_nas_reservas_de_energia_primaria_e_outrosconsumo_total_de_combustiveis_fosseisconsumo_de_energia_nuclearconsumo_total_de_energia_renovavelconsumo_total_de_energia_primaria
5942022-07-316.9214260.7181091.1324008.7719351.9078622.294320-0.3864580.1993276.7368910.7181091.1111618.584805
5952022-08-317.0475250.7185261.0440268.8100771.8218282.327090-0.5052620.2256286.7551540.7185261.0365898.530444
5962022-09-306.9152010.6646730.9786478.5585211.7020482.219831-0.517784-0.2579976.1442800.6646730.9606947.782741
5972022-10-317.1266180.6147411.0192098.7605681.7677332.322475-0.554743-0.3946516.1797210.6147411.0068597.811175
5982022-11-306.8753680.6470291.0975198.6199151.7616972.305923-0.5442260.2102026.5534310.6470291.0764698.285891

Uma observação inicial que podemos fazer é em relação à coluna de data. Percebemos que ela começa em 1973, iniciando em janeiro desse ano e continuando mês a mês.

Observando as primeiras e últimas cinco linhas deste dataframe, notamos que os dados estão atualizados até o ano de 2022. Isso indica que possuímos uma base de dados coletados mensalmente, desde 1973 até 2022, totalizando 50 anos de dados.

Retornando ao Bard, é sugerida a exibição das estatísticas descritivas do dataframe usando resumo_mundial.describe(). Copiamos este código e o executamos no notebook.

# Exibir as estatísticas descritivas do dataframe
resumo_mundial.describe()
Statisticproducao_total_de_combustiveis_fosseisproducao_de_energia_nuclearproducao_total_de_energia_renovavelproducao_total_de_energia_primariaimportacoes_de_energia_primariaexportacoes_de_energia_primariaimportacoes_liquidas_de_energia_primariavariacao_nas_reservas_de_energia_primaria_e_outrosconsumo_total_de_combustiveis_fosseisconsumo_de_energia_nuclearconsumo_total_de_energia_renovavelconsumo_total_de_energia_primaria
count599599599599599599599599599599599599
mean5.0346340.5195670.5937096.1479091.8734590.6117041.2617550.0318356.3213910.5195670.5916207.441499
std0.6101260.2026970.1933510.8950760.5612860.5445320.7249070.4766520.7083560.2026970.1892290.946882
min3.6760650.0621110.3043284.3068000.7105580.056798-0.554743-0.8946274.7839100.0621110.3043285.435627
25%4.6835590.3286350.4674145.5902891.4470910.3107750.856081-0.3278215.7980860.3286350.4674146.659050
50%4.8316010.5942930.5274795.9061731.8486420.3733461.200957-0.0810286.3385030.5942930.5272577.617372
75%5.0873840.6810560.6852526.2901922.2812050.6801191.7595290.3247116.7893400.6810560.6835678.111785
max7.1266180.7804561.2187908.8100773.1496402.3863372.7416921.5513458.0963230.7804561.1993839.664299

Isso nos retorna uma tabela com análises estatísticas, que pode ser útil para comparações futuras.

Continuando com as sugestões do Bard, é indicado exibir o tipo de dados de cada coluna no dataframe utilizando resumo_mundial.dtypes. Novamente vamos copiar e executá-la no notebook.

# Exibir o tipo de dados de cada coluna do dataframe
resumo_mundial.dtypes
ColunaTipo
dataobject
producao_total_de_combustiveis_fosseisfloat64
producao_de_energia_nuclearfloat64
producao_total_de_energia_renovavelfloat64
producao_total_de_energia_primariafloat64
importacoes_de_energia_primariafloat64
exportacoes_de_energia_primariafloat64
importacoes_liquidas_de_energia_primariafloat64
variacao_nas_reservas_de_energia_primaria_e_outrosfloat64
consumo_total_de_combustiveis_fosseisfloat64
consumo_de_energia_nuclearfloat64
consumo_total_de_energia_renovavelfloat64
consumo_total_de_energia_primariafloat64

dtype: object

Nesse retorno, conseguimos observar que apenas a coluna de data está como object (objeto). Então, ela é do tipo string. Isso é relevante porque, quando tratamos dados de tempo, precisamos transformá-los para um tipo temporal. Não é possível utilizar um objeto de texto.

Todas as outras colunas são do tipo float, ou seja, são numéricas.

Retornando agora para o Bard, ele propõe mostrar o número de linhas e colunas do dataframe, para isso, ele utiliza o método shape.

# Exibir o número de linhas e colunas do dataframe
resumo_mundial.shape

(599, 13)

Depois de executar o comando, são retornadas 13 colunas e 599 dados. Faz sentido, considerando que nós sabemos que são aproximadamente 50 anos coletados, com exceção de um mês, pois observamos que não foi coletado no mês de dezembro de 2022.

São 599 amostras coletadas mensalmente, de 1973 até 2022.

O Bard também sugere exibir o nome das colunas do dataframe, para isso, usamos o método columns.

# Exibir os nomes das colunas do dataframe
resumo_mundial.columns

Isso pode ser útil em algum momento, caso queiramos listar quais são as colunas do nosso dataframe.

Index(['data', 'producao_total_de_combustiveis_fosseis',
       'producao_de_energia_nuclear', 'producao_total_de_energia_renovavel',
       'producao_total_de_energia_primaria', 'importacoes_de_energia_primaria',
       'exportacoes_de_energia_primaria',
       'importacoes_liquidas_de_energia_primaria',
       'variacao_nas_reservas_de_energia_primaria_e_outros',
       'consumo_total_de_combustiveis_fosseis', 'consumo_de_energia_nuclear',
       'consumo_total_de_energia_renovavel',
       'consumo_total_de_energia_primaria'],
      dtype='object')

Seguindo as sugestões do Bard, ele propõe exibir os valores únicos de cada coluna do dataframe com método nunique().

# Exibir os valores únicos de cada coluna do dataframe
resumo_mundial.nunique()
ColunaNon-Null Count
data599
producao_total_de_combustiveis_fosseis599
producao_de_energia_nuclear598
producao_total_de_energia_renovavel599
producao_total_de_energia_primaria599
importacoes_de_energia_primaria599
exportacoes_de_energia_primaria599
importacoes_liquidas_de_energia_primaria599
variacao_nas_reservas_de_energia_primaria_e_outros599
consumo_total_de_combustiveis_fosseis599
consumo_de_energia_nuclear598
consumo_total_de_energia_renovavel599
consumo_total_de_energia_primaria599

dtype: object

Aparentemente, não temos dados categóricos, visto que a quantidade de dados únicos em cada coluna é a mesma quantidade de linhas - com exceção, de producao_de_energia_nuclear e consumo_de_energia_nuclear, que possuem dois valores que são iguais, porém isso não os torna categóricos.

Finalmente, o Bard sugere mostrar a correlação entre as colunas do dataframe, utilizando o método corr().

# Exibir a correlação entre as colunas do dataframe
resumo_mundial.corr()
-producao_total_de_combustiveis_fosseisproducao_de_energia_nuclearproducao_total_de_energia_renovavelproducao_total_de_energia_primariaimportacoes_de_energia_primariaexportacoes_de_energia_primariaimportacoes_liquidas_de_energia_primariavariacao_nas_reservas_de_energia_primaria_e_outrosconsumo_total_de_combustiveis_fosseisconsumo_de_energia_nuclearconsumo_total_de_energia_renovavelconsumo_total_de_energia_primaria
producao_total_de_combustiveis_fosseis1.0000000.4116840.8510620.9587190.0515400.925480-0.655291-0.0059990.1894290.4116840.8471920.401573
producao_de_energia_nuclear0.4116841.0000000.6099870.6388490.7790240.5159030.2156550.1658860.6866301.0000000.6135680.852501
producao_total_de_energia_renovavel0.8510620.6099871.0000000.9342770.2379290.941256-0.5228220.0968230.2650700.6099870.9997650.531641
producao_total_de_energia_primaria0.9587190.6388490.9342771.0000000.2629460.951008-0.5107780.0543930.3418770.6388490.9323990.581630
importacoes_de_energia_primaria0.0515400.7790240.2379290.2629461.0000000.1407990.668523-0.0102130.7214930.7790240.2420780.755221
exportacoes_de_energia_primaria0.9254800.5159030.9412560.9510080.1407991.000000-0.6421560.0681480.1889490.5159030.9374770.441663
importacoes_liquidas_de_energia_primaria-0.6552910.215655-0.522822-0.5107780.668523-0.6421561.000000-0.0590990.4167090.215655-0.5167720.252991
variacao_nas_reservas_de_energia_primaria_e_outros-0.0059990.1658860.0968230.054393-0.0102130.068148-0.0590991.0000000.6086310.1658860.0928780.509563
consumo_total_de_combustiveis_fosseis0.1894290.6866300.2650700.3418770.7214930.1889490.4167090.6086311.0000000.6866300.2651180.948572
consumo_de_energia_nuclear0.4116841.0000000.6135680.6388490.7790240.5159030.2156550.1658860.6866301.0000000.6135680.852501
consumo_total_de_energia_renovavel0.8471920.6135680.9997650.9323990.2420780.937477-0.5167720.0928780.2651180.6135681.0000000.532513
consumo_total_de_energia_primaria0.4015730.8525010.5316410.5816300.7552210.4416630.2529910.5095630.9485720.8525010.5325131.000000

Após apertar "Shift + Enter", é retornado um dataframe que tem os valores de correlação entre as colunas de resumo_mundial. Essa visualização não é tão interessante para fazermos uma análise agora.

Os outros códigos que Bard nos dá, lidam com criação de gráficos. Mas não vamos utilizá-los, até porque o Bard não sabe quais são as colunas que existem dentro do dataframe resumo_mundial, então o código não seria aplicável.

Portanto, vamos ignorar essas três últimas sugestões

Finalizamos essa primeira análise mais superficial, mas ainda precisamos fazer a análise da correlação das colunas, o que faremos no próximo vídeo.

Sobre o curso Python com IAs: acelerando a produtividade em data science

O curso Python com IAs: acelerando a produtividade em data science possui 126 minutos de vídeos, em um total de 49 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