Skip to main content

Biblioteca Python para dados econômicos e financeiros brasileiros

Project description

biblioteca-br

Versão Python Licença Status

Interface unificada em Python para dados econômicos e financeiros do Brasil.

Chega de navegar entre dezenas de APIs, documentações incompletas e formatos inconsistentes. A biblioteca-br integra o Banco Central (BACEN), a Bolsa de Valores (B3) e o IBGE em uma única API coerente todos os retornos são DataFrames do pandas, limpos e prontos para análise.

Sobre o Projeto

Sou estudante de Ciência da Computação e desenvolvi a biblioteca-br como um projeto de aprendizado. A ideia surgiu da frustração de tentar consumir dados econômicos brasileiros durante os estudos (APIs espalhadas), formatos inconsistentes e pouca documentação.

Grande parte da inspiração veio da python-bcb, biblioteca criada pelo Wilson Freitas, que mostrou como é possível tornar dados do Banco Central acessíveis de forma elegante. Se você ainda não conhece o trabalho dele, recomendo muito.

Este projeto é o resultado dessa jornada: imperfeito, em evolução, mas feito com dedicação. Se você também está aprendendo e quiser contribuir, trocar um papo minhas redes estão ali.


Instalação

pip install biblioteca-br

Requisitos: Python 3.8 ou superior. As dependências (requests, pandas, matplotlib, openpyxl, reportlab, yfinance) são instaladas automaticamente.


Início Rápido

1. Banco Central — Séries Temporais (SGS)

Busque os principais indicadores macroeconômicos com uma única linha:

from biblioteca_br import selic, ipca, igpm, cambio

# Taxa Selic (meta) desde 2022
df_selic = selic(inicio="01/01/2022")
print(df_selic.head())
#          data  valor
# 0  2022-01-03  9.15
# 1  2022-02-01  9.75
# ...

# IPCA mensal
df_ipca = ipca(inicio="01/01/2023", fim="31/12/2023")

# Cotação do Dólar (também disponível: EUR, GBP)
df_usd = cambio(moeda="USD", inicio="01/01/2024")

# Expectativas do Boletim Focus
from biblioteca_br import expectativas
df_focus = expectativas(indicador="IPCA", top=50)

2. Bolsa de Valores — B3

Obtenha histórico de preços de ações e índices diretamente da B3 via Yahoo Finance:

from biblioteca_br import acao, acoes, ibovespa

# Histórico de uma ação (o sufixo .SA é adicionado automaticamente)
df_petr4 = acao("PETR4", inicio="2024-01-01")
print(df_petr4[["Open", "High", "Low", "Close", "Volume"]].head())

# Múltiplas ações de uma vez
df_carteira = acoes(["PETR4", "VALE3", "ITUB4"], inicio="2024-01-01")

# Ibovespa
df_ibov = ibovespa(inicio="2023-01-01")

3. Visualização e Exportação

Gere gráficos e exporte dados com formatação profissional:

from biblioteca_br import selic, linha, excel, pdf, comparativo

df = selic(inicio="01/01/2022")

# Gráfico de linha
linha(df, titulo="Taxa Selic — Evolução Histórica", ylabel="% a.a.")

# Painel com os 4 principais indicadores (Selic, IPCA, Dólar, IGP-M)
comparativo(titulo="Panorama Econômico Brasileiro")

# Exportar para Excel com formatação condicional
excel(df, "selic_2022_2024.xlsx", nome_planilha="Selic")

# Gerar relatório em PDF
pdf(df, "relatorio_selic.pdf", titulo="Taxa Selic — Relatório Anual")

Referência de Módulos

Módulo Importação Funções Principais Descrição
bacen from biblioteca_br import selic, ipca, ... selic(), ipca(), igpm(), cambio(), expectativas(), juros_bancos(), calendario() Séries temporais do SGS, câmbio (USD/EUR/GBP), Boletim Focus e calendário econômico
b3 from biblioteca_br import acao, acoes, ibovespa acao(), acoes(), ibovespa() Histórico de preços de ações, FIIs e o índice Ibovespa via Yahoo Finance
plot from biblioteca_br import linha, barras, area, ... linha(), barras(), area(), dispersao(), comparativo(), plotar() Gráficos prontos para séries temporais, comparativos e painéis de indicadores
exportar from biblioteca_br import excel, pdf, csv, json excel(), pdf(), csv(), json() Exportação de DataFrames para .xlsx (formatado), .pdf (com tabela e gráfico), .csv e .json

Detalhes das funções — BACEN

# Todas as funções de séries temporais aceitam os mesmos parâmetros:
# inicio: str no formato "dd/mm/aaaa" (padrão: "01/01/2020")
# fim: str no mesmo formato (opcional — traz até a data mais recente)

selic(inicio="01/01/2022", fim="31/12/2023")
ipca(inicio="01/01/2020")
igpm(inicio="01/06/2023")
cambio(moeda="USD", inicio="01/01/2024")  # moeda: "USD", "EUR" ou "GBP"

# Focus — expectativas de mercado
expectativas(indicador="IPCA", top=100)   # indicador: "IPCA", "Selic", "IGP-M", etc.

# Taxas de juros por banco e modalidade
juros_bancos(top=1000)

# Calendário estimado de divulgações (IPCA, Selic/COPOM, PIB)
calendario(meses=3)

Detalhes das funções — B3

# O código da ação deve ser informado sem o sufixo ".SA" — a função adiciona automaticamente
acao("PETR4", inicio="2024-01-01", fim="2024-12-31")
acao("BOVA11")  # FIIs e ETFs também são suportados

# Múltiplas ações retornam um DataFrame com MultiIndex
acoes(["PETR4", "VALE3", "ITUB4"], inicio="2024-01-01")

ibovespa(inicio="2020-01-01")  # Índice ^BVSP

Detalhes das funções — Plot

# Gráfico de linha (ideal para séries temporais)
linha(df, colunas="valor", coluna_data="data", titulo="Selic", ylabel="% a.a.")

# Gráfico de barras (vertical ou horizontal)
barras(df, horizontal=False, empilhado=False, rotacao_x=45)

# Gráfico de área (ideal para composição)
area(df, empilhado=True, alpha=0.7)

# Dispersão com regressão linear automática
dispersao(x=df["selic"], y=df["ipca"], mostrar_correlacao=True)

# Painel 2x2 com Selic, IPCA, Dólar e IGP-M (busca os dados automaticamente)
comparativo(titulo="Panorama Econômico")

# Função genérica
plotar(df, tipo="linha")   # tipo: "linha", "barra", "area", "dispersao"

Detalhes das funções — Exportar

# Excel com cabeçalho formatado, colunas ajustadas e painéis congelados
excel(df, "saida.xlsx", nome_planilha="IPCA", adicionar_formatacao=True)

# CSV no padrão brasileiro (ponto-e-vírgula como separador)
csv(df, "saida.csv", separador=";", decimais=",")

# PDF com tabela (até 50 linhas) e gráfico opcional embutido
pdf(df, "relatorio.pdf", titulo="Relatório Selic", incluir_grafico=True)

# JSON com indentação
json(df, "dados.json", orient="records", indent=2)

FAQ

Qual é a vantagem de usar a biblioteca-br em vez de chamar as APIs diretamente?

As APIs do BACEN, B3 e IBGE têm formatos, endpoints e padrões de erro completamente diferentes entre si. Com a biblioteca-br, você usa a mesma sintaxe para todas as fontes e sempre recebe um DataFrame do pandas padronizados sem precisar lidar com JSON aninhado, tratamento de datas em múltiplos formatos ou gerenciamento manual de erros HTTP.


Os dados são em tempo real?

Não. Os dados seguem a defasagem natural de cada fonte:

  • BACEN (SGS): séries atualizadas em D+1 ou conforme o calendário de divulgação de cada indicador (ex.: IPCA é divulgado mensalmente pelo IBGE e refletido no SGS com alguns dias de defasagem).
  • B3 (via Yahoo Finance): cotações históricas de fechamento; dados do dia corrente podem ter atraso de 15 a 20 minutos dependendo do horário.
  • Boletim Focus: atualizado semanalmente pelo BACEN, toda segunda-feira.

Para operações que exigem dados em tempo real, recomenda-se consultar diretamente as APIs oficiais das respectivas instituições.


Como tratar erros de conexão ou dados não encontrados?

A biblioteca propaga as exceções originais para que você possa tratá-las de forma explícita:

import requests
from biblioteca_br import selic

try:
    df = selic(inicio="01/01/2024")
except requests.exceptions.Timeout:
    print("A requisição ao BACEN expirou. Tente novamente.")
except requests.exceptions.RequestException as e:
    print(f"Erro de conexão: {e}")
except ValueError as e:
    print(f"Nenhum dado encontrado para o período informado: {e}")

Para diagnóstico detalhado, ative o logging:

import logging
logging.basicConfig(level=logging.INFO)

Quais moedas estão disponíveis para câmbio?

A versão atual suporta USD (Dólar comercial), EUR (Euro) e GBP (Libra esterlina), todas via séries do SGS/BACEN. Novas moedas serão adicionadas nas próximas versões.



Contribuindo

Contribuições são muito bem-vindas! Se encontrar um bug, tiver sugestões ou quiser adicionar uma nova fonte de dados:

  1. Faça um fork do repositório: github.com/senaanalytics/biblioteca-br
  2. Crie uma branch para sua feature: git checkout -b feature/nova-funcionalidade
  3. Faça commit das alterações e abra um Pull Request

Licença

Este projeto está licenciado sob a MIT License — veja o arquivo LICENSE para mais detalhes.


Autor

Desenvolvido por Isaque Sena


quem cede a vez não quer vitória

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

biblioteca_br-0.1.3.tar.gz (29.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

biblioteca_br-0.1.3-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file biblioteca_br-0.1.3.tar.gz.

File metadata

  • Download URL: biblioteca_br-0.1.3.tar.gz
  • Upload date:
  • Size: 29.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for biblioteca_br-0.1.3.tar.gz
Algorithm Hash digest
SHA256 59c30ce9b63b77f286342b6a5c57a59d10d42bde5aff3a9b71a3d5c2a9b5eb0f
MD5 9f37e600988a7301d3f9463bf6b9a50a
BLAKE2b-256 a1aa61a65290b1b650a5fcb4522d3a9219a29a8cd06e91dbc23dba9562f9f38c

See more details on using hashes here.

File details

Details for the file biblioteca_br-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: biblioteca_br-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for biblioteca_br-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f4ffa2024c57d413f18ec9d9073ded7fb6c2d71ffe0156107c6521f002b77c84
MD5 eb8776541a23aff8611399e27027edc1
BLAKE2b-256 d5726121b181da302755d428b15edee878f2a277a78f180f85703b6ae4f42356

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page