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.
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:
- A criação do Readme.md com parte do planejamento da solução
- Limpeza dos dados e uma primeira versão da estatística descritiva
- Propostas de features e hipóteses de negócio há serem validadas
Segunda entrega:
- Criação das features e hipóteses de negócio com os primeiros gráficos explicativos.
- Atualização do Readme.md
Terceira entrega:
- Conclusão das hipóteses + melhores insight encontrados.
- Preparação da aplicação para por em produção no Heroku com o Streamlit
Quarta entrega:
- Primeira versão funcional da aplicação no Heroku.
- Atualização do Readme.md
Quinta entrega:
- Aplicação final e funcional no Heroku com Streamlit.
- 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:
- 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.
- 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.
- 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.