Análise do boletim Focus no Python

O Boletim Focus é uma pesquisa realizada pelo Banco Central do Brasil, que divulga semanalmente as projeções de diversos indicadores macroeconômicos do país. A pesquisa é extremamente útil para entender a conjuntura econômica do país. Para coletar os dados do relatório, podemos utilizar a biblioteca python-bcb, que realiza a conexão com a API do Banco Central e permite realizar a importação dos dados direto para o Python.

Para utilizar o python-bcb é extremamente simples. Primeiro devemos carregar o módulo Expectativas e utilizar suas funções e métodos para realizar a importação.

Utilizamos a função Expectativas() para instanciar com as informações da pesquisa. Salvamos em objeto com o nome "em" para utilizar o método describe() de forma a obtermos as pesquisas disponíveis e conectar com a que desejamos. No caso, queremos obter informações das Expectativas Anuais.

!pip install python-bcb
from bcb import Expectativas
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
# Instancia a classe
em = Expectativas()
# Obtém os entitysets (nome das pesquisas)
em.describe()
</pre>
# Obtém as informações da pesquisa
em.describe('ExpectativasMercadoAnuais')

Com as informações conhecidas sobre o data frame a ser importado, utilizamos o método get_endpoint() para conectar com a API do Banco Central e executar a consulta com .query()

ep = em.get_endpoint('ExpectativasMercadoAnuais')
# Dados do IPCA
ipca_expec = ( ep.query()
 .filter(ep.Indicador == 'IPCA', ep.DataReferencia == 2023)
 .filter(ep.Data >= '2022-01-01')
 .filter(ep.baseCalculo == '0')
 .select(ep.Indicador, ep.Data, ep.Media, ep.Mediana, ep.DataReferencia)
 .collect()
  )
# Formata a coluna de Data para formato datetime
ipca_expec['Data'] = pd.to_datetime(ipca_expec['Data'], format = '%Y-%m-%d')

Em conjunto com query(), utilizamos os métodos do pandas de forma a obter os dados já tratados, com os dados da expectativas do IPCA do ano referente a 2023, coletados em 2022.

Por fim, obtemos o data frame com a Media e a Mediana das projeções divulgadas pelo Boletim Focus nas semanas ao longo de 2022. Abaixo, criamos o gráfico para representar a evolução do indicador.

# Configura o tema do gráfico
## Cores
colors = ['#282f6b', '#b22200', '#eace3f', '#224f20', '#b35c1e', '#419391', '#839c56','#3b89bc']
## Tamanho
theme = {'figure.figsize' : (15, 10)}
## Aplica o tema
sns.set_theme(rc = theme,
              palette = colors)


# cria o gráfico
sns.lineplot(x = 'Data',
             y = 'Mediana',
             data = ipca_expec).set(title = 'Expectativas de Mercado para o IPCA - 2023',
                                    xlabel = '',
                                    ylabel = '% a.a.')
# Adiciona a fonte no gráfico
plt.annotate('Fonte: analisemacro.com.br com dados do BCB/SGS',
            xy = (1.0, -0.07),
            xycoords='axes fraction',
            ha='right',
            va="center",
            fontsize=10)

Abaixo, realizamos o mesmo procedimento com a SELIC, o PIB e o Câmbio.

selic_expec = ( ep.query()
 .filter(ep.Indicador == 'Selic', ep.DataReferencia == 2023)
 .filter(ep.Data >= '2022-01-01')
 .filter(ep.baseCalculo == '0')
 .select(ep.Indicador, ep.Data, ep.Media, ep.Mediana, ep.DataReferencia)
 .collect()
  )
selic_expec['Data'] = pd.to_datetime(selic_expec['Data'], format = '%Y-%m-%d')

# cria o gráfico
sns.lineplot(x = 'Data',
             y = 'Mediana',
             data = selic_expec).set(title = 'Expectativas de Mercado para a SELIC - 2023',
                                     xlabel = '',
                                     ylabel = '% a.a.')
# Adiciona a fonte no gráfico
plt.annotate('Fonte: analisemacro.com.br com dados do BCB/SGS',
            xy = (1.0, -0.07),
            xycoords='axes fraction',
            ha='right',
            va="center",
            fontsize=10)


pib_expec = ( ep.query()
 .filter(ep.Indicador == 'PIB Total', ep.DataReferencia == 2023)
 .filter(ep.Data >= '2022-01-01')
 .filter(ep.baseCalculo == '0')
 .select(ep.Indicador, ep.Data, ep.Media, ep.Mediana, ep.DataReferencia)
 .collect()
)
pib_expec['Data'] = pd.to_datetime(pib_expec['Data'], format = '%Y-%m-%d')

# cria o gráfico
sns.lineplot(x = 'Data', y = 'Mediana', data = pib_expec).set(title = 'Expectativas de Mercado para o PIB - 2023',
                                     xlabel = '',
                                     ylabel = '% a.a.')
# Adiciona a fonte no gráfico
plt.annotate('Fonte: analisemacro.com.br com dados do BCB/SGS',
            xy = (1.0, -0.07),
            xycoords='axes fraction',
            ha='right',
            va="center",
            fontsize=10)

cambio_expec = ( ep.query()
 .filter(ep.Indicador == 'Câmbio', ep.DataReferencia == 2023)
 .filter(ep.Data >= '2022-01-01')
 .filter(ep.baseCalculo == '0')
 .select(ep.Indicador, ep.Data, ep.Media, ep.Mediana, ep.DataReferencia)
 .collect()
)
cambio_expec['Data'] = pd.to_datetime(cambio_expec['Data'], format = '%Y-%m-%d')


# cria o gráfico
sns.lineplot(x = 'Data',
             y = 'Mediana',
             data = cambio_expec).set(title = 'Expectativas de Mercado para o Câmbio - 2023',
                                      xlabel = '',
                                      ylabel = '% a.a.')
# Adiciona a fonte no gráfico
plt.annotate('Fonte: analisemacro.com.br com dados do BCB/SGS',
            xy = (1.0, -0.07),
            xycoords='axes fraction',
            ha='right',
            va="center",
            fontsize=10)

_____________________________________

Quer aprender mais?

Seja um aluno da nossa trilha de Macroeconomia Aplicada e aprenda a criar projetos voltados para a Macroeconomia

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Transfer Learning: mostrando porque o Python está na ponta do desenvolvimento

A aprendizagem por transferência (transfer learning) é o reuso de um modelo pré-treinado em um novo problema. Portanto, sua utilização torna-se um avanço enorme para a previsão de diferentes tipos de variáveis, principalmente para aquelas ordenadas no tempo. Mostramos nesta postagem o uso do Transfer Learning com o Python para o caso de Séries Temporais.

Criando Tabelas com o Python: mostrando o poder da linguagem sobre o Excel

Nos dias atuais, pessoas que trabalham com dados estão constantemente confrontados com um dilema: criar uma tabela não tão genial no Excel ou manter em um formato ainda pior, como um dataframe, mas mantendo a flexibilidade de obtenção dos dados. Podemos resolver esse grande problema, unindo a flexibilidade e beleza ao usar a biblioteca great_tables do Python.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.