ifood!

Olá! Essa página descreve um projeto que desenvolvi.
Ele envolveu vários conhecimentos relacionados à ciência de dados - como Web Scraping, limpeza de dados e análise exploratória: jajá eu explico direitinho o que são esses termos hehe. Utilizei ferramentas em Python, para coleta e limpeza, e em R, para análise e documentação.


Esta página tem intutito de descrever os passos realizados de forma mais superficial.
Caso queira se aprofundar e verificar mais a fundo na documentação oficial do projeto, aqui está o link para o repositório no GitHub, em que tudo está bem documentadinho. A análise final dos dados se encontra neste link.
Let's go!


Motivação

Em conjunto com o time da IME Jr., empresa júnior do Instituto de Matemática e Estatística da USP, realizou-se a coleta de dados relativos a restaurantes nas proximidades de cada um dos integrantes, pelo site do ifood. Em seguida, limpei e juntei dados coletados por outros integrantes para realizar uma análise exploratória.


O projeto, portanto, pode ser dividido em algumas etapas básicas, que serão discutos nos próximos tópicos:


  1. 1. Coleta
  2. 2. Limpeza e junção
  3. 3. Análise

1. Coleta


Uma pergunta: como você coletaria dados (nome, nota, tipo, etc.) sobre os restaurantes da sua região? Iria num site de restaurantes e iria ver um por um, não? I guess so.


E se eu quisesse coletar dados de 100 restaurates, por exemplo? Demoraria hein. Até anotar o nome dos 100 restaurantes e as notas, por exemplo, a minha mão ia cair. Por isso, utlizei Python pra acelerar o processo pra gente.


Vejamos como podemos coletar dados do seguinte site do ifood:


Site do ifood

Tem muitos restaurantes aí, né. E cada "box" tem algumas informações interessantes sobre cada restaurante, como a nota dele no site, o tipo de comida que ele vende e etc. Eu estava interessado em fazer uma planilha do Excel mais ou menos assim

RestauranteNotaTipo de comidaDistanciaTempoTaxa de entrega
Gokei - Carrão4.6Japonesa0.959-69 min0.0
Pikurruchas Tatuapé4.7Doces & Bolos2.334-44 min6.99
Mussa Esfiha - Anália Franco4.7Árabe2.123-33 min7.99
Sassá Sushi - Tatuapé4.4Japonesa3.841-51 min10.49
Meats - Anália Franco4.7Lanches2.622-32 min6.99
..................

com muitos restaurantes. Para isso, utilizei programação pra fazer esse trabalho mais "braçal", de anotar o nome do restaurante, a nota dele, e etc. Um dia eu faço um post mais detalhado sobre esse processo, conhecido como Web Scraping (Raspagem da Web, em português), por aqui.
Mas, basicamente, devemos dar instruções pra um programa do tipo:


nomes dos restaurantes = lista vazia
notas dos restaurantes = lista vazia
tipos dos restaurantes = lista vazia
distancias = lista vazia
tempos = lista vazia
taxas de entrega = lista vazia

rode isso para todo box que você encontrar:
pegue o nome do restaurante e adicione na lista dos nomes
pegue a nota do restaurante e adiciona na lista das notas
...

e no final, fazer uma planilha do Excel, e que cada coluna é uma dessas listas.
O processo está mais detalhado neste código, disponível no meu GitHub.


Enfim, coletei dados de mais de 100 restaurantes com algumas linhas de código, e gerei esse arquivo .csv, que é uma planilha do Excel em formato de texto - dá pra abrir pelo Excel, se você quiser :D


2. Limpeza e Junção


Uma vez que este projeto foi realizado com a equipe da grandíssima IME Jr., cada membro também realizou um processo de Web Scraping e gerou um arquivo csv. Porém, os dados não estavam tão agradáveis - então, foi necessária uma limpeza antes de juntar os dados de cada um.


Mas o que são dados não-limpos? Faço um post sobre isso aqui no site em breve.


Acho que o notebook fala por si só sobre o processo. Enfim, no final do processo gerei um arquivo csv juntando 3 outros conjuntos de dados de colegas para minha análise, resultando em quase 120 restaurante.

3. Análise


Acho que a própria análise fala mais sobre ela do que qualquer coisa falando sobre a análise.


Análise final

Conclusões

Você pode ver todo o processo desse projeto neste repositório.


Em relação à coleta de dados, utilizei Python. Porém, poderia ter utilizado pacotes em R, como httr. Mas já tinha familiaridade com Selenium, ele satisfaz bem minhas necessidades.


Em relação à limpeza e junção de dados, sou mais fã de R - porém, optei por realizar esta seção em Python para desenvolver um pouco minhas habilidades.


Por fim, na parte de visualização e exploração, não houve dúvidas: R. Adoro trabalhar com o tidyverse (dplyr, ggplot2, magrittr, etc.) - não que eu não goste de pandas, matplotlib e afins, mas prefiro muito os pacotes em R. Este projeto envolveu diversos conhecimentos e habilidades interessantes. Gostei de aplicar princípios do livro "Storytelling com Dados", da Cole Nussbaumer Knaflic na parte de visualização.


Por fim, é isso. Obrigado pela leitura :D


Kenzo.