1º Projeto de Insight, House Rocket

Aqui eu mostro minha experiência com o projeto House Rocket, se você quiser ver a organização do código visite o Github aqui e o Projeto em Produção aqui.

Gabriel Nobre
4 min readJun 4, 2022

Minha Experiência

Este projeto da House Rocket, é o primeiro que faço, teve como objetivo ser um projeto de insight. A ideia, em sua realização, foi me familiarizar com a linguagem python e a exploração de dados.

Para realizar este projeto, participei de um conjunto de vídeo aulas na Comunidade DS afim de desenvolver as habilidades necessárias para o projeto.

De início planejei o projeto dividido em 5 entregas, 1 por semana, sendo:

Primeira entrega:

  1. A criação do Readme.md com parte do planejamento da solução
  2. Limpeza dos dados e uma primeira versão da estatística descritiva
  3. Propostas de features e hipóteses de negócio há serem validadas

Segunda entrega:

  1. Criação das features e hipóteses de negócio com os primeiros gráficos explicativos.
  2. Atualização do Readme.md

Terceira entrega:

  1. Conclusão das hipóteses + melhores insight encontrados.
  2. Preparação da aplicação para por em produção no Heroku com o Streamlit

Quarta entrega:

  1. Primeira versão funcional da aplicação no Heroku.
  2. Atualização do Readme.md

Quinta entrega:

  1. Aplicação final e funcional no Heroku com Streamlit.
  2. Publicação de Artigo falando sobre minha experiência com esse projeto.

Com tudo concluído, me surpreendi, pois levou só 3 semanas para realizar o projeto completo.

Mesmo terminando mais cedo, ainda sentia o projeto um pouco incompleto, pois o código ainda estava muito comprido e todo ele estava em uma única página no Streamlit. Tendo isso em vista, fui atrás de melhorar o código e tentar fazer múltiplas páginas.

Consegui fazer os 2, reestruturei o código e dividi ele em 7 partes. Sendo 2 arquivos para montar o multiapp, 1 arquivo para as transformações de dados e 4 arquivos para mostrar o trabalho feito.

As páginas para mostrar o trabalho foram a pagina inicial, features e estatística, hipóteses, questões de negócio.

Com isso consegui deixar o código mais legível, mas ressalvo que há melhorias a serem feitas.

A maior dificuldade encontrada

A maior dificuldade foi fazer com que o arquivo .csv fosse lido somente 1 vez. Como assim?

Quando montei o multiapp vi que todas as vezes que chamava uma página o data_set sempre era chamado também

A maior dificuldade foi colocar em produção no Heroku. Basicamente eram só 3 arquivos: setup.sh, requirements.txt, Procfile.

Como era de se esperar deu alguns problemas:

  1. De versões e arquivos que não podiam ser instalados pois eram das dependências do Windows. Retirei algumas bibliotecas secundárias do requirements.txt e criei um outro arquivo chamado runtime.txt informando o python da aplicação. Com algumas tentativas consegui resolver esse problema.
  2. Tive problemas também no outros dois arquivos setup.sh e Procfile, mas eram problemas de digitação e não de código em si. O engraçado foi que resolvi depois de parar de tentar resolver. Fui tirar um descanso e me veio a ideia de que o problema poderia ser na escrita em si.
  3. Como o meu Heroku é a versão gratuita eu não poderia ultrapassar alguns limites de memória, então tive que pensar em como reduzir o tamanho da aplicação, pois depois que instalava todos os requirements.txt dava aproximadamente 720mb, então, tive que mexer no requirements.txt de novo e enxugar mais um pouco.

Em fim, o Heroku me deu alguns bons dias de trabalho. A pesar do programa ter rodado muito bem na minha maquina local, colocar em produção é bem diferente.

Com o que eu mais gostei de trabalhar

Na verdade não teve uma parte em específico, todo o projeto foi muito bom (menos o Deploy 🤣).

O que eu consegui aprender mais rápido foi a parte de tratamento dos dados, criação das hipóteses e os testes das hipóteses com as análises bivariadas e multivariadas. É incrível o tanto de insight que da para retirar dessa parte.

Outra parte que gostei muito foi ver todo o meu trabalho de análise ter um impacto financeiro real sobre o que comprar ou vender e quando comprar ou vender. No início eram 21 mil imóveis e com algumas premissas assumidas no projeto ficou um pouco menos de 4 mil imóveis aptos a compra e venda.

Penso que essa seja a parte mais essencial do meu trabalho, saber como transformar toda aquela informação crua em recurso financeiro para e empresa que trabalho.

O que precisa melhorar no projeto

É notório a necessidade de refatora o código para diminuir a verbosidade.

Um exemplo é o arquivo questões de negócio. Os métodos estão muito grande e eu posso, no futuro, colocar cada filtro em um método para ficar mais fácil a manutenção do código. Um bom exemplo de um código de fácil manutenção é o meu arquivo de hipóteses.py, na minha concepção ele está limpo enxuto e bem definido no que faz.

Outro ponto é a transformação de dados, talvez criar um ou duas classes para a transformação.

Penso que essas são as melhorias necessárias. Quando terminar de ler o clean code, volto por aqui para deixar o código mais profissional.

--

--