Mais 10 bibliotecas de Data Science para Python que ninguém te conta

Vem cá pra eu te contar um negócio

Paulo Vasconcellos
Data Hackers
9 min readSep 16, 2019

--

Há quase um ano eu crie um post falando sobre 10 bibliotecas de Data Science para Python que ninguém te conta. Desde então, recebi muitos feedbacks positivos de pessoas que não conheciam as bibliotecas que citei, e sobre como o post as ajudou em seus projetos. Fico muito feliz em ajudar vocês a descobrirem novas formas de deixar seu trabalho mais fluído e acelerado. Pensando nisso, decidi criar mais um artigo listando outras algumas bibliotecas que você talvez não conheça. Vambora?

Pendulum

Você deixará de odiar operações entre datas em Python

É sempre um saco trabalhar com datas em Python. Bibliotecas built-in como a datetime até ajudam bastante, mas eu sempre preciso dá aquela pesquisada no Stack Overflow pra saber coisas que me fazem sentir burro quando descubro a resposta.

Para nos ajudar nisso, existe Pendulum: uma biblioteca feita única e exclusivamente para fazer operações com datetime sem que a gente perca um ou dois neurônios no processo.

Quer saber a hora atual China? pendulum.now('Asia/China')
Quer adicionar X dias, meses ou anos na sua data? now.add(days=7)

Melhor que isso, só se tivesse uma lib voltasse no tempo. Peraí, talvez tenha.

Para instalar, abra um terminal e digite: pip install pendulum
Site oficial do Pendulum

PyOD

Detecte (quase) qualquer outlier

Detecção de outliers pode ser complicado algumas vezes. Nem sempre analisar o intervalo interquartil em um boxplot vai ser suficiente para identificar um valor aberrante, principalmente para problemas de Machine Learning. Para esses casos mais complicados existe o PyOD.

PyOD é uma biblioteca que junta uma série de técnicas para detecção de outlier em dados multivariados. Uma outra coisa bem legal do PyOD é que ele é uma excelente opção para quem está lidando com problemas de detecção de anomalias. Dentre as técnicas que dispõe, PyOD tem desde métodos de PCA até ensembles, e o mais legal é que eles sempre referenciam os papers que consideraram para implementar cada opção.

Para instalar, abra um terminal e digite: pip install pyod
Site do pyOD

Qgrid

Filtre, explore e limpe Pandas DataFrame facilmente

Eu sei. Se você me conhece, sabe que não sou muito fã de ferramentas point-and-click, mas nessa aqui eu não tive escolha: Qgrid acelera muito a exploração inicial de DataFrames.

Geralmente, brinco com o Qgrid logo no começo das minhas análises, só pra dar uma explorada rápida no DataFrame — quando é grande o suficiente para valer a pena — e ver se já consigo identificar algo interessante ali. Devo dizer que quase sempre eu removo a importação do Qgrid após essa fase inicial, mas ele já me ajudou bem em alguns projetos, além de permitir exploração, filtragem e ordenação de forma fácil caso queira disponibilizar o notebook para alguém não técnico dar uma olhada.

Para instalar, abra um terminal e digite: pip install qgrid
Github do Qgrid

Vaex

Tire as crianças da sala, porque isso aqui é pornografia

Já teve que trabalhar naquele dataset gigante e o Pandas crashava dizendo que acabou com sua memória? É claro que existem dezenas de opções para lidar com isso — o low_memory do Pandas; ler o arquivo em chunks; Spark; Apache Arrow; rezar um Pai Nosso, etc. Mas, hoje eu quero trazer mais uma opção para considerar: a lib Vaex.

Trata-se de uma biblioteca que foi feita para visualizar e explorar datasets tabulares gigantes. Uma das promessas dela é permitir fazer operações de agregação — média, some, min, … — a uma velocidade de um bilhão de linhas por segundo. É coisa pra Carvalho!

https://cdn-images-1.medium.com/fit/t/1600/480/1*BdeM6CWTpgmbtDWE4V5gzg.jpeg
Vaex possui integração com Datashader (Fonte)

Embora o Vaex seja bastante impressionante em processamento, o que eu mais acho irado nele é sua integração com bibliotecas de dataviz como Datashader, que tem um lugar especial no meu coração. Datashader é uma lib feita para plotar bilhões de data points, e que rendeu uma das visualizações mais legais que já vi. Ah, vale lembrar que ele também possui módulos de Machine Learning, ou seja, é bem completinho.

Para instalar, abra um terminal e digite: pip install vaex
Github do Vaex

PyOxidizer

E se você pudesse transformar seu código em um arquivo executável?

Já pensou criar um seu_app.exe com todo seu código Python, incluindo as dependências? É isso que o PyOxidizer faz por você. Escrito em Rust, esse utilitário te ajudará a encapsular sua aplicação para funcionar em qualquer máquina, principalmente nas que não tem Python instalado. Na verdade, o PyOxidizer nem é uma lib Python e não deveria estar nessa lista, mas você pegou o espírito.

A parte tensa do PyOxidizer é que você precisa instalar Rust na máquina para utilizá-lo. A parte boa é que você pode incluí-lo no pipeline do seu código e fazer aquele processo de Continuos Integration bonito. De toda forma, PyOxidizer é uma opção que te dá mais versatilidade ao seu trabalho.

Github do PyOxidizer

FACETS

Visualize datasets de Machine Learning

O Google Facets é uma biblioteca que lhe permitirá visualizar seu dataset para ter desde uma visão geral dos dados até uma visão mais detalhada de cada classe. O Facets possui duas principais ferramentas que te ajudarão a entender seus dados: a Facets Overview e a Facets Dive.

Facets Overview (Fonte)

A primeira, como o nome diz, lhe dará uma visão geral do seu dataset, dividindo ele por cada classe dos seus dados. Por exemplo, para um dataset de previsão de espécie de planta, para cada espécie ele irá te retornar a quantidade de dados nulos, frequência, distribuição, dentre outras métricas. Se você leu meu post passado, vai ver que essa parte do Facets se assemelha muito ao Pandas Profiling. Contudo, o Pandas Profiling pode ficar um pouco pesado, dependendo do tamanho do seu dataset, enquanto o Facets, além de lidar com esse problema, divide suas visualizações por cada classe no seu conjunto de dados.

Facets Dive em ação (Fonte)

Já o Facets Dive é onde o nosso amiguinho brilha. Ele cria uma interface onde você pode explorar e visualizar diferentes combinações de filtro, a fim de analisar como seu dado está distribuído. Essa ferramenta te ajudará muito a entender o relacionamento entre as variáveis do seu dataset, além de deixar muito interativo e acelerado o processo de análise exploratória.

Github do Facets

Yellowbrick

Diagnóstico de modelos

Yellowbrick é uma biblioteca para diagnóstico e visualização de modelos de Machine Learning. Feito tanto para modelos supervisionados e não-supervisionados, Yellowbrick te oferece uma série de visualizações para entender e diagnosticar seu modelo. Por exemplo, para problemas de classificação, a lib te oferece gráficos para métricas como prediction error, matriz de confusão, precision e recall. O mesmo vale para problemas não-supervisionados, como clustering, onde Yellowbrick oferece visualizações como análise de silhueta, elbow method e por aí vai.

Algumas das visualizações do Yellowbrick (Fonte)

O mais legal do Yellowbrick é que ele funciona como uma extensão do Scikit-learn. Se você tem conhecimento da biblioteca, brincar com o Yellowbrick não será problema.

Para instalar, abra um terminal e digite: pip install yellowbrick
Github do Yellowbrick

Pandarallel

Paralelismo + Pandas = ❤️

Se você já teve que fazer uma operação no Pandas que exigia muito da sua CPU, você já testemunhou seu computador chorar. Pandarallel vem para ajudar nessa operações onde você mete aquele apply() junto com iterrows() só pra ver o parquinho pegar fogo. Se liga só nesse benchmark:

A magia do Pandarallel — que eu acabei de descobrir que não consigo pronunciar sem ter uma cãibra na língua — está em dividir a carga do seu trabalho em todos os cores da sua CPU, deixando o processo menos custoso.

Um detalhe importante sobre a biblioteca — e que está inserido em seu Github também — é que paralelismo tem um preço. Novos processos são iniciados e há mudanças no seu código que podem ser significativas. Somente utilize paralelismo quando você tem uma quantidade de dados que justifique esse custo. Para pouco dado, o bom e velho código limpo já resolve o problema.

Para instalar, abra um terminal e digite: pip install pandarallel
Github do Pandarallel

Luminol

Biblioteca do Linkedin para detecção de Anomalia

Quando estava trabalhando em um problema de detecção de anomalia, recorri a biblioteca PyOD — que mencionei anteriormente — para ver se conseguia me ajudar. Como dito pelo próprio criador nessa issue no Github, PyOD não está equipado com modelos de detecção para time series, o que me fez a recorrer a papers. Durante minha pesquisa, esbarrei nessa criança aqui que me deu uma luz ao falar de um algoritmo chamado Time Series Bitmap. Após pesquisar um pouco mais, descubro que o pessoal lindo do Linkedin sintetizou o algoritmo nessa biblioteca chamada Luminol. Quem quiser conhecer um pouco mais sobre a motivação da galera do Linkedin, deem uma olhada nessa apresentação:

Luminol é uma lib levíssima que implementa vários algoritmos de detecção de anomalias para séries temporais, que funcionam melhores do que algoritmos como One-class SVM, por exemplo. Luminol tem uma série de aplicações, que vão desde detectar anomalias em rede — quantidade de escrita, requisições, etc. — até aplicações em saúde, com detecção de anomalia em batimentos cardíacos.

Para instalar, abra um terminal e digite: pip install luminol
Github do Luminol

Cookiecutter Data Science

Padronização e estruturação de projetos de Data Science

O Cookiecutter veio para por ordem na bagunça que é quando cientistas de dados criam novos projetos de Data Science. Geralmente, cada um tem sua própria estruturação de projetos, o que dificulta não só contribuição para o projeto, mas também simplesmente entender onde as coisas estão.

Quando se está em um time, o Cookiecutter tem um papel muito importante na padronização de código de projeto. Através do terminal, você irá informar dados importante do seu projeto, como: nome, descrição, autor, repositório, bucket no S3 (opcional), e até a licença. Após isso, Cookiecutter irá criar toda a estrutura de pastas e arquivos para seu projeto, que vão desde um README muito bacana até a licença e template de documentação para o código.

Para instalar, abra um terminal e digite: pip install cookiecutter
Github do Cookiecutter

Menção honrosa: FUCKIT

Por favor, não use isso

Seu código olhando para o Pytest

Quer que seu código execute SEMPRE, independente se tiver erro ou não? FUCK IT! É exatamente isso que essa biblioteca (supostamente) faz. FuckIt.py é uma paródia a uma lib de mesmo nome para JavaScript que se apresenta como “um rolo compressor de erros no Python”.

Claro que não recomendo que você entre no Github da biblioteca e instale ela na sua máquina. Por favor, não insistam. NÃO execute o código abaixo para instalar a biblioteca:

E aí, curtiu as dicas de bibliotecas de Data Science para Python? Conhece mais alguma que não está aqui na lista? Caso queira ficar sabendo sobre mais assuntos relacionados a ML e DS, me segue lá no Twitter (onde eu falo besteiras) e no Linkedin (onde eu falo besteiras de forma mais séria). Não esquece de falar que veio pelo blog, tá bom? :)

--

--

Paulo Vasconcellos
Data Hackers

Principal Data Scientist @ Hotmart | Msc in Computer Science | Co-founder @ Data Hackers