Ir para o conteúdo principal
  1. Posts/

Cacimbão: dados do Brasil para aprender, feita com Polars e Narwhals

Durante as minhas aulas de visualização de dados na FU percebi, novamente, um padrão que acompanha a área de dados por algum tempo: muitos dos dados utilizados nas aulas e em tutoriais são dos Estados Unidos. De repente a gente se vê analisando o que as pessoas de lá assistem no Netflix, o preço das casas da Califórnia e até a distribuição dos votos. Isso tudo não faz muito sentido pra mim sendo brasileira.

O Brasil tem uma política de dados abertos referência no mundo. O padrão é que os dados sejam públicos, a menos que haja uma boa justificativa. Por isso temos milhares de bases de dados para explorar. O DATASUS, por exemplo, é a maior base de dados clínicos aberta do mundo.

Temos uma abundância de dados em diversos domínios para explorar. Você pode saber sobre X, Y ou Z usando dados nacionais, estaduais e até municipais. Só tem um problema: para cada base de dados, você precisa baixar os arquivos, carregá-los e então começar a brincadeira. Para dados marjoriamente vindos dos EUA, isso já é feito por bibliotecas populares como scikit-learn datasets e vegas datasets, e sites como Kaggle e OpenML.

Pensando nisso, criei o cacimbão, uma biblioteca de base de dados reais brasileiros para aprendizado. Voltada para o Brasil, com dados brasileiros e otimizado para a realidade brasileira.

Como usar
#

Um dos pontos fortes, e que acredito ter levado a popularização de outras bibliotecas, é a facilidade de uso. Com o cacimbão não é diferente. Para instalar, execute:

pip install cacimbao

Depois, você pode importar a biblioteca para ver as bases disponíveis:

import cacimbao

cacimbao.list_datasets()

Se quiser ver mais detalhes sobre as base de dados disponíveis, você pode usar:

cacimbao.list_datasets(include_metadata=True)

Carregando uma base de dados
#

Você pode fazer isso carregando uma base de dados local (que não precisa de internet):

df = cacimbao.load_dataset("pescadores_e_pescadoras_profissionais")

E também carregando uma base de dados remota (onde baixamos os dados da internet):

df = cacimbao.download_dataset("filmografia_brasileira")

Você pode ver se uma base é local ou não pelos metadados (cacimbao.list_datasets(include_metadata=True)).

Ter base de dados locais/remota e os tamanhos das base de dados ajudam em casos de acesso limitado a internet e baixo uso de recursos da máquina.

Tá, mas o que é Polars e Narwhals?
#

Para quem é mais do lado nerd da coisa, deixo aqui algo legal que tenho experimentado nesse projeto. Ultimamente tenho usado o Polars, a mais recente queridinha da comunidade de dados. Mas sei que muitas pessoas ainda usam Pandas e eu gostaria de deixar essa biblioteca o mais acessível possível.

É aqui que Narwhals entra em ação! 🐋 Narwhals é uma biblioteca que faz uma interface entre diferentes dataframes, como Pandas, Polars, Duckdb e outros. Dessa forma, eu posso usar as bases de dados do Cacimbão a partir de um dataframe Polars e outras pessoas podem continuar usando Pandas da mesma maneira. Por padrão, o dataframe retornado é Polars. Caso você queira usar Polars também (vem, é massa!) use o parâmetro df_format:

df = cacimbao.download_dataset("filmografia_brasileira", df_format="pandas")
type(df)
df = cacimbao.download_dataset("filmografia_brasileira", df_format="polars")
type(df)

Próximos passos
#

Atualmente a biblioteca conta com 5 bases de dados nas áreas de cultura, saúde, economia, trabalho e povos originários. Ainda quero adicionar mais bases mas também criar notebooks demonstrando como criar visualizações de dados, análises exploratórias e modelos de aprendizado de máquina com o Cacimbão.

Quiçá sairemos de árvores de decisão com o Titanic para diagnósticos com dados da nossa Pesquisa Nacional de Saúde. Dados, nós temos!