Tag

dados bcb r Archives - Análise Macro

Como importar dados do Banco Central, IPEADATA e Sidra no R?

By | Data Science

Neste exercício mostramos como dar os primeiros passos para acessar dados brasileiros de fontes públicas, disponibilizados nas volumosas bases do BCB, IPEADATA e IBGE. Estas fontes constituem um ativo valiosíssimo para pesquisadores e profissionais de mercado - além de ser um "parquinho de diversões" para amantes de dados -, sendo fundamental o domínio de linguagens de programação como o R para coleta e automatização de rotinas.

Para reproduzir o exercício a seguir você precisará dos seguintes pacotes:

library(GetBCBData) # CRAN v0.6
library(ipeadatar) # CRAN v0.1.5
library(sidrar) # CRAN v0.2.7 
library(dplyr) # CRAN v1.0.7 
library(stringr) # CRAN v1.4.0

Dados do BCB

Existem diversas bases de dados que o Banco Central do Brasil (BCB) disponibiliza para acesso público, dentre elas:

  • Sistema Gerenciador de Séries Temporais (SGS): milhares de séries econômico-financeiras de diversas fontes;
  • Sistema Expectativas de Mercado: dados de expectativas de agentes de mercado para indicadores econômicos, compilados no Relatório Focus.

E para acessar estes dados pela linguagem R existem alguns pacotes que facilitam o trabalho:

  • {GetBCBData}: interface para acessar API de dados do SGS/BCB, possibilita a extração de uma ou diversas séries na mesma requisição, retorna objeto data frame em formato "long" ou "wide" e, opcionalmente, executa requisições com processamento paralelo e com sistema de cache de dados.
  • {rbcb}: interface para acessar API's do SGS, Sistema de Expectativas e dados de taxa de câmbio;
  • {meedr}: interface para acessar API do Sistema de Expectativas, com recursos de processamento paralelo e sistema de cache similar ao {GetBCBData}, disponível apenas no GitHub atualmente.

Vamos a um exemplo: suponha que você queira coletar uma série temporal do SGS/BCB (usaremos o código 432 da taxa SELIC no exemplo).

  • Passo 1: localize no site https://www3.bcb.gov.br/sgspub/ o código da série desejada;
  • Passo 2: utilizando o pacote {GetBCBData}, aponte na função gbcbd_get_series() o código e período desejado, observando a documentação dos argumentos desta função, conforme abaixo:

# Coletar dados da SELIC no SGS/BCB
dados_sgs <- GetBCBData::gbcbd_get_series(
id = 432,
first.date = "2020-01-01",
last.date = Sys.Date()
)
tail(dados_sgs)

# ref.date value id.num series.name
# 768 2022-02-06 10.75 432 id = 432
# 769 2022-02-07 10.75 432 id = 432
# 770 2022-02-08 10.75 432 id = 432
# 771 2022-02-09 10.75 432 id = 432
# 772 2022-02-10 10.75 432 id = 432
# 773 2022-02-11 10.75 432 id = 432

Para coletar múltiplas séries especifique um vetor numérico (nomeado ou não) com os códigos das séries. Perceba que também especificamos o formato desejado dos dados "wide", ou seja, uma coluna para cada variável.


dados_sgs <- GetBCBData::gbcbd_get_series(
id = c("Dólar" = 3698, "IBC-Br" = 24363, "Resultado Primário" = 5793),
first.date = "2020-01-01",
last.date = Sys.Date(),
format.data = "wide"
)
tail(dados_sgs)

# ref.date Dólar IBC-Br Resultado Primário
# 20 2021-08-01 5.2517 142.17 1.56
# 21 2021-09-01 5.2797 138.86 0.63
# 22 2021-10-01 5.5400 138.07 0.24
# 23 2021-11-01 5.5569 139.76 -0.15
# 24 2021-12-01 5.6514 141.46 -0.75
# 25 2022-01-01 5.5341 NA NA

Dessa forma simples conseguimos acesso rápido e fácil a diversas séries. Consulte os detalhes dos argumentos na documentação do pacote e, sobre as séries, no site do BCB.

Dados do IPEADATA

O IPEADATA oferece um grande volume de dados com acesso público, organizados nos seguintes temas:

  • Macroeconômico: dados econômicos e financeiros do Brasil em séries anuais, mensais e diárias na mesma unidade monetária;
  • Regional: dados econômicos, demográficos e geográficos para estados, municípios (e suas áreas mínimas comparáveis), regiões administrativas e bacias hidrográficas brasileiras;
  • Social: dados e indicadores sobre distribuição de renda, pobreza, educação, saúde, previdência social e segurança pública.

E para acessar estes dados no R existe o pacote {ipeadatar}1 que possibilita ler e pesquisar metadados e extrair variáveis de interesse.

Vamos a um exemplo: suponha que você queira coletar a série do saldo do Novo CAGED.

  • Passo 1: utilize a função available_series() para localizar a série desejada e obter o código da mesma (retorna um tibble);

# Extrair tabela com todas séries e códigos disponíveis
series_ipeadata <- ipeadatar::available_series()
# Filtrar séries com o termo "caged"
dplyr::filter(
series_ipeadata,
stringr::str_detect(source, stringr::regex("caged", ignore_case = TRUE))
)

# # A tibble: 10 x 7
# code name theme source freq lastupdate status
# <chr> <chr> <fct> <fct> <fct> <date> <fct>
# 1 CAGED12_ADMISN12 Empregados - admissõe~ Macr~ Min. ~ Mont~ 2022-02-02 "Acti~
# 2 CAGED12_DESLIGN12 Empregados - demissõe~ Macr~ Min. ~ Mont~ 2022-02-02 "Acti~
# 3 CAGED12_SALDON12 Empregados - saldo - ~ Macr~ Min. ~ Mont~ 2022-02-02 "Acti~
# 4 CAGED12_ADMIS Empregados - admissões Macr~ MTE/C~ Mont~ 2020-05-27 "Inac~
# 5 CAGED12_DESLIG Empregados - demissões Macr~ MTE/C~ Mont~ 2020-05-27 "Inac~
# 6 CAGED12_SALDO12 Empregados - saldo Macr~ MTE/C~ Mont~ 2020-05-27 "Inac~
# 7 ADMIS Total da evolução de ~ Regi~ MTE/C~ Mont~ 2020-07-07 ""
# 8 ADMISNC Total da evolução de ~ Regi~ MTE/C~ Mont~ 2022-02-04 ""
# 9 DESLIG Total da evolução de ~ Regi~ MTE/C~ Mont~ 2020-07-07 ""
# 10 DESLIGNC Total da evolução de ~ Regi~ MTE/C~ Mont~ 2022-02-04 ""

  • Passo 2: aponte na função ipeadata() o(s) código(s) da(s) séries(s), conforme abaixo:

dados_ipeadata <- ipeadatar::ipeadata("CAGED12_SALDON12")
tail(dados_ipeadata)

# # A tibble: 6 x 5
# code date value uname tcode
# <chr> <date> <dbl> <ord> <int>
# 1 CAGED12_SALDON12 2021-07-01 316725 "" NA
# 2 CAGED12_SALDON12 2021-08-01 373344 "" NA
# 3 CAGED12_SALDON12 2021-09-01 316993 "" NA
# 4 CAGED12_SALDON12 2021-10-01 253083 "" NA
# 5 CAGED12_SALDON12 2021-11-01 324112 "" NA
# 6 CAGED12_SALDON12 2021-12-01 -265811 "" NA

Dessa forma simples conseguimos acesso rápido e fácil a diversas séries. Consulte os detalhes dos argumentos na documentação do pacote e, sobre as séries, pela função metadata() ou no site da instituição.

Dados do Sidra/IBGE

O Sidra é um sistema disponibilizado pelo IBGE com bases de dados públicas dos mais variados temas, organizados em tabelas agregadas (não identificam o informante). Estes dados são oriundos das pesquisas e diversos trabalhos que a instituição realiza, podendo conter informações atreladas a nível territorial, a um período de tempo, a classificações ou a unidades de medida/cálculos estatísticos.

Para acessar estes dados no R existe o pacote {sidrar}, que possibilita pesquisar tabelas, obter informações de parâmetros de consulta e extrair dados de tabelas de interesse.

Vamos a um exemplo: suponha que você queira coletar dados de uma tabela do Sidra/IBGE (usaremos a tabela 7060 referente ao IPCA no exemplo). Você pode usar o próprio pacote para especificar uma consulta com filtros ou construir essa consulta diretamente no site do Sidra (mais fácil), obtendo um código de consulta.

  • Passo 1: localize no site https://sidra.ibge.gov.br/ a tabela de interesse e aplique os filtros desejados (neste caso marcamos "Variável" = "IPCA - Variação mensal (%)"; "Geral, grupo, subgrupo, item e subitem" = "Índice geral"; "Mês" = todos períodos disponíveis e "Unidade Territorial" = "Brasil");
  • Passo 2: clique no botão de compartilhar na parte inferior chamado “Links de compartilhar” e, na tela que se abre, copie o código a partir de "/t/" (inclusive) até o final;
  • Passo 3: aponte na função get_sidra(), usando o argumento api, o código de consulta obtido no passo anterior, conforme abaixo:

# Código de consulta com filtros na tabela 7060 (Sidra/IBGE)
cod_sidra <- "/t/7060/n1/all/v/63/p/all/c315/7169/d/v63%202"
# Coleta dos dados com o código
dados_sidra <- sidrar::get_sidra(api = cod_sidra)

tail(dplyr::as_tibble(dados_sidra))

# # A tibble: 6 x 13
# `Nível Territorial ~` `Nível Territo~` `Unidade de Me~` `Unidade de Me~` Valor
# <chr> <chr> <chr> <chr> <dbl>
# 1 1 Brasil 2 % 0.87
# 2 1 Brasil 2 % 1.16
# 3 1 Brasil 2 % 1.25
# 4 1 Brasil 2 % 0.95
# 5 1 Brasil 2 % 0.73
# 6 1 Brasil 2 % 0.54
# # ... with 8 more variables: `Brasil (Código)` <chr>, Brasil <chr>,
# # `Variável (Código)` <chr>, Variável <chr>, `Mês (Código)` <chr>, Mês <chr>,
# # `Geral, grupo, subgrupo, item e subitem (Código)` <chr>,
# # `Geral, grupo, subgrupo, item e subitem` <chr>

Dessa forma simples conseguimos acesso rápido e fácil aos dados de qualquer tabela do Sidra. Consulte os detalhes e mais opções na documentação do pacote e, sobre as tabelas, no site da instituição.

Ressalvas

Note que as fontes de dados aqui exploradas são públicas e, apesar de serem um ativo valiosíssimo para os amantes de dados, frequentemente podem apresentar instabilidades. Se você obteve um erro estranho ao tentar extrair dados destas fontes, verifique no site da instituição se está tudo ok e tente novamente em outro momento se for o caso.

Além disso, API's de dados públicos geralmente possuem limitações de requisição/acessos - como é o caso Sidra/IBGE -, portanto, utilize com cautela e responsabilidade, evitando realizar requisições de dados desnecessárias.

Para suporte personalizado e aprofundamento dê uma olhada nos cursos aplicados da Análise Macro, como o Análise de Conjuntura usando o R.

 


1 Em Python há uma biblioteca correspondente, o ipeadatapy.

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

Assinar Gratuitamente