Bibliotecas aleatórias #01: PyJanitor

Em bibliotecas aleatórias o objetivo é explorar uma pequena lib (geralmente em Python mas podem ter outras que são só CLIs, etc) e ver o que ela faz, quais suas vantagens e como criar um pequeno código com ela para algum problema que você tenha.

Objetivo

O objetivo do pyjanitor é criar uma API de limpeza de dados em cima da API do pandas. Mas que esta API seja consistente que é algo que infelizmente, a API do pandas não é.

Outro ponto interessante é que com uma API consistente e method chaining[1] fica muito fácil ler o código, o que é uma grande vantagem quando estamos falando de várias pipelines e notebooks sendo produzidos dentro de uma empresa.

Exemplo de código

Nesta seção eu vou tentar levar pra vocês um pouco, o código para estes exemplos podem ser encontrados aqui:

Este é o dataset que vamos tratar:

Como dá pra ver, nós temos alguns problemas no dataset, pense por uns dois minutos que você acha problemático no dataset.

Os principais que eu consigo enxergar são:

  • payment #ID é um nome de coluna horrível para quase qualquer sistema.
  • payment #ID tá listado como float64 quando é fácil ver que é do tipo inteiro, assim como age.
  • due_date tá listado como tipo “object” quando é óbvio que seu tipo é Date/datetime
  • Missing data nas colunas age, payment #ID e due_date

Então eu vou mostrar como eu faria essas limpezas utilizando pandas somente e depois a diferença ao utilizar Pyjanitor.

Ao utilizar pandas, nós conseguimos fazendo os seguintes passos:

E o resultado das transformações:

Quais críticas você consegue elaborar acerca do código? você conseguiria entender fácil o que está sendo feito?

Por isso o pyjanitor surgiu, vejam como ficam as mesmas transformações ao utilizar pyjanitor:

Quais as vantagens que você consegue observar? a primeira delas é que eu sei exatamente qual variável contém os resultados das transformações e outra grande vantagem é que as funções possuem nomes muito descritivos e o resultado é o mesmo:

O que você deve tá pensando é que o pyjanitor também é expansível através de um decorator bem simples, a gente vai tentar fazer algo bem besta aqui só para testar mas que mostra o poder.

Bem suave né? e ai você pode ir bem longe com as suas necessidades, uma limpeza para um tipo de dado específico (imagem mensagem provenientes do Google Cloud pub/sub por exemplo).

Análise do repositório do github [2]

Uma coisa que eu faço como análise (imagina você analisando uma empresa para investir na bolsa) é checar a frequência de commits do repositório, a qualidade da documentação e como os issues são discutidos por exemplo.

Link para documentação: https://pyjanitor.readthedocs.io/ se vocês forem pesquisar qualquer coisa não é tãaao simples de achar assim, pra chegar no link de funções gerais: https://pyjanitor.readthedocs.io/reference/general_functions.html isso é ruim para um iniciante, acho deveria ser uns dos primeiros links.

Minha avaliação da lib: 4/5

Se você quiser ver e reproduzir o tutorial, só ir no código-fonte no meu github: https://github.com/fbormann/blog-posts/tree/library-pyjanitor

[1] https://en.wikipedia.org/wiki/Method_chaining#:~:text=Method%20chaining%2C%20also%20known%20as,to%20store%20the%20intermediate%20results.

[2] https://github.com/ericmjl/pyjanitor/

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s