Tag

pandas Archives - Análise Macro

Juntar data frames no Python

By | Python

Uma dúvida comum para iniciantes e até mesmo intermediários no estudo de Análise de dados é: como juntar diferentes data frames? quais os métodos que são possíveis de utilizar? No post de hoje, pretendemos responder estas dúvidas, mostrando as formas de realizar esse processo utilizando a biblioteca pandas do Python.

Devemos separar alguns pontos antes de entender como juntar data frames no Python.

Juntar dados pode ser realizado de duas formas: junção por meio de linhas (é como colocar um data frame encima do outro, empilhando as linhas) e junção de data frames por meio de dados relacionais, isto é, juntar os data frames que possuem uma coluna "chave" (com os mesmos valores). Usuários da linguagem SQL podem aprender rápido nesse caso, devido as similares dos métodos.

Concatenar

Concatenar permite juntar os data frames por meio das linhas, empilhando um data frame sobre o outro, utilizando os índices como localização. Vejamos o exemplo abaixo. Criamos dois data frames que possuem as mesmas colunas, porém, com valores diferentes.

A função cocat() permite fazer a junção das linhas passando uma lista de data frames como argumento. Como a localização do índice é quem manuseio os lugares, veja que como não havíamos identificado na criação dos data frame a ordem, acaba gerando um índice totalmente desorganizado, com valores 0,1,2,3,0,1,2,3.

Para evitar esse problema, utiliza-se o argumento  ignore_index = True. Veja a diferença abaixo.

Juntar os dados

Para juntar os dados de forma relacional, podemos utilizar as funções merge() e join().

Veja o exemplo abaixo, construímos dois data frames possuindo dados diferentes, porém, com uma coluna "key" (chave) idênticas para que seja possível juntar os data frames.

Por meio da função merge(), inserimos os dois data frames como argumento, e especificamos qual a coluna que irá ser a chave por meio do argumento on = "key".

E se as colunas chave não forem totalmente idênticas? Podemos especificar se queremos juntar com o argumento how =  . Entre as 3 mais comuns: left permite juntar com base na chave do data frame da "esquerda" (a primeira utilizada no argumento da função); right permite juntar com base na chave do data frame da "direita"; inner permite juntar com base na chave comum, retirando todos os possíveis NAs.

Vejamos o exemplo abaixo, com a função merge(), especificamos que os data frames abaixo (que possuem chaves diferentes) se juntem pela chave do data frame da direita (right1).

Repetimos o processo novamente, entretanto, especificando o data frame da esquerda com how = "left". Veja a diferença do resultado.

E se ao invés de colunas, quisermos juntar por meio dos valores do índices do data frame? Isto é, o índice como chave.

De forma simples e rápida, utiliza-se join(), que aplica como um método do data frame e utiliza o outro data frame como argumento. Veja que a escolha de left ou right é automática para left.

Apesar de automático, podemos ainda alterar a forma de junção por meio do argumento how = .

Com a função merge() também podemos especificar que queremos juntar com o índice como chave. Para isso, devemos identificar os argumentos right_index e left_index igual a True.

Por fim, podemos resolver um problema com dados reais. Abaixo importamos dados de preços da ação ITUB4 e da Ibovespa e data frames separados. Queremos juntar os dois data frames. Como fazemos isso?

No caso, ambos data frames possuem o índice em comum, que neste caso, possuem os valores da data, referentes ao dia de cada preço da ação. Escolhemos juntar por meio a função merge(), identificando os índices com left_index e right_index e a forma de junção como "inner".

Ainda existem muitas ferramentas que podem auxiliar neste processo de junção de dados no Python, mas espero que essa introdução seja suficiente para aqueles que possuem dúvidas.

Quer saber mais?

Veja nossos cursos de R e Python aplicados para a Análise de Dados e Economia

___________________

Referências

Pandas User Guide: Merge, join, concatenate and compare.

Análise de Dados da Inflação utilizando o Python

By | Indicadores

A inflação é conhecida como o termo que representa a taxa de crescimento do nível geral de preços entre dois períodos distintos. No Brasil, o indicador que consolidou-se como o principal índice de preços é o Índice de Preços ao Consumidor Amplo (IPCA), divulgado pelo IBGE e amplamente utilizado pela autoridade monetária como referência para realizar o controle da inflação. No post de hoje, mostraremos como podemos realizar a importação dos dados do IPCA e visualizar como forma de obter um análise.

O IPCA é divulgado mensalmente pelo IBGE, portanto, podemos importar diretamente do SIDRA os dados do indicador utilizando a biblioteca {sidrapy}. Primeiro, iremos buscar a série que diz respeito a variação mensal, acumulada em 3 meses, acumulada em 6 meses, acumulada em 12 meses e acumulado no ano, que diz respeito a tabela 1737.

Em um segundo momento, buscaremos a série de pesos e variação de cada grupo do IPCA, e veremos a contribuição de cada grupo sobre o IPCA, através da tabela 7060.

Para importar as séries com a função get_table do {sidrapy}, buscamos a API das tabelas, com os parâmetros configurados, de forma a obter os códigos. Ensinamos este processo em um post anterior: Coletando dados do SIDRA com o Python.

Variações do IPCA: tabela 1737



 

IPCA Contribuição por grupo: tabela 7060



Quer saber mais?

Veja nossos cursos de Macroeconomia através da nossa trilha de Macroeconomia Aplicada.

Fazendo limpeza de dados Macroeconômicos com R e o Python

By | Hackeando o R, Python

O processo de limpeza de dados é extremamente importante para a análise de dados. Sem esta etapa, seria impossível lidar com dados "sujos", dos quais possuem formatos, classes e estruturas não compatíveis com o R e o Python, principalmente para o modo de lidar com dados Macroeconômicos. O objetivo do post de hoje será mostrar os pontos principais que devem ser levados em consideração ao realizar o processo de limpeza de dados.

Ao realizar a importação de dados Macroeconômicos, é comum enfrentar alguns desafios para efetivamente lidar com o dataset, sendo eles:

  • Nomes de colunas indesejadas;
  • Colunas (variáveis) não necessárias;
  • Filtragem;
  • Formatos/tipos dos dados de variáveis não corretos;
  • Problemas com o formato de data

Cada problema listado acima pode ser resolvido facilmente utilizando o R e o Python. Elencaremos cada problema em ambas as linguagens

Limpeza de dados Macroeconômicos no R

Tomaremos como exemplo a série do PIB a preços de mercado em milhões retirado do Ipeadata utilizando o pacote {ipeadatar}. O primeiro passo será investigar o data frame e sua estrutura

Vemos que o data frame já é importado em classe tibble com cinco colunas, representando o código, a data, o valor da série, o nome do território e o código territorial, respectivamente. Não há motivos para manter as colunas que não sejam a de data e do valor da série, portanto, iremos remover estas colunas utilizando a função select().

O próximo passo, este mais a gosto do usuário, será renomear as colunas do objeto. Como queremos que sejam facilmente reconhecidos as variáveis, utilizaremos nomes que sugerem o seu significado.

Um ponto interessante do R é a facilidade de manipulação com séries temporais. Ao inspecionar o tibble, vemos que há um intervalo trimestral para as observações, seria interessante, portanto, utilizar um formato de data mais conveniente para o caso. Podemos realizar a mudança utilizando a função yearquarter() do pacote {tsibble}.

Fácil até então, certo? Porém, nem sempre pode ser tão facilitado assim. Um caso em que as variáveis não são importadas com seus devidos formatos ocorre ao utilizar o pacote {sidrar} para obter dados do Sidra - IBGE.

Como exemplo podemos utilizar a Pesquisa Mensal de Serviços da Tabela 6442. Obtemos sua API através do site do Sidra.

Ao analisar o data frame importado, não parece tão simples, certo? O primeiro passo para a limpeza, será definir quais variáveis necessitamos e destas, quais devem ser realizadas as manipulações. Para o momento, queremos o valor da variável, a coluna que define a categoria que o valor se encaixa, uma representado se o valor possui ou não ajuste sazonal, uma coluna definindo qual medida se refere a variável, sendo os valores a receita nominal ou o volume, e não menos importante, a data das observações.

O processo será selecionar estas colunas citadas, mudar seus nomes, filtrar a categoria de interesse da medida, mudar de long para wide e por fim, realizar as mudanças necessárias para a data.

Limpeza de dados Macroeconômicos no Python

Todos os procedimentos acima podem ser feitos também utilizando o Python. Seremos mais diretos desta vez, importando a tabela 1442 do Sidra com a biblioteca {sidrapy} que se refere aos dados do IPCA.

O primeiro procedimento será avaliar  o data frame importado e realizar os ajustes necessários.

Veja que os dados importados possuem colunas com nomes diferentes daqueles importados pelo R, a diferença estão que as colunas com os verdadeiros nomes estão localizados na primeiro observação do data frame, ou seja, precisamos substituir as colunas pela primeira observação.

O segundo passo será selecionar apenas as variáveis de interesse, bem como alterar os seus nomes para algo mais útil.

Por fim, devemos realizar o filtro para a variação do IPCA mensal, de acordo com a categoria inserida na coluna 'variable' e em seguida, alterar a coluna de data para o tipo datetime e a realocar para o índice do data frame.

Quer saber mais sobre R e Python?

Veja nossos cursos de:

Saindo do Excel para o R e Python

By | Hackeando o R, Python

Para aqueles que desejam realizar o processo de análise de dados, o Excel pode ser útil, porém, é possível melhorar ainda mais esse processo utilizando o R e Python. Neste post de hoje, mostraremos para os usuários do Excel como é fácil realizar uma análise exploratória de dados, seguindo o procedimento de avaliar as estatísticas descritivas e a visualização de dados, obtendo resultados que podem ser adquiridos dentro do Excel, porém, de forma simplificada e rápida utilizando as linguagens R e Python.

R e Python são linguagens que se tornaram famosas pelo seu uso no processo de Análise de Dados, simplificando todo o processo de coleta, limpeza, visualização, modelagem e comunicação. De fato, as duas linguagens são diferentes, principalmente em seus propósitos, porém, se encaixaram muito bem na área. O interessante do R e do Python é que ambos são open source, ou seja, qualquer usuário pode criar pacotes e realizar sua divulgação, o que permite as soluções de diversos problemas possam ser compartilhados mundo afora.

Através deste mecanismo de criação de pacotes, tanto R e Python tiveram aqueles que mais se destacaram e que auxiliam no processo de análise exploratória de dados. Enquanto o R possui o Tidyverse (que na realidade é uma junção de diversos pacotes). O Python possui o numpy, o pandas e o matplotlib/seaborn para realizar o processo.

Nos exemplos abaixo, utilizaremos os pacotes citados, além de outros, para mostrar aos usuários do Excel como é fácil utilizar o R e o Python. O dataset utilizado como exemplo será o mpg, que traz informações sobre carros produzido no EUA, Asia e Europa na década de 70 e 80 e suas respectivas características. Você pode baixar o arquivo em .xlsx do mpg por aqui para poder reproduzir o código abaixo.

Análise Exploratória no R

Para realizar a análise exploratória no R utilizaremos três pacotes importante para realizar a manipulação, obter as estatísticas descritivas e auxiliar no processo de visualização de dados.

O primeiro passo para realizar a análise é importar a planilha do dataset no R utilizando a função read_excel(). Em seguida, devemos investigar a estrutura dos dados e suas variáveis, vasculhando as colunas e as observações do mesmo. Ao termos uma ideia de como é o Data Frame, selecionamos as colunas de interesse que iremos utilizar.

O resto do processo é analisar através das estatísticas descritivas e sumarização a configuração dos dados. Esse processo deve ser necessário para tirar insights e responder dúvidas: Em média, qual o peso dos carros? Os pesos dos carros variam muito? Há valores discrepantes nesta variável? Se separarmos por origem dos carros, o padrão de cada variável mudará? Esse formato de perguntas são necessários em qualquer análise exploratória, e auxilia também no processo de modelagem.

Nos códigos acima calculamos valores preciosos sobre as estatísticas descritivas do dataset. Primeiro realizando este cálculo para todas as variáveis como um todo, e depois, separando-as por categorias da origem dos carros. Veja que no processo utilizamos tanto o {dplyr} e o {skimr} (e os dois juntos) para obter os resultados.

Abaixo, o processo de análise também seguirá com as mesmas perguntas, porém, utilizaremos de métodos gráficos para obter a distribuição e o relacionamento das variáveis com o pacote {ggplot2}.

Análise Exploratória no Python

No Python, o processo seguirá o mesmo, com as mesmas perguntas, porém, obviamente, utilizaremos formas diferentes para calcular as estatísticas descritivas e a visualização. A intuição é a mesma, o que muda aqui é somente a sintaxe.

Importaremos os dataset com a função read_excel do pandas e inspecionaremos os dados para em seguida selecionar as variáveis de interersse.



Realizamos o processo de análise de dados sumarizando as estatísticas descritivas e separando os valores por categorias de origem do carros.

Por fim, visualizamos a distribuição e o relacionamento entre as variáveis do dataset.

Quer saber mais?

Veja nossos cursos de R e Python para Análise de dados. Também veja nossa trilha de Ciência de dados.

Regressões Lineares em R e Python

By | mercado financeiro

É comum em nossas vidas construirmos raciocínios lógicos, a partir de acontecimentos do passado, de que tal variável afetou outra. Muitas vezes, lidamos com diversas teorias que demonstram esses raciocínios de forma cuidadosa de acordo com uma história de acontecimentos e de relações entre as variáveis. Mas, e se tivesse uma forma de conseguir estimar, numericamente o efeito dessas relações? Saber se há significância, ou até mesmo, conseguir a partir do efeito numérico prever um resultado? Tudo isso é possível a partir de uma regressão linear, como mostraremos no post de hoje utilizando o R e  o Python.

Regressão Linear

O objetivo principal da Regressão Linear, é a partir de uma equação matemática, definir o efeito de uma ou mais variável independente em uma variável dependente. O nome linear vem justamente da forma de sua equação, no qual define que esse efeito de relacionamentos é uma função linear dos seus parâmetros. Definimos a equação da seguinte forma:

 Y = a + bx+ erro

Nesta equação definimos uma Regressão Linear Simples, pois há somente uma variável independente x, que afeta a variável dependente Y. Ou seja, através desta equação, definimos o efeito de x em Y. O a é uma constante, que mensura o valor da estimativa caso x seja zero. O b (beta) é o parâmetro (ou coeficiente) que mensura a magnitude de uma variação de x em Y. O erro (também conhecido como resíduo) é simplesmente a diferente entre o valor observado de y com o valor estimado pela equação construída de Y, contendo basicamente as variáveis omitidas do modelo.

Para que não  possamos incorrer de muitos erros na Regressão, de forma contenha muitas variáveis omitidas e o valor predito não seja cheio de erros, podemos aumentar o número de variáveis independente de forma que diminua o valor do erro. Sendo assim, construímos uma Regressão Linear Múltipla, denotada pela equação, um pouco mais formal da seguinte forma:

 y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \dots + \beta_k x_k + \varepsilon

Para estimar o valor de  \beta , o método mais comum é através do Mínimo Quadrados Ordinários, que através do conjunto de dados, minimiza o erro, através soma dos quadrados das diferenças entre o valor estimado e os dados observados. Esse tipo de método é mais comum, devido ao fato de que seus pressuposto são menos rígidos. A equação para Beta segue como:

 \hat{\beta} =arg min_{\beta}\sum_{i = 1}^n (y_i - {\beta} x_i)^2

Feito todas as considerações iniciais, podemos partir para um exemplo real no R e Python para exemplificar melhor o conceito de Regressão.

Regressão Linear no R

Criar uma Regressão Linear no R é algo extremamente simples. O que precisamos ter em mãos são os dados da variável dependente e da(s) variável(is) independente(s) e utilizar a função lm() com a fórmula da Regressão como argumento.

Regressão Linear no R: modelo simples de precificação de ativos

Um exemplo para mostrar o efeito de x sobre y ocorre no contexto de finanças, no qual podemos estimar o retorno de um ativo com base no retorno do mercado. Este é um modelo básico que se utiliza a Regressão Linear Simples e é útil para aqueles que queiram entender melhor sobre o efeito prático das relações entre duas variáveis.

Não iremos discorrer muito sobre a importação e transformação de dados. Essa parte ensinamos por completo no nosso curso de R para o Mercado Financeiro.

Importamos os preços de um ativo no R, bem como os pontos do Ibovespa no mesmo período. Transformamos ambos em forma de retorno diário (isto é, a variação do preço de um dia para o outro). O que queremos saber: o quanto a variação do retorno do Ibovespa, tido aqui como o Retorno do Mercado, afeta o Retorno do Ativo?

Após obter nossos dados, podemos utilizar a função lm() para calcular a regressão. Veja que usamos o simbolo ~, significando que o lado esquerdo (PETR4) é em função da direita (^BVSP). Com a função summary(), sumarizamos os resultados da regressão, obtendo os coeficientes, a significância e o R².

A grosso modo, a leitura dos resultados fica como: A estimativa da constante (intercepto) é igual a 0.001769, a estimativa do coeficiente beta dos retornos da Ibovespa é igual a 1.467227. O intercepto possui um p-valor de 0.16, ou seja, não é significante. Já o coeficiente dos retornos do Ibovespa possui um valor de 2e-16, ou seja, é significante. Medido pelo R², a variabilidade do Ibovespa explica 49,13% da PETR4. Por óbvio, não devemos tirar nenhuma relação de causalidade aqui, apenas de relacionamento entre as variáveis.

Um ponto interessante da Regressão Linear é também poder visualizar a relação de duas variáveis. Utilizando um gráfico de dispersão, é possível ver o relacionamento entre as observações das variáveis, também é possível criar uma Reta de Regressão, na qual realiza o ajuste entre a dispersão dos dados.

No R, criamos um gráfico de dispersão com reta de regressão através do pacote {ggplot2}.

Regressão Linear no Python

No Python, seguiremos o processo igual, retirando os mesmo dados da internet e transformando-os em retornos. Para criar a regressão, utilizaremos a função ols() da biblioteca statsmodels e de sey API formula.api.

No código abaixo seguiremos passos iguais que fizemos no R, importando os preços dos ativos e calculando os retornos diários, além de outros tratamentos.

Por fim, criamos a regressão utilizando a smf.ols com a respectiva formula como argumento. Visualizamos os resultados com fit() e summary(). Apesar de ligeiramente diferente do output do R, os principais resultados estão contidos. Há também uma ligeira diferença dos resultado também, devido ao arredondamento dos dados, porém, bem próximos.

Também é possível criar facilmente um gráfico de dispersão com um Reta de Regressão no Python, para isso, utilizamos a biblioteca {seaborn}.

Quer saber mais sobre R e Python?

Veja nossos cursos de aplicados de R e Python para Economistas. Também oferecemos cursos aplicado ao mercado financeiro através do nosso cursos R para o Mercado Financeiro

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente