You are on page 1of 8
‘sartt/2023, 22:34 {ont Jokts202_uts2tin_pro FOCO NO MERCADO DE TRABALHO INTRODUGAO A MANIPULAGAO DE DADOS EM PANDAS Vanessa Cadan Scheffer ‘TRANSFORMACAO DOS DADOS E EXTRACAO DE INFORMAGOES Abiblioteca pandas possui métodos capazes de fazer a leitura dos dados e o carregamento em um DataFrame, além de recursos como a aplicacao de filtro. Fonte: Shutterstock Deseja ouvir este material? Audio disponivel no material digital DESAFIO Como desenvolvedor em uma empresa de consultoria de software, voce foi alocado em um projeto para uma empresa de gerago de energia. Essa empresa ‘tem interesse em criar uma soluc3o que acompanhe as exportacdes de etanol no Brasil. Esse tipo de informacao esté disponivel no site do governo brasileiro http:// www.dados.gov,br/dataset, em formatos CSV, JSON, dentre outros. Ver anotasbes hntps:twwwcolaboraread.com briintegracaoAlgetectindex? usvarioEmall-weltoncompanyé40gmal.comBusuarioNome=WELTON*ANGELO*SANTO.... 118 ‘sartt/2023, 22:34 font Jokts202_48s2.in_pro 1 € possivel encontrar vérias bases de dados (datasets), contendo informagées de importacao e exportacao de etanol. O cliente estd interessado em obter informagées sobre a Exportaco Etano Hidratado (barris equivalentes de petréleo) e 5e9875d39a5. Para a andlise Ver anotasbes serd necessario fazer 0 download do arquivo, O cliente deseja uma solugio que extraia as seguintes informacées: * Em cada ano, qual o menor e 0 maior valor arrecadado da exportagiio? * Considerando o periodo de 2012 a 2019, qual a média mensal de arrecadamento com a exportiacao. * Considerando o periodo de 2012 a 2019, qual ano teve o menor arrecadamento? E o menor? Como parte das informacdes técnicas sobre 0 arquivo, foi Ihe informado que se trata de um arquivo delimitado CSV, cujo separador de campos ponto-e-virgula e a codificagao do arquivo esté em ISO-8859-1. Como podemos obter 0 arquivo? Como podemos extrair esas informagées usando a linguagem Python? Serao necessirios transformacées nos dados para obtermos as informacées solicitadas? RESOLUGAO Para comegar a resolver 0 desafio, precisamos fazer 0 download do arquivo com 0s dados. Podemos acessar 0 endereco http://www.dados.gov.br/dataset/importac s-e-exportacoes-de-etanol/resource/ca6a2afe-def5-4986-babc-b5e9875d39a5 dlicar no botdo "ir para recurso" ou entéo digitar o endereco http:/www.anp.gov.b rlarquivos/dadosabertos/iee/exportacao-etanol-hidratado-2012-2020-bep.csv. que fara 0 download do arquivo de modo automatico. Apés obter 0 arquivo, basta copié-lo para a pasta do projeto. Conforme orientagées, 0 arquivo é delimitado, mas seu separador padréo é 0";" & a codificag3o do arquivo foi feita em ISO-8859-1. Portanto, teremos que passar esses dois parametros para a leitura do arquivo usando a biblioteca pandas, uma vez que 0 delimitar padréo da biblioteca é 0 ",". No cédigo a seguir, estamos fazendo a importago dos dados. Veja que temos 9 linhas e 8 colunas. hitpsswww.colaboraread, com brintegracaoAlgetectindex usvario€ mal-wetoncompany%40gmal.com&usuarioNome=WELTON*ANGELO*SANTO... 2/8 ‘sartt/2023, 22:34 ft Jokis202_48s2_tn_pro In [28]: import pandas as pd df_etanol = pd.read_csv('exportacao-etanol -hidratado-2012-2020- bep.csv', sep=';', encoding="I50-8859-1") print(d#_etanol.info()) df_etanol.head(2) Rangelndex: 9 entries, @ to & bata colurens (total 17 columns): -ANO 9 non-null inte4 Ver anotasbes PRODUTO 9 non-null object MOVIMENTO COMERCIAL 9 non-null. object UNTDADE 9 non-null object AN 9 non-null object Fev 9 non-null object MAR 8 non-null object ABR 9 non-null object nat 8 non-null object uN 8 non-null object aut 8 non-null object AGO 8 non-null object ser 8 non-null object our 8 non-null object Nov 8 non-null object vez @ non-null object TOTAL 8 non-null object dtypes: int6a(1), object(16) menory usage: 1.3+ KB None out(28]: nosesna sano proouro MOUNTS unuce yaya ‘Agora que temos os dados, vamos dividir nossa solug3o em duas etapas: a de transformacao dos dados e a de extracao de informacies. | ETAPA DE TRANSFORMACOES Vamos comesar removendo as colunas que sabemos que nao serao utilizadas, afinal, quanto menos dados na meméria RAM, melhor. Veja no cédigo a seguir a remogio de trés colunas, com o pardmetro inplac ue, fazendo com que a transformagao seja salva no préprio objeto. hips. colaboraread.com brintegracaoAlgetectindex usvario€ mal-wetoncompany%40gmal.com&usuarioNome=WELTON*ANGELO*SANTO... 318 ‘sartt/2023, 22:34 {ont Jokts202_uts2_tin_pro In [29]: df_etanol.drap(coluans=[*PRODUTO", “MOVIMENTO COMERCIAL" , "UNIDADE'], inplace=True) df_etanol.head(2) out[29]: a ee) Ver anotasbes ‘Agora vamos redefinir os indices do DF, usando a coluna ANO. Esse passo sera importante para a fase de extragdo de informag6es. Veja que também optamos em remover a coluna do DF (drop=True). In [38]: df_etanol.set_index(keys="ANO", drop=True, inplace=True) «¢_etanol .head(2) out [30]: wc Como 0s dados sao de origem brasileira, a virgula é usada como separador decimal, 0 que nao condiz com 0 padrao da biblioteca pandas. Precisamos converter todas as virgulas em ponto, Para isso vamos utilizar uma estrutura de repeticdo que filtra cada coluna, criando uma Series, o que nos habilita a utilizar a funcionalidade str.replace(, ) para a substituigo. In [31]: for mes in "JAN FEV MAR ABR MAI JUN JUL AGO SET OUT NOV DEZ TOTAL" «split() df_etanol[mes] = df_etanol{mes}.str.replace(',", print (df_etanol.dtypes) d#_etanol-head(2) JAN object Fev object. MAR object ABR object MAI object JUN object, UL object, AGO object SET object our object Nov object Dez object TOTAL object type: object -ntps:twwwcolaboraread.com brlintegracaoAgeteclindex .usvarioEmal-weltoncompany40gmal.comBusuarioNome=WELTON+ANGELO*SANTO. 418 ‘sartt/2023, 22:34 -ntps:twwwcolaboraread.com brlintegracaoAgeteclindex .usvarioEmal-weltoncompany40gmal.comBusuarioNome=WELTON+ANGELO*SANTO. out [31]: font Jokts202_48s2.in_pro a a a mot Mesmo trocando a virgula por ponto, a biblioteca ainda nao conseguiu identificar como ponto flutuante, Portanto, vamos fazer a conversao usando 0 método astype(float). In [32]: out (32): df_etanol = ¢f_etanol.astype(float) print (df_etanol.dtypes) 4¢_etanol .head(2) DAN Floatea FEV floated mar floatea ABR Floated MAI Floatea DUN Floate4 UL floatea AGO Floatea SET floatea cur Floatea Nov floatea DEZ Float TOTAL —floatea type: object a moe Ver anotasbes 58 ‘sartt/2023, 22:34 font Jokts202_48s2.in_pro PESQUISE MAIS Poderiamos ter usado a biblioteca locale para fazer parte desse trabalho, que tal se aprofundar e pesquisar mais?! ETAPA DE EXTRAGAO DE INFORMACOES Ver anotasbes ‘Agora que preparamos os dados, podemos comecar a etapa de extracdo das informagées solicitadas. Vamos comesar extraindo o menor e maior valor arrecadado em cada ano. Como nosso indice é 0 préprio ano, podemos usar a fungo loc para filtrar e ent&o os métodos min() e maxi). Para que a extrago seja feita para todos os anos, usamos uma estrutura de repeticSo. Nas linhas print(#*Nenor valor = (minino:, .0F)*.replace(',", ‘.*)) print(f"Mator valor = {maxino:,.0f}".replace(’,*, *.*)) do cédigo a seguir, estamos fazendo a impressao dos valores solicitados. Para que fique mais claro a leitura, formatamos a exibigao. 0 cédigo minim @¢ faz com que seja exibida somente a parte inteira e © separador de milhar seja feito por virgula. Em seguida substituimos a virgula por ponto que ¢ o padrao brasileiro. In [33]: # Em cada ano, qual 0 menor e 0 maior valor arrecadado da ‘exportacdo? for ano in range(2012, 2021) ano_info = df_etanol.Joc{ano] rrinimo = ano_info.min() maximo = ano_info.max() print (F"Ano = {an0}") print (f*Menor valor = {minino:,.0f}"-replace(',", *.")) print(f*Maior valor = {maxino:, .0f}*-replace(",", *.")) print( y hitpswww.colaboraread.com brintegracaoAlgetectindex usvariEmal-wetoncompany%40gmal.com&usuarioNome=WELTON*ANGELO*SANTO... 6/8 ‘sartt/2023, 22:34 font Jokts202_48s2.in_pro Ano = 2012 Menor valor = 87.231 Maio valor = 4.078.157 Ano = 2013 Menor valor = 54.390 Maion valor = 4.168.543, Menor valor = 74.303 Maior valor = 2.406.110 Ver anotasbes Menor valor = 31.641 Maion valor = 3.140.140 Ano = 2016 Menor valor = 75.274 Maion valor = 3.394.362 Ano = 2017 Menor valor = 2.664 Maion valor = 1.337.427 Ano = 2018, Menor valor = 4.249 Maion valor = 2.329.985 Ano = 2019 Menor valor = 14.902 Maior valor = 2.316.773, Ano = 2020 Menor valor = 83.838 Maior valor = 298.194 ‘Agora, varios implementar o cédigo para extrair a média mensal, considerando 0 periodo de 2012 a 2019. Novamente, podemos usar o loc para filtrar os anos requisitados e, para cada coluna, extrair a média. Na linha 5 fazemos a extragao, mas veja que estd dentro de uma estrutura de repeticdo, més a més. Na linha 6 fazemos a impressao do resultado, também formatando a saida. Veja que o més de abril apresenta um rendimento bem inferior aos demais! In [34]: # Considerando 0 pertodo de 2012 a 2019, qual a média mensal de arrecadamento com a exportacdo print("média mensal de rendimentos:") for mes in "JAN FEV MAR AAR MAE JUN JUL AGO SET OUT NOV Dez" split(): media = of etanol.loc[2012:2019, mes] mean() print(#"(nes} = (redia:, .0}"-replace(",", ".")) hips. colaboraread.com brintegracaoAlgetectindex ?usvario€ mal-wetoncompany%40gmal.com&usuarioNome=WELTON*ANGELO*SANTO... 7/8 ‘sartt/2023, 22:34 font Jokts202_48s2.in_pro Média mensal de rendinentos: 248.380 210.858 135.155 58.929 106.013 244.645 295.802 276.539 354,454 376.826 266.748 319.588 Ver anotasbes ‘Agora precisamos descobrir qual ano teve a menor e a maior quantia em exportago, considerando o perfodo de 2012 a 2019. Para isso vamos usar 0 método idxmin() para descobrir 0 minimo e idxnax() para o maximo. In [35]: # Considerando o pertodo de 2012 a 2019, qual ano teve o menor arrecadamento? £ 9 menor? ano_menor_arrecadacao = df_etanol.loc{2012:2019, "TOTAL" ].idxmin() ano_maior_arrecadacao = df_etanol.loc{2012:2619, "TOTAL" ].idxnax() print(F"Ano com menor arrecada¢o = (ano_nenor_arrecadacao}") print(F*Ano com maior arrecada¢3o = (sno_maior_srrecadacso}") ‘Ano con menor arrecada¢ao = 2017 ‘ano con maior arrecada¢lo = 2013 Agora é com vocé, que tal agora organizar as cédigos em fungées e deixar a solugo pronta para ser usada pela equipe?! DESAFIO DA INTERNET Ganhar habilidade em programacao exige estudo e treino (muito treino). Acesse 0 endereco https://www.kaggle,com/datasets, faco seu cadastro e escolha uma base de dados para treinar e desenvolver seu conhecimento com a biblioteca pandas. htps www. colaboraread, com brintegracaoAlgetectindex usuario mal-wetoncompany%40gmal.com&usuarioNome=WELTON*ANGELO*SANTO... 8/8

You might also like