basedosdados

⚙️ Código de manutenção do datalake (metadados e pacotes de acesso) | 📖 Docs: https://basedosdados.org/docs/home

https://github.com/basedosdados/sdk

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.1%) to scientific vocabulary

Keywords

bigquery dados-abertos data-science govtech hacktoberfest hacktoberfest2022 open-data python r sql transparencia

Keywords from Contributors

degoogle
Last synced: 6 months ago · JSON representation ·

Repository

⚙️ Código de manutenção do datalake (metadados e pacotes de acesso) | 📖 Docs: https://basedosdados.org/docs/home

Basic Info
Statistics
  • Stars: 406
  • Watchers: 15
  • Forks: 86
  • Open Issues: 35
  • Releases: 31
Topics
bigquery dados-abertos data-science govtech hacktoberfest hacktoberfest2022 open-data python r sql transparencia
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing Funding License Citation

README.md

Base dos Dados

Universalizando o acesso a dados de qualidade no Brasil.

Watch Start Tweet Discord Apoiase

A Base dos Dados é um datalake público no Google BigQuery com os principais conjuntos de dados abertos do Brasil. Na BD você encontra tabelas tratadas e prontas para uso de forma gratuita. Disponibilizamos e mantemos neste projeto pacotes de acesso à BD em diferentes linguagens.

O projeto faz parte da Base dos Dados, uma organização sem fins lucrativos com a missão de universalizar o acesso a dados de qualidade para todes.

Versões atuais

| R | Python | Stata |-----|-----|-----| | install.packages("basedosdados") | pip install basedosdados | - | | | | | | | | | |

Encontre aqui

Como citar o projeto

O projeto (software) está sob licenca MIT - logo, pode ser utilizado e modificado sem restrições desde que sejam remetidos os direitos autorais originais - veja o texto de referência aqui.

Caso queira citar o projeto numa publicação, artigo ou na web, utilize o modelo no menu ao lado conforme a imagem.

💡 Quer divulgar seu projeto nas nossas redes? Envie para contato@basedosdados.org

image

Usando em Python

Instale

Com pip:

bash pip install basedosdados

Com uv:

sh uv add basedosdados

Com poetry:

sh poetry add basedosdados

Acesse uma tabela

```python import basedosdados as bd

df = bd.readtable('bribgepib', 'municipio', billingproject_id="") ```

Caso esteja acessando da primeira vez, vão aparecer alguns passos na tela para autenticar seu projeto - basta segui-los!

É necessário criar um projeto para que você possa fazer as queries no nosso repositório. Ter um projeto é de graça e basta ter uma conta Google (seu gmail por exemplo). Veja aqui como criar um projeto no Google Cloud.

Se possível, armazene suas credenciais em um arquivo dotenv: "billing_project_id=<suas_credenciais_do_projeto>" >> .env

Faça uma consulta

```python import basedosdados as bd

Bens dos candidatos de Tocantins em 2020

query = """ SELECT * FROM basedosdados.br_tse_eleicoes.bens_candidato WHERE ano = 2020 AND sigla_uf = 'TO' """

df = bd.readsql(query, billingproject_id="") ```

Caso esteja acessando da primeira vez, vão aparecer alguns passos na tela para autenticar seu projeto - basta segui-los!

Defina paramêtros utilizando as configurações do pacote

```py import basedosdados as bd

seta o billingprojectid global

bd.config.billingprojectid = ''

query = """ SELECT * FROM basedosdados.br_bd_diretorios_brasil.municipio """

df = bd.read_sql(query=query) ```

Para saber mais, veja os exemplos ou a documentação da API

Criando múltiplas configurações

Caso você precise ter uma configuração adicional, com uma service account diferente, você pode criar uma configuração e utilizá-la em conjunto com a default, apenas alterando um atributo. Você deverá fazer o processo abaixo usando o terminal, mas esta forma só funcionará no Python.

Para isso, siga os seguintes passos:

  1. Renomeie a pasta com o comando abaixo (pode ser o nome que quiser) bash mv ~/.basedosdados ~/.basedosdados_default
  2. Neste momento, o pacote não terá a configuração padrão. Assim, ao rodar o comando bash basedosdados config init ele irá criar uma nova configuração padrão, que será salva na pasta ~/.basedosdados (que será recriada). Lembre-se de, no passo em que é oferecido um link do Google Cloud Platform (GCP) para criar a nova service account, observar que seu navegador esteja logado com a conta que você deseja utilizar.
  3. Faça todo o processo como anteriormete, passando os parâmetros que deseja utilizar com esta nova conta, como o path dos metadados, o nome do bucket do Google Cloud Storage, etc.
  4. Ao salvar as novas service accounts (prod e staging), certifique-se de salvar na pasta .basedosdados criada no passo 1. Na verdade, esta é apenas a repetição do processo de criação de uma nova configuração.
  5. Renomeie a pasta criada no passo 1 para o nome que desejar, como ~/.bd_minha_nova_conta.
  6. Caso você queira que a primeira configuração seja a padrão, retorne o nome da pasta modificada anterioremnte (.basedosdados_default) para o valor utilizado como padrão pelo pacote basedosdados, usando o comando mv ~/.basedosdados_default ~/.basedosdados.
  7. A partir de agora, você poderá usar a nova conta (no Python), bastando utilizar o seguinte processo: py import basedosdados as bd bd.config.project_config_path = f"{home}/.bd_minha_nova_conta" e, se quiser voltar para a configuração padrão, basta utilizar o comando py bd.config.project_config_path = f"{home}/.basedosdados" Importante observar que, ao alterar o path de configuração do Python ele valerá para a sessão. Então é recomendável que ele seja usado com cuidado, evitanto trocas numa mesma sessão - especialmente quando estiver usando Jupyter Notebook onde é comum a reutilização de células anteriores, sem redefinição de variáveis e atributos anteriormente setados.

Usando em R

Instalação

```R install.packages("basedosdados")

ou a versão de desenvolvimento

devtools::install_github("basedosdados/sdk", subdir = "r-package") ```

Consultas

read_sql executa queries no banco e as devolve em dataframes (sempre na classe tibble), download escreve o resultado da query em um arquivo .csv no disco.

```r library(basedosdados)

setbillingid("id do seu projeto aqui") # autenticação para acesso aos dados

pibpercapita <- " SELECT pib.idmunicipio , pop.ano, pib.PIB / pop.populacao as pibpercapita FROM `basedosdados.bribgepib.municipioas pib INNER JOINbasedosdados.bribgepopulacao.municipio` as pop ON pib.idmunicipio = pop.id_municipio AND pib.ano = pop.ano"

(data <- readsql(pibpercapita)) # leia os dados em memória download(pibpercapita, "pibper_capita.csv") # salve os dados em disco ```

Ou use o nosso backend para o dplyr e faça queries com código, sem SQL.

```r query <- basedosdados::bdplyr("brinepideb.municipio") %>% dplyr::select(ano, idmunicipio, siglauf, ideb) %>% dplyr::filter(siglauf == "AC", ano < 2021) %>% dplyr::groupby(ano) %>% dplyr::summarise(ideb_medio = mean(ideb, na.rm = TRUE))

basedosdados::bdcollect(query) # retorne como um tibble basedosdados::bdwritecsv(query, "idebmedio.csv") basedosdados::bdwriterds(query, "ideb_medio.rds") ```

bd_write é uma extensão para formatos customizados.

r basedosdados::bd_write(query, .write_fn = writexl::write_xlsx, "ideb_medio.xlsx") basedosdados::bd_write(query, .write_fn = jsonlite::write_json, "ideb_medio.json") basedosdados::bd_write(query, .write_fn = haven::write_dta, "ideb_medio.dta")

O argumento .write_fn espera uma função que receba como argumento um tibble e um endereço de escrita, compatível com a interface convencional da língua para escrever arquivos em disco. A princípio, toda função write_* disponível no CRAN deve funcionar.

Caso encontre algum problema no pacote e queira ajudar, basta documentar o problema em um exemplo mínimo reprodutível e abrir uma issue.

Metadados e buscas

Você pode fazer buscas por tabelas usando palavras-chave ou buscar descrições de conjuntos e tabelas:

r dataset_search("educação") get_dataset_description("br_sp_alesp") get_table_description("br_sp_alesp", "deputado")

Atenção

Caso esteja acessando da primeira vez, vão aparecer alguns passos na tela para autenticar seu projeto com sua conta google e possivelmente na Tidyverse API - basta segui-los! As credenciais ficam armazenadas no computador então usuários com mais de uma máquina talvez precisem autenticar mais de uma vez. É necessário criar um projeto para que você possa fazer as queries no nosso repositório. Ter um projeto é de graça e basta ter uma conta Google (seu gmail por exemplo). [Veja aqui como criar um projeto no Google Cloud]https://basedosdados.org/docs/accessdatabq#bigquery). Se possível, armazene suas credenciais em um arquivo dotenv, em bash o comando é "billing_project_id=<suas_credenciais_do_projeto>" >> .env. Veja aqui como criar um arquivo dotenv.

Contribua

Leia nosso guia de contribuição

Owner

  • Name: Base dos Dados
  • Login: basedosdados
  • Kind: organization
  • Email: contato@basedosdados.org
  • Location: Brazil

Universalizando o acesso a dados de qualidade

Citation (CITATION.cff)

cff-version: 1.1.0
message: "If you use this software, please cite it as below."
title: "Base dos Dados"
authors:
  - name: "Base dos Dados"
url: "https://basedosdados.org"
license: MIT
license-url: "https://github.com/basedosdados/sdk/blob/master/LICENSE"
repository-code: https://github.com/basedosdados/sdk

GitHub Events

Total
  • Create event: 33
  • Release event: 1
  • Issues event: 6
  • Watch event: 14
  • Delete event: 30
  • Issue comment event: 18
  • Push event: 95
  • Pull request review comment event: 23
  • Pull request review event: 23
  • Pull request event: 59
  • Fork event: 3
Last Year
  • Create event: 33
  • Release event: 1
  • Issues event: 6
  • Watch event: 14
  • Delete event: 30
  • Issue comment event: 18
  • Push event: 95
  • Pull request review comment event: 23
  • Pull request review event: 23
  • Pull request event: 59
  • Fork event: 3

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 1,325
  • Total Committers: 45
  • Avg Commits per committer: 29.444
  • Development Distribution Score (DDS): 0.825
Past Year
  • Commits: 64
  • Committers: 10
  • Avg Commits per committer: 6.4
  • Development Distribution Score (DDS): 0.688
Top Committers
Name Email Commits
Ricardo Dahis 6****s 232
joaoc j****a@g****m 193
Diego Oliveira d****6@g****m 167
Fernanda Scovino f****m@g****m 120
Lucas Moreira 6****m 94
Crislane Alves 5****s 48
lucascr91 l****g@g****m 45
Hevilyn Souza 7****a 40
Gustavo Aires Tiago 3****o 37
Laura Amaral 1****l 31
Matheus Valentim 7****m 31
Vinicius Aguiar v****a@g****m 27
Arthur Gusmão a****o@i****r 26
Gustavo Alcantara g****a@g****m 25
Gabrielle Carvalho 7****v 22
Pedro Castro a****o@g****m 22
Caio R S dos Santos c****s@g****m 19
Mauricio Fagundes m****s@g****m 19
allcontributors[bot] 4****] 16
Gabriel Pisa 6****l 14
Ingrid de Sales Rabelo 1****o 14
Patrick Teixeira 1****x 13
Pedro Cavalcante Oliveira p****j@g****m 12
Jhony Lucas j****7@g****m 10
Henrique S. Xavier h****r@i****r 8
Filipe Cavalcanti f****i@g****m 5
Rodrigo Dornelles 3****s 4
Vítor Mussa v****a@g****m 4
hevsouza 7****n 4
Luiza Vilela Campos 1****a 3
and 15 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 9
  • Total pull requests: 61
  • Average time to close issues: about 1 year
  • Average time to close pull requests: 8 days
  • Total issue authors: 5
  • Total pull request authors: 5
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.15
  • Merged pull requests: 47
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 6
  • Pull requests: 61
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 8 days
  • Issue authors: 3
  • Pull request authors: 5
  • Average comments per issue: 0.17
  • Average comments per pull request: 0.15
  • Merged pull requests: 47
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • aspeddro (4)
  • gabriel-milan (2)
  • isabelmeister (1)
  • rfdornelles (1)
  • laura-l-amaral (1)
Pull Request Authors
  • aspeddro (44)
  • isabelmeister (8)
  • vilelaluiza (6)
  • laura-l-amaral (2)
  • d116626 (1)
Top Labels
Issue Labels
python (3) bug (2) infra (2) enhancement (2) data (1)
Pull Request Labels
download (1) python (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 14,829 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 18
  • Total versions: 193
  • Total maintainers: 2
pypi.org: basedosdados

Organizar e facilitar o acesso a dados brasileiros através de tabelas públicas no BigQuery.

  • Versions: 193
  • Dependent Packages: 0
  • Dependent Repositories: 18
  • Downloads: 14,829 Last month
Rankings
Stargazers count: 3.4%
Dependent repos count: 3.4%
Downloads: 3.5%
Forks count: 4.9%
Average: 5.0%
Dependent packages count: 10.1%
Maintainers (2)
Last synced: 6 months ago

Dependencies

bases/br_cgu_pessoal_executivo_federal/code/requirements.txt pypi
  • bs4 ==0.0.1
  • pandas ==1.4.1
  • requests ==2.27.1
  • tqdm ==4.63.1
bases/br_cgu_servidores_executivo_federal/code/requirements.txt pypi
  • google-cloud-storage *
  • numpy *
  • pandas *
  • requests *
bases/br_me_caged/code/caged_novo/requirements_caged_novo.txt pypi
  • Brotli ==1.0.9
  • Jinja2 ==2.11.2
  • MarkupSafe ==2.0.1
  • PyYAML ==5.4.1
  • Unidecode ==1.3.1
  • basedosdados ==1.5.6
  • bcj-cffi ==0.5.1
  • cachetools ==4.2.2
  • certifi ==2021.5.30
  • cffi ==1.14.6
  • charset-normalizer ==2.0.5
  • click ==7.1.2
  • google-api-core ==1.31.2
  • google-auth ==1.35.0
  • google-auth-oauthlib ==0.4.6
  • google-cloud-bigquery ==1.28.0
  • google-cloud-bigquery-storage ==1.1.0
  • google-cloud-core ==1.7.2
  • google-cloud-storage ==1.31.2
  • google-crc32c ==1.1.5
  • google-resumable-media ==1.3.3
  • googleapis-common-protos ==1.53.0
  • grpcio ==1.40.0
  • idna ==3.2
  • multivolumefile ==0.2.3
  • numpy ==1.21.2
  • oauthlib ==3.1.1
  • packaging ==21.0
  • pandas ==1.2.4
  • pandas-gbq ==0.13.2
  • protobuf ==3.18.0
  • py7zr ==0.16.1
  • pyaml ==20.4.0
  • pyasn1 ==0.4.8
  • pyasn1-modules ==0.2.8
  • pycparser ==2.20
  • pycryptodomex ==3.10.1
  • pydata-google-auth ==1.2.0
  • pyparsing ==2.4.7
  • pyppmd ==0.16.1
  • python-dateutil ==2.8.2
  • pytz ==2021.1
  • pyzstd ==0.14.4
  • requests ==2.26.0
  • requests-oauthlib ==1.3.0
  • rsa ==4.7.2
  • ruamel.yaml ==0.17.4
  • ruamel.yaml.clib ==0.2.6
  • six ==1.16.0
  • texttable ==1.6.4
  • tomlkit ==0.7.0
  • tqdm ==4.50.2
  • urllib3 ==1.26.6
bases/br_sp_gov_ssp/code/requirements.txt pypi
  • Automat ==20.2.0
  • Deprecated ==1.2.13
  • Protego ==0.1.16
  • PyDispatcher ==2.0.5
  • Scrapy ==2.5.1
  • Twisted ==21.7.0
  • attrs ==21.2.0
  • certifi ==2021.10.8
  • cffi ==1.15.0
  • charset-normalizer ==2.0.7
  • click ==7.1.2
  • constantly ==15.1.0
  • croniter ==1.0.15
  • cryptography ==35.0.0
  • cssselect ==1.1.0
  • dataclasses-json ==0.5.6
  • decorator ==5.1.0
  • dirhash ==0.2.1
  • diskcache ==5.2.1
  • docker-image-py ==0.1.12
  • docstring-parser ==0.12
  • flyteidl ==0.21.6
  • flytekit ==0.23.0
  • grpcio ==1.41.0
  • h2 ==3.2.0
  • hpack ==3.0.0
  • hyperframe ==5.2.0
  • hyperlink ==21.0.0
  • idna ==3.3
  • importlib-metadata ==4.8.1
  • incremental ==21.3.0
  • itemadapter ==0.4.0
  • itemloaders ==1.0.4
  • jmespath ==0.10.0
  • keyring ==23.2.1
  • lxml ==4.6.3
  • marshmallow ==3.14.0
  • marshmallow-enum ==1.5.1
  • marshmallow-jsonschema ==0.13.0
  • mypy-extensions ==0.4.3
  • natsort ==7.1.1
  • numpy ==1.21.3
  • pandas ==1.3.4
  • parsel ==1.6.0
  • pathspec ==0.9.0
  • priority ==1.3.0
  • protobuf ==3.19.0
  • py ==1.10.0
  • pyOpenSSL ==21.0.0
  • pyarrow ==3.0.0
  • pyasn1 ==0.4.8
  • pyasn1-modules ==0.2.8
  • pycparser ==2.20
  • python-dateutil ==2.8.1
  • python-json-logger ==2.0.2
  • pytimeparse ==1.1.8
  • pytz ==2018.4
  • queuelib ==1.6.2
  • regex ==2021.10.21
  • requests ==2.26.0
  • responses ==0.14.0
  • retry ==0.9.2
  • scantree ==0.0.1
  • service-identity ==21.1.0
  • six ==1.16.0
  • sortedcontainers ==2.4.0
  • statsd ==3.3.0
  • typing-extensions ==3.10.0.2
  • typing-inspect ==0.7.1
  • urllib3 ==1.26.7
  • w3lib ==1.22.0
  • wrapt ==1.13.2
  • zipp ==3.6.0
  • zope.interface ==5.4.0
r-package/DESCRIPTION cran
  • DBI >= 1.1.1 imports
  • bigrquery >= 1.4.0 imports
  • cli >= 2.5.0 imports
  • dbplyr >= 2.1.1 imports
  • dotenv >= 1.0.2 imports
  • dplyr >= 1.0.6 imports
  • fs >= 1.5.0 imports
  • glue >= 1.4.2 imports
  • httr >= 1.4.2 imports
  • magrittr >= 2.0.1 imports
  • methods * imports
  • purrr >= 0.3.4 imports
  • readr >= 1.4.0 imports
  • rlang >= 0.4.0 imports
  • scales >= 1.1.1 imports
  • stringr >= 1.4.0 imports
  • tibble >= 3.1.1 imports
  • typed >= 0.0.1 imports
  • writexl >= 1.4.0 imports
  • knitr * suggests
  • rmarkdown * suggests
  • testthat >= 3.0.0 suggests
python-package/poetry.lock pypi
  • cachetools 4.2.4
  • certifi 2021.10.8
  • charset-normalizer 2.0.12
  • ckanapi 4.6
  • click 8.0.3
  • colorama 0.4.4
  • db-dtypes 1.0.0
  • docopt 0.6.2
  • fastavro 1.4.10
  • google-api-core 1.31.5
  • google-auth 1.35.0
  • google-auth-oauthlib 0.5.1
  • google-cloud-bigquery 2.30.1
  • google-cloud-bigquery-storage 1.1.0
  • google-cloud-core 2.2.3
  • google-cloud-storage 1.42.3
  • google-crc32c 1.3.0
  • google-resumable-media 2.3.2
  • googleapis-common-protos 1.55.0
  • grpcio 1.44.0
  • idna 3.3
  • importlib-metadata 4.11.3
  • jinja2 3.0.3
  • loguru 0.6.0
  • markupsafe 2.1.1
  • numpy 1.21.5
  • oauthlib 3.2.0
  • packaging 21.3
  • pandas 1.3.5
  • pandas-gbq 0.17.4
  • pandavro 1.6.0
  • proto-plus 1.20.3
  • protobuf 3.19.4
  • pyaml 20.4.0
  • pyarrow 6.0.0
  • pyasn1 0.4.8
  • pyasn1-modules 0.2.8
  • pydata-google-auth 1.4.0
  • pyparsing 3.0.7
  • python-dateutil 2.8.2
  • python-slugify 6.1.1
  • pytz 2021.3
  • pyyaml 6.0
  • requests 2.27.1
  • requests-oauthlib 1.3.1
  • rsa 4.8
  • ruamel.yaml 0.17.10
  • ruamel.yaml.clib 0.2.6
  • setuptools 65.5.1
  • shapely 1.8.5.post1
  • six 1.16.0
  • text-unidecode 1.3
  • toml 0.10.2
  • tomlkit 0.7.0
  • tqdm 4.50.2
  • typing-extensions 4.1.1
  • urllib3 1.26.9
  • win32-setctime 1.1.0
  • zipp 3.7.0
python-package/pyproject.toml pypi
  • Jinja2 3.0.3
  • ckanapi 4.6
  • click 8.0.3
  • google-cloud-bigquery 2.30.1
  • google-cloud-bigquery-storage 1.1.0
  • google-cloud-storage 1.42.3
  • importlib-metadata ^4.11.3
  • loguru ^0.6.0
  • pandas ^1.3.5
  • pandas-gbq ^0.17.4
  • pandavro ^1.6.0
  • pyaml 20.4.0
  • pyarrow 6.0.0
  • python >=3.7.1,<3.11
  • ruamel.yaml 0.17.10
  • shapely ^1.6.0
  • toml ^0.10.2
  • tomlkit 0.7.0
  • tqdm 4.50.2
python-package/setup.py pypi
  • click ==8.0.3
.github/workflows/deploy-docs.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
bases/br_cgu_servidores_executivo_federal/code_/requirements.txt pypi
  • dask ==2.9.1
  • typer ==0.6.1
Dockerfile docker
  • builder latest build
  • python 3.11-slim build
docker-compose.yml docker