Grandes Problemas, Pequenas Soluções para Data Science
Extração e Armazenamento de dados são duas tarefas que muitas vezes dão muito trabalho para analistas e cientistas de dados. Data Science é uma área incrível, mas com problemas chatos que muitas fazem te fazem perder umas horas de paciência. O artigo de hoje é para ensinar formas de solucionar pequenos problemas que você pode se deparar ao precisar extrair ou armazenar dados.
Muitas vezes quando estamos montando nossos bancos de dados precisamos de alguma informação adicional, mas o dado está no HTML de uma página Web. Obviamente você não vai copiar e colar dado por dado… Ufa. Uma saída é fazer um processo chamado de web scraping, ou seja raspagem na Web. Basicamente é você coletar dados em páginas web e isso pode ser feito de forma automatizada com Python. Existem vários pacotes para isso, mas sugiro o uso do BeautifulSoup para extração de dados em páginas Web.
O código abaixo mostra como extrair dados de páginas Web utilizando BeautifulSoup, acessando uma URL que possua uma chave identificadora. Além disso, esse código mostra como extrair dados de uma página Web com expressão regular, dado que o padrão solicitado, 4 dígitos seguidos de um ponto e caracteres alfanuméricos, não estava entre uma class ou id. Para manipulação de expressões regulares foi utilizado o pacote re do Python.
# Importando para URLOpen
from urllib.request import urlopen
# Importando a BeautifulSoup
from bs4 import BeautifulSoup
# Bibliotea de Regex
import re
# Vamos mudar a URL
url = 'http://origin.tubic.org/deg/public/index.php/information/eukaryotes/'# Função para realizar o scraping do pattern
def webScrapingPattern(url, chave):
url = url + chave + '.html'
# lendo a URL com a urllopen
html = urlopen(url)
# extraindo a página HTML
bs = BeautifulSoup(html, "html.parser")
# Transformando em String
texto = str(bs.find_all('td')).strip('[]')
# Aplicando regex para extrair o pattern
pattern = re.findall('[0-9]{4}\.[a-zA-Z]+[0-9]*[a-zA-Z]*', texto)
return "".join(pattern)
Outra dica bem legal para Data Science, dessa vez sobre armazenamento eficiente, é a compressão de dados sem perder poder de manipulação, você não vai precisar “zipar” os dados. Para isso, você pode utilizar o formato Apache Parquet ou parquet, como está disponível em várias linguagens, você pode continuar utilizando o Pandas nas suas análises. Segundo a própria Apache:
Apache Parquet é um formato de arquivo de dados orientado a colunas de código aberto projetado para armazenamento e recuperação eficiente de dados.
No Pandas você vai precisar instalar uma engine, mas é muito simples. Recomendo a fastparquet, disponível no Pypi. Este formato vai te requerer um tamanho bem menor de armazenamento de dados e ainda trabalha muito bem com ambientes Spark (assunto para outro artigo). Com Pandas, você pode fazer a conversão e a leitura do arquivo em parquet conforme o código abaixo:
import pandas as pd# Exemplo de conversão
dataset.to_parquet('dataset.parquet', engine='fastparquet')# Exemplo de leitura
dataset = pd.read_parquet('dataset.parquet', engine='fastparquet')
Esse artigo foi rápido e serve mais como um socorro naqueles momentos que você necessita de soluções rápidas para resolver um problema. Essa é uma proposta, mas existem muitas outras disponíveis. Todos os pacotes sugeridos aqui são gratuitos e destinados para a linguagem Python. Espero que tenham gostado e breve mais artigos falando de Data Science.