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

Como tratar dados no Python? Parte 5: renomeando colunas

Como dar novos nomes significativos para as colunas em uma tabela de dados usando Python? Neste tutorial mostramos os métodos de renomeação de colunas disponíveis na biblioteca pandas, que tem como vantagem sua sintaxe simples e prática.

Como tratar dados no Python? Parte 4: operações por grupos

Como mensalizar dados diários? Ou como filtrar os valores máximos para diversas categorias em uma tabela de dados usando Python? Estas perguntas são respondidas com os métodos de operações por grupos. Neste tutorial mostramos estes métodos disponíveis na biblioteca pandas, que tem como vantagem sua sintaxe simples e prática.

Boletim AM

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

Boletim AM

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

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.