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



