Releases: GusFurtado/DadosAbertosBrasil
DadosAbertosBrasil v1.2.0
Com o objetivo de melhorar a acessibilidade do pacote, o DadosAbertosBrasil
sempre deu suporte a versões antigas do Python (3.6) e do Pandas (0.x).
Entretanto, essas versões já foram descontinuadas pelos seus core developers, o que tem tornado cada vez mais difícil manter essa retrocompatibilidade.
Portanto, as versões 1.x do DadosAbertosBrasil
continuarão oferecendo suporte a dependências antigas, porém não receberão novas atualizações, exceto por correções críticas, e ficarão hospedadas em uma branch separada no GitHub.
Nos próximos meses, será iniciado o desenvolvimento da versão 2.x, que incluirá um refatoramento do back-end, focando em melhorias de performance, segurança, boas práticas e no uso de dependências mais modernas.
Dito isso, seguem as atualizações da versão 1.2:
Fixed
- Remoção do
warning
emipea.lista_series
; - Remover colunas duplicadas em
ibge.localidades
.
Deleted
favoritos.geojson
foi removido após um período de descontinuidade, sendo substituido poribge.malha
.
Changed
uf.Governador
foi promovido para o__init__
e pode ser importado diretamente viaDadosAbertosBrasil.Governadores
;- O valor default do argumento
formato
deibge.malha
foi alterado de"svg"
para"geojson"
; - O back-end de
UF.municipio
foi alterado defavoritos.geojson
paraibge.localidades
.
DadosAbertosBrasil v1.1.0
Added
- Expectativa de mercado para SELIC: O modo 'selic' foi adicionado à função expectativas do módulo bacen, conforme previsto na API.
As expectativas futuras para a taxa SELIC são parametrizadas pelo campo 'Reuniao' (Rx/yyyy, com x de 1 a 8 para cada ano yyyy), simbolizando as reuniões periódicas do Comitê de Política Monetária (Copom) do Banco Central do Brasil.
Contribuição de @danilogalisteu
DadosAbertosBrasil v1.0.0
Depois de meses de uso, acredito que o DadosAbertosBrasil
chegou na sua versão estável. Já temos uma quantidade significante de usuários do pacote pelo país e o objetivo daqui para frente é evitar mudanças estruturais, mantendo a qualidade e o nível de suporte.
Added
- Black Formatter: Todos os arquivos agora utilizam o formatador automático
Black
para manter um estilo consistente e agilizar o desenvolvimento. - dab_assets: Foi aumentada a concentração de dados no repositório dab_assets, incluindo a logo, dados de governadores e dados de UFs.
Fixed
- favoritos: Várias funções não estavam funcionando, devido a uma alterações no submódulo
ipea
.
DadosAbertosBrasil v0.4.4
Release de Maio/2022
A versão 0.4.4 contém as atualizações do mês de Maio de 2022.
DadosAbertosBrasil.uf._Governador
O método governador
da classe UF
agora retorna um objeto _Governador
contendo os seguintes atributos:
uf : str
nome : str
nome_completo : str
ano_eleicao : int
mandato_inicio : datetime.date
mandato_fim : datetime.date
partido : str
partido_sigla : str
cargo_anterior : str
vice_governador : str
Esse método agora não é mais atualizado manualmente por um dicionário. Ele será atualizado por um script que faz o scrape de uma tabela do Wikipedia, disponível neste repositório.
DadosAbertosBrasil.uf.UF
Vários métodos da classe UF
foram convertidos para propriedades, pois, como eles se comportam como constantes e não possuem parâmetros, não faz sentido que sejam callable
e é preferível bloquear a alterações dos valores para manter a integridade do dado.
As novas propriedades são:
densidade
galeria
geojson
governador
historia
municipios
populacao
dab_assets
Novo repositório para arquivos, scripts, imagens e dados do DadosAbertosBrasil.
Desta forma podemos atualizar os assets sem interferir nas atualizações do pacote principal, além de preservar o tamanho do repositório principal.
python-publish.yml
Novo workflow do GitHub Actions para automatizar a publicação do pacote no PyPI quando houver um novo release.
DadosAbertosBrasil v0.4.3
Release de Abril/2022
A versão 0.4.3 contém as atualizações do mês de Abril de 2022.
Documentação
A documentação disponível em https://www.gustavofurtado.com/dab.html foi atualizada com todas as alterações do primeiro trimestre de 2022.
DadosAbertosBrasil.ibge.lista_tabelas
Seguindo o objetivo do pacote de melhorar a acessibilidade dos dados públicos, a função lista_tabelas
do módulo ibge
recebeu novos argumentos para facilitar a consulta.
def lista_tabelas(
contendo: Union[str, NoneType] = None,
excluindo: Union[str, NoneType] = None,
assunto: Union[str, int, NoneType] = None,
classificacao: Union[str, int, NoneType] = None,
periodo: Union[dict, str, NoneType] = None,
periodicidade: Union[str, int, NoneType] = None,
nivel: Union[str, int, NoneType] = None,
pesquisa: Union[str, NoneType] = None,
index: bool = False
) -> pandas.core.frame.DataFrame
Seguem alguns exemplos:
# Listar tabelas cujo assunto é "Trabalho" (17), com periodicidade trimestral (9),
# a um nível geográfico municipal (6) contendo classificação por grupo de idade (58).
>>> ibge.lista_tabelas(
... assunto = 17,
... periodicidade = 9,
... nivel = 6,
... classificacao = 58
... )
# Listar tabelas do Censo Demográfico (pesquisa 'CD'), contendo o termo 'rendimento' no título,
# porém não contendo 'Distribuição', definindo a coluna tabela_id como index do DataFrame.
>>> ibge.lista_tabelas(
... pesquisa = 'CD',
... contendo = 'rendimento',
... excluindo = 'distribuição',
... index = True
... )
# Buscar por tabelas que contenham o IPCA de Dezembro de 2019 (P5[201912]).
>>> ibge.lista_tabelas(
... contendo = 'ipca',
... periodo = {5: 201912}
... )
DadosAbertosBrasil v0.4.2
Release de Março/2022
Atualizações dos meses de Fevereiro e Março de 2022.
DadosAbertosBrasil.ipea
A principal novidade deste release é a padronização e expansão do módulo ipea
.
Todas as colunas foram renomeadas de acordo com o padrão dos outros módulos e novos argumentos foram adicionados a quase todas as funções para melhorar a acessibilidade.
Segue o exemplo da função ipea.lista_series
que agora contém seis argumentos para facilitar a pesquisa.
def lista_series(
contendo: Optional[str] = None,
excluindo: Optional[Union[str, List[str]]] = None,
fonte: Optional[str] = None,
ativo: Optional[bool] = None,
numerica: Optional[bool] = None,
index: bool = False
) -> pd.DataFrame:
DadosAbertosBrasil.favoritos.selic
A função selic
foi expandida para comportar algumas variações de memória de cálculo.
# Busca a taxa mensal anualizada dos quatro meses mais recentes.
>>> import DadosAbertosBrasil as dab
>>> dab.selic(
... periodo = 'mensal',
... anualizado = True,
... ultimos = 4
... )
data valor
0 2021-11-01 7.65
1 2021-12-01 8.76
2 2022-01-01 9.15
3 2022-02-01 10.47
# Captura a meta SELIC corrente.
>>> dab.selic(periodo='meta', ultimos=1)
data valor
0 2022-03-16 10.75
# Captura os valores não anualizados da primeira semada de Janeiro/2022, utilizando a data como índice.
>>> dab.selic(
... periodo = 'diario',
... anualizado = False,
... inicio = '2022-01-03',
... fim = '2022-01-07',
... index = True
... )
valor
data
2022-01-03 0.034749
2022-01-04 0.034749
2022-01-05 0.034749
2022-01-06 0.034749
2022-01-07 0.034749
DadosAbertosBrasil v0.4.1
Release de Janeiro/2022
Resolvi criar uma rotina de atualizações mensais. Talvez eu mude de ideia no futuro.
DadosAbertosBrasil.bacen.expectativas
Essa atualização é importante, pois corrige uma alteração na API de expectativas de mercado do Banco Central.
Foram adicionados novos indicadores, bem como alterados os nomes de alguns já existentes, e.g.:
'Taxa de câmbio' -> 'Câmbio'
'Taxa Selic-over' -> 'Selic'
Utilize a função help(bacen.expectativas)
para ver a lista completa de indicadores disponíveis.
DadosAbertosBrasil.ibge.Galeria
O objeto Galeria
ficou mais interativo após receber novos dunder methods.
# Cria uma instância da galeria da localidade desejada.
>>> from DadosAbertosBrasil import ibge
>>> galeria = ibge.Galeria(2304400)
# Veja o tamanho da galeria pela função `len`.
>>> len(galeria)
# Utilize slicers para acessar a fotografia pelo seu índice.
>>> primeira_fotografia = galeria[0]
>>> cinco_ultimas_fotografias = galeria[-5:]
# Fotografias agora são callables.
>>> fotografia(altura=500)
'https://servicodados.ibge.gov.br/api/v1/resize/image?maxwidth=600&max...'
# Utilize for loop para navegador entre as fotografias:
>>> for foto in galeria:
... print(foto(largura=400))
DadosAbertosBrasil v0.4.0
Nota do Autor
DadosAbertosBrasil é um projeto que iniciou junto com a pandemia de COVID-19 e possuiu alguns objetivos que evoluíram ao longo da jornada.
- Desenvolver minhas habilidades em Python e Git;
- Auxiliar na expansão de meu portfólio;
- Apoiar novos estudos e aplicações de dados;
- Democratizar a informação em meio a um governo obscurantista.
Foram centenas de horas dedicadas a esse projeto e ele finalmente chegou a um estado que eu considero satisfatório, cumprindo seus objetivos iniciais.
Irei suspender por tempo indeterminado o desenvolvimento deste projeto para poder focar em novas habilidades e aplicações. Porém, o DadosAbertosBrasil já faz parte da minha caixa de ferramentas e estará sempre recebendo a manutenção necessária. Muita coisa precisará ser atualizada em 2022, um ano com eleições gerais e censo demográfico.
Sem mais delongas, segue o changelog da versão 0.4.0.
Documentação Oficial
O website da documentação oficial agora será gerado por pdoc e foi atualizado em https://www.gustavofurtado.com/dab.html
Type Hinting & Docstrings
Todas as funções e classes do pacote tiveram seus respectivos type hinting e docstrings revisados, a fim de deixá-los mais aderentes ao padrão numpydoc.
camara & senado
Os objetos e funções dos módulos camara
e senado
foram refatorados e padronizados.
- Eles agora são subclasses de um mesmo objeto
DAB_Base
; - Nomes das colunas foram padronizados;
- Adição de um novo argumento
url
para removar URL, URI e e-mails da tabela final. - Todos os métodos e funções possuem os argumentos
index
eformato
.
favoritos.pib
Nova função para captura da variação anual e trimestral do PIB (Produto Interno Bruto) do Brasil.
- Capturar a variação porcentual trimestral do PIB
>>> favoritos.pib(periodo='trimestral')
periodo valor
0 1997-01-01 3.400572
1 1997-04-01 4.754002
2 1997-07-01 1.791279
3 1997-10-01 3.738518
4 1998-01-01 1.007575
.. ... ...
- Capturar PIB anual, pondo o período como index da tabela.
>>> favoritos.pib(periodo='anual', index=True)
valor
periodo
1997-01-01 3.394846
1998-01-01 0.338098
1999-01-01 0.467938
2000-01-01 4.387949
2001-01-01 1.389896
... ...
Depreciação de favoritos.geojson
A função favoritos.geojson
foi depreciada e deve ser eventualmente removida.
É recomendado que se usa a função ibge.malha
, que foi expandida com o argumento formato
.
Caso formato='geojson'
, então será retornado um arquivo GeoJSON semelhante ao da função depreciada.
>>> ibge.malha(localidade, formato='geojson')
DadosAbertosBrasil.uf.UF
Métodos da classe UF
atualizados de acordo com as respectivas funções originais.
DadosAbertosBrasil v0.3.2
Este release expande e padroniza as funções do módulo senado
.
A principal novidade, além de novas funções, é a possibilidade de retornar os dados por default no formato pandas.DataFrame
, facilitando a visualização e navegação.
DadosAbertosBrasil.senado.Senador
Todos os métodos agora possuem um parâmetros formato
que pode receber dois possíveis valores:
'dataframe'
para retornar uma tabela formatada de dados;'json'
para retornar os dados brutos no formato JSON convertido paradict
.
Caso formato='dataframe'
, é possível ativar o novo argumento index
para definir a coluna 'codigo'
como index do DataFrame.
>>> s = senado.Senador(5012)
>>> s.filiacoes(formato='dataframe', index=True)
sigla nome data_filiacao data_desfiliacao
codigo
565 REDE Rede Sustentabilidade 2015-09-29 NaT
458 PSOL Partido Socialismo e Liberdade 2011-01-28 2015-09-28
Algumas gambiarras internas foram reescritas e agora temos um novo atributo telefones
para os senadores.
>>> s.telefones
['33036777', '33036568']
E, por último, a classe Senador
agora possui dois novos métodos: cursos
e profissoes
.
>>> s.cursos()
nome grau_instrucao \
0 licenciatura e bacharelado em Historia Superior
1 DIREITO Superior
2 MBA Executivo em Gestão e Políticas Públicas Especialização
3 Direito Público Especialização
4 Mestrado Profissional em Políticas Públicas e ... Mestrado
DadosAbertosBrasil.senado.lista_senadores
Esse é a função que eu mais reescrevi ao longo do desenvolvimento do módulo, mas agora finalmente cheguei em uma versão definitiva.
Ela unifica as funções lista_atual
e lista_afastados
, retorna um DataFrame e possui diversos novos parâmetros. Veja os exemplos.
Lista todos os senadores ativos, colocando o código como index da tabela.
>>> senado.lista_senadores(index=True)
nome_parlamentar nome_completo \
codigo
4981 Acir Gurgacz Acir Marcos Gurgacz
5982 Alessandro Vieira Alessandro Vieira
945 Alvaro Dias Alvaro Fernandes Dias
... ... ...
Lista senadores do partido PL do Rio de Janeiro.
>>> senado.lista_senadores(partido='PL', uf='RJ')
codigo nome_parlamentar nome_completo sexo \
0 5936 Carlos Portinho Carlos Francisco Portinho Masculino
1 5322 Romário Romario de Souza Faria Masculino
Lista senadores contendo 'Gomes' no nome, exceto os que contém 'Cid'.
>>> senado.lista_senadores(contendo='Gomes', excluindo='Cid')
codigo nome_parlamentar nome_completo sexo \
0 3777 Eduardo Gomes Carlos Eduardo Torres Gomes Masculino
1 5979 Leila Barros Leila Gomes de Barros Rêgo Feminino
2 5557 Mailza Gomes Mailza Assis da Silva Feminino
Lista senadoras afastadas do sexo feminino.
>>> senado.lista_senadores(tipo='afastados', sexo='F')
codigo nome_parlamentar nome_completo sexo \
0 3713 Fátima Bezerra Maria de Fátima Bezerra Feminino
1 5929 Juíza Selma Selma Rosane Santos Arruda Feminino
2 5997 Nailde Panta Nailde Fernandes Panta da Silva Feminino
.. ... ... ... ...
Os mesmos argumentos também estão disponíveis para a função senado.lista_legislatura
.
DadosAbertosBrasil.senado: Novas funções
senado.lista_blocos
senado.lista_partidos
(função refatorada)senado.lista_uso_palavra
senado.orcamento
DadosAbertosBrasil._utils.errors
As Exceptions deste módulo agora são importadas no DadosAbertosBrasil.__init__
.
Isso significa que elas estão mais acessíveis para captura de erros. Veja um exemplo de antes-e-depois.
import DadosAbertosBrasil as dab
moeda = 'Moeda inválida'
# Antes
try:
dab.bacen.cambio(moedas=moeda)
except dab._utils.errors.DAB_MoedaError:
print('Moeda inválida')
# Depois
try:
dab.bacen.cambio(moedas=moeda)
except dab.DAB_MoedaError:
print('Moeda inválida')
DadosAbertosBrasil.UF
Os atributos deputados
e senadores
da classe DadosAbertosBrasil.UF
foram ajustados, contendo todos os argumentos das funções originais e o novo formato do senado.lista_senadores
.
DadosAbertosBrasil v0.3.1
Este release trás um pouco de história para o DadosAbertosBrasil.
O módulo ibge
for expandido com novas funções e classes para coleta de textos e fotos históricos de todas as localidades do Brasil. Convenientemente, a função ibge.localidade
foi atualizada para facilitar a busca pelos códigos das localidades.
DadosAbertosBrasil.ibge.Historia
Captura textos da história e fundação da localidade desejada. Veja o exemplo onde o histórico de Belo Horizonte é instanciado na variável bh
contendo atributos como fonte, autor, ano, etc.
>>> from DadosAbertosBrasil import ibge
>>> bh = ibge.Historia(localidade=310620)
>>> bh.historico
'Foi à procura de ouro que, no distante 1701, o bandeirante João Leite...'
>>> bh.historico_fonte
'Belo Horizonte (MG). Prefeitura. 2014. Disponível em: ...'
Confira todos os parâmetros e atributos na documentação.
help(ibge.Historia)
DadosAbertosBrasil.ibge.Galeria
Cria uma galeria de fotografia da localidade desejada.
A galeria é uma lista de objetos Fotografia
, onde cada uma contém seus metadados, incluindo a URL para visualizá-la na web.
Veja o exemplo em que pegamos a URL da primeira foto da galeria de fotos de Fortaleza.
>>> galeria = ibge.Galeria(2304400)
>>> foto = galeria.fotografias[0]
A variável galeria
é um objeto do tipo Galeria
, cujo atributo fotografias
é uma lista de objetos Fotografia
.
>>> print(foto)
<DadosAbertosBrasil.ibge: Fotografia 35389>
Chamamos o método url
do objeto Fotografia
para obter um link para acessá-lo:
>>> foto.url(altura=500)
'https://servicodados.ibge.gov.br/api/v1/resize/image?maxwidth=500&max...'
DadosAbertosBrasil.ibge.localidade
A função localidades
foi expandida para facilitar e melhorar a performance da busca por localidades.
Agora é possível definir o nível geográficos das localidades buscadas, filtrar e ordenar dados e definir as subdivisões.
Captura todos os estados do Brasil
>>> ibge.localidades(nivel='estados')
id sigla nome regiao_id regiao_sigla regiao_nome
0 11 RO Rondônia 1 N Norte
1 12 AC Acre 1 N Norte
2 13 AM Amazonas 1 N Norte
3 14 RR Roraima 1 N Norte
4 15 PA Pará 1 N Norte
.. ... ... ... ... ... ...
Captura todos os distritos do Brasil, colocando o ID como index.
>>> ibge.localidades(index=True)
nome municipio_id ... regiao_sigla regiao_nome
id ...
520005005 Abadia de Goiás 5200050 ... CO Centro-Oeste
310010405 Abadia dos Dourados 3100104 ... SE Sudeste
520010005 Abadiânia 5200100 ... CO Centro-Oeste
520010010 Posse d'Abadia 5200100 ... CO Centro-Oeste
310020305 Abaeté 3100203 ... SE Sudeste
... ... ... ... ... ...
Captura todos os municípios do estado do Rio de Janeiro (localidade=33)
>>> ibge.localidades(nivel='estados', divisoes='municipios', localidade=33)
id nome microrregiao_id microrregiao_nome \
0 3300100 Angra dos Reis 33013 Baía da Ilha Grande
1 3300159 Aperibé 33002 Santo Antônio de Pádua
2 3300209 Araruama 33010 Lagos
3 3300225 Areal 33005 Três Rios
4 3300233 Armação dos Búzios 33010 Lagos
.. ... ... ... ...
DadosAbertosBrasil.ibge.malha
A função malha
foi atualizada com a nova versão da API do IBGE, permitindo uma parametrização de subdivisões semelhantes à da função ibge.localidades
. Além disso, há agora a opção de gerar uma URL para a malha em formato SVG ou gerar um arquivo JSON nos formatos TopoJSON ou GeoJSON.
Captura a malha do Distrito Federal (localidade=53) em formato GeoJSON.
>>> ibge.malha(localidade=53, formato='geojson')
{'type': 'FeatureCollection',
'features': [{'type': 'Feature',
'geometry': {'type': 'Polygon',
'coordinates': [[[-47.31, -16.0363], ...
Captura a malha de Joinville em formato SVG com qualidade mínima.
>>> ibge.malha(
... nivel = 'municipios',
... localidade = 4209102,
... formato = 'svg',
... qualidade = 'minima'
... )
'https://servicodados.ibge.gov.br/api/v3/malhas/municipios/4209102?...'
Captura a malha do Brasil subdividido por UF em formato TopoJSON.
>>> ibge.malha(
... nivel = 'paises',
... localidade = 'BR',
... divisoes = 'uf',
... formato = 'json'
... )
{'type': 'Topology',
'arcs': [[[32967, 111009], [-821, 372]],
[[32146, 111381],
[133, 124],
[15, 106], ...
Remoção da dependência do openpyxl
Anteriormente, a função ibge.coordenadas
dependia do pacote openpyxl
(ou qualquer engine de Excel) para executar o pd.read_excel
no arquivo contendo as coordenadas. Esse arquivo foi substituído por um .csv
e a função foi substituída por pd.read_csv
sem a necessidade de uma engine para leitura.
Reestruturação interna no módulo ibge
O módulo ibge
foi quebrado em quatro submódulos para facilitar a expansão do módulo e categorizar os diversos serviços do IBGE. Os módulos são:
_ibge.cidades
;_ibge.sidra
;_ibge.nomes
;_ibge.misc
.
Na prática, não fará diferença, pois eles são importados automaticamente com o módulo ibge
.
>>> from DadosAbertosBrasil import ibge
DadosAbertosBrasil.UF
Foram adicionados os métodos historia
e galeria
ao objeto UF
.
>>> from DadosAbertosBrasil import UF
>>> ac = UF('acre')
>>> historia = ac.historia()
>>> galeria = ac.galeria()