Meigarom
30/4/2020

O Projeto de Data Engineering Para o Seu Portfólio.

Imagem Principal
Introdução

Recapitulando, a forma mais simples e direta para entrar na área de Data Science, seja através do primeiro emprego ou da migração de carreira, é construir um Portfólio de Projetos Matador.

Um portfólio de projetos Matador prova que você é tão capaz de solucionar desafios de negócio quanto os Data Scientist que já atuam profissionalmente nas empresas.

Existem 5 tipos de projetos que compõe o portfólio matador: Projetos de Insights, Projetos de Data Engineering, Projetos de Machine Learning, Projetos End to End e Projetos de Data Science.

Se você quer saber mais sobre os outros tipos de projetos, assista esse vídeo do canal “Seja Um Data Scientist” https://youtu.be/LJrK4B7bNWA.

Nesse outro post, https://bit.ly/2yO5mth, você encontra detalhes sobre o Projeto de Insights.

Leia esse post até o final, e descubra detalhes sobre como construir um projeto do tipo Data Engineering para o seu Portfólio.

Projeto Número 02: O Projeto de Data Engineering:

O objetivo do projeto de Data Engineering é coletar e organizar dados. Isso mesmo, você precisa ser capaz de acessar fontes distintas de dados, coletar essas informações e armazenar em um local de fácil acesso e que seja escalável.

Mas Meigarom, porquê eu preciso saber coletar e organizar os dados? Esse não é o trabalho de um Data Engineering?

A resposta para essa pergunta é simples. Muitas empresas ainda não tem os seus dados estruturados e o time de Data Engineering não está completo, portanto, para construir seus modelos de Machine Learning você vai precisar conseguir seus próprios dados. Além disso, com essa habilidade você se torna um Data Scientist independente, você não precisa esperar que os dados estejam organizados para você desenvolver o seu trabalho.

Nenhuma empresa quer contratar um profissional dependente, pense nisso.

O Projeto de Data Engineering cobre 3 passos do roadmap de resolução de problemas em Data Science, sendo esses: Coleta de Dados, Limpeza de Dados e Exploração de Dados.

Se você cumprir esses 3 passos, você criará um solução para coletar e organizar os dados. E para te ajudar a cumprir esses 3 passos, eu vou criar um desafio fictício de uma empresa imaginária para simular um contexto mais real, no qual a solução do problema começa com a coleta e o armazenando dos dados.

Para um Projeto de Data Engineering, eu sugiro que você crie uma solução para a empresa Book Club.

Disclaimer: O Contexto a seguir, é completamente fictício, a empresa, o contexto e os dados, existem somente na minha imaginação.

Contexto do Desafio:

A Book Club é uma Startup de troca de livros. O modelo de negócio funciona com base na troca de livros pelos usuários, cada livro cadastrado pelo usuário, dá o direito à uma troca, porém o usuário também pode comprar o livro, caso ele não queira oferecer outro livro em troca.

Umas das ferramentas mais importantes para que esse modelo de negócio rentabilize, é a recomendação. Uma excelente recomendação aumenta o volume de trocas e vendas no site.

Você é um Data Scientist contrato pela empresa para construir um Sistema de Recomendação que impulsione o volume de trocas e vendas entre os usuários. Porém, a Book Club não coleta e nem armazena os livros enviados pelos usuários.

Os livros para troca, são enviados pelos próprios usuários através de um botão “Fazer Upload”, eles ficam visíveis no site, junto com suas estrelas, que representam o quanto os usuários gostaram ou não do livro, porém a Startup não coleta e nem armazena esses dados em um banco de dados.

Logo, antes de construir um sistema de recomendação, você precisa coletar e armazenar os dados do site. Portanto seu primeiro trabalho como um Data Scientist será coletar e armazenar os seguintes dados:

  1. O nome do livro.
  2. A categoria do livro.
  3. O número de estrelas que o livro recebeu.
  4. O preço do livro.
  5. Se o livro está em Estoque ou não.

Os Dados do desafio:

Os dados para serem coletados e armazenados, estão disponíveis neste site. http://books.toscrape.com/

Esse site foi desenvolvido e disponibilizado especialmente para praticar web scraping. Não existe nenhum tipo de problema legal ao fazer a coleta de dados.

Como solucionar esse desafio?

Esse é um desafio de Data Engineering. Ele é bem mais complicado do que parece, mas é um ótimo exercício para você desenvolver habilidades de Programação e Engenharia de Softwares para criar pipeline de dados.

Eu vou deixar aqui um roteiro para você se orientar, ele pode ser modificado da forma que você preferir ou simplesmente ignorado. Provavelmente, você já tem um roteiro de resolução melhor para abordar esse desafio.

E o mais importante, tenha paciência, criar uma solução leva tempo, assuma uma postura resiliente e nunca desista, afinal você quer ser um Data Scientist e ganhar um ótimo salário, não quer?

Roteiro Sugerido para a Resolução:

Esse é o roteiro de resolução do desafio que eu sugiro:

  1. Faça o web scraper, necessariamente, utilizando a linguagem Python.
  2. Utiliza a biblioteca Selenium do Python para navegar entre os links das categorias e as páginas.
  3. Utiliza a biblioteca BeautifulSoup do Python para coletar os dados das páginas HTML.
  4. Instale no seu computador e configure um banco de dados Postgres.
  5. Crie uma tabela para armazenar os dados.
  6. Agende seu script para rodar todos os dias em um horário específico. ( Não tem problema armazenar dados repetidos, já que o site não tem atualizações diárias )
  7. Garanta que seu script saiba lidar com possíveis erros e não pare de funcionar por qualquer problema ( internet lenta, página não encontrada, objeto não carregado, etc ).
  8. Salve seu projeto em um repositório público Github ou Bitbucket.
  9. Escreva o README com todos os passos necessários, para que outras pessoas consigam usar sua solução.

Tornar sua solução Profissionalmente Respeitada:
  1. Crie sua solução modularizada. O Script em Python deve salvar um arquivo csv em alguma pasta da sua máquina e então outro script em bash, deve fazer a inserção dos dados no banco de dados.
  2. Sincronize esse dois script ( Python para coletar e salvar os dados e o Bash script para inserir no banco Postgres ).
  3. Faça o gerenciamento desses jobs utilizando o Airflow ( Framework de gerenciamento de Jobs ). Um script só pode rodar, quando o outro terminar.
  4. Paraleliza seu script de coleta. Crie workers que trabalham em paralelo, cada um coleta e armazena os dados dos livros de uma página.

Vá em Frente!

Não existe caminho fácil, de curto prazo em nenhum profissão, muito menos em Data Science, mas existe o caminho certo. E o caminho certo é adquirir experiência através do desenvolvimento de projetos para mostrar sua capacidade.

Volto a repetir, os projetos do seu portfólio precisam demonstrar que você é tão capaz de resolver desafios de negócio quantos os Data Scientists que já atuam profissionalmente nas empresas.

Quando você conseguir solucionar esse desafio, armazena seus códigos no Github ou no Bitbucket e escreva um artigo, explicando como sua solução funciona, o contexto do problema e o resultado final. Faça gráficos a partir do seu banco de dados, para mostrar que você conseguiu coletar e armazenar os dados da Book Club.

Se quiser publicar aqui no blog, me manda um msg no LinkedIn (@meigarom ) ou no Instagram ( @meigarom.datascience ). Publicarei seu trabalho com o maior prazer do mundo.

Conclusão:

Nesse segundo post da série, você recebeu o desafio de aprender a coletar e armazenar dados. Essa habilidade será muito útil na sua vida profissional, pode ter certeza.

Eu sugeri também um passo a passo para criar a solução, porém fique a vontade para seguir o seu próprio roadmap.