t

Google sheets e Jupyter Notebook

Luis Moura / 2018-06-18


Um dos problemas que encontro quando trabalho em equipa, é a incerteza de saber se todos os seus elementos conseguem aceder a uma base de dados comum. O nível de conhecimentos informáticos varia consideravelmente entre os elementos que se encontram a trabalhar em obra e os que estão no escritório. Entre os sub-empreeiteiros, essa variação também se faz sentir. Já tive sub-empreiteiros que tinham uma equipa técnica de suporte, e já tive outros, que tive que os ajudar a criar uma conta de email. Os donos de obra (e falando das obras em que estive envolvido), normalmente têm conhecimentos informáticos razoavelmente bons, ou então têm alguém a trabalhar para eles que os tenha. O mesmo se aplica às equipas de Engenharia e Arquitetura.

Existem várias soluções informáticas para este problema, entre elas, e mais famosa em Portugal, são os programas da Autodesk, que visam a implementação do BIM. Mas estes programas normalmente são bastantes caros e por vezes existe uma enorme incompatibilidade entre as diversas versões, o que exige a presença de apoio técnico constante, o que faz com que na maioria das vezes, estes programas só sejam usados em obras de grande dimensões, em que a despesa com o software e a sua manutenção, o justifiquem.

Google Sheets

Um bom sistema deve ser simples, de fácil implementação e que facilmente possa ser modificado para ser adaptado às circunstâncias. Também deve ter em conta o nível de conhecimentos informáticos das equipas do projeto. De pouca importa ter um sistema informático de ponta, quando não existe ninguém que o consiga utilizar.

O Google Sheets é uma das alternativas que pode ser usado como base de dados para projetos de pequena dimensão (menos de 1 milhão de euros). Primeiro, o Google Sheets faz parte da conta da Google, e hoje em dia, quase toda a gente tem conta com este serviço. Segundo, o sistema é bastante amigo do utilizador. Terceiro, é grátis. Não ter que pagar vários milhares de euros por uma solução informática da Autodesk, parece uma muito boa ideia. O Google Sheets também permite que seja aplicado três níveis de privacidade aos documentos nele criado: Público, que pode ser acedido e alterado por qualquer pessoa; Limitado, em que pode ser restrito o nível de acesso a único grupo de pessoas; e Privado, em que se encontra escondido dos motores de busca.

Caso Estudo

Vamos imaginar um projeto de pequena dimensão, em que 3 sub-empreiteiros estão a dar o orçamento para a construção de muro de suporte. A construção do muro está dividida em 5 fases, e cada uma delas, deverá estar separada no orçamento dos sub-empreiteiros:

Primeira Etapa - Preparação base de dados

Construção de uma folha no Google Sheets com a informação pretendida:

Segunda Etapa - Obtenção dos dados

Não basta simplesmente ter uma boa base de dados, é preciso que ela seja analisada e as soluções partilhadas em forma de documentação pelos diversos elementos da equipa.

Neste caso imaginário, será utilizado Python para fazer essa análise. E para isso, começo por baixar as livrarias de python que vou utilizar:

# Pandas para a extração e análise de dados da tabela
import pandas as pd
# matplotlib e seaborn para a construção de gráfico
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid", color_codes=True)
%matplotlib inline

Nota: Eu estou a escrever este post no sistema Jupyter

Agora que já temos as livrarias de Python necessárias, podemos avançar para nossa tabela e começar por visualizar os dados que lá estão guardados.

#leitura de dados da folha do Google Sheets
tabela=pd.read_csv("https://docs.google.com/spreadsheets/d/1YNj_Ys5_NBudyS0rxk0Xd84EVcecsGy4zDYRUCJtnag/export?format=csv&id")

Em cima, foi designado por “tabela”, a leitura dos dados da folha do Google. Agora basta escrever “tabela”, para aceder aos dados em ela guardados:

tabela
Unnamed: 0 Sub_Empreiteiro_A Sub_Empreiteiro_B Sub_Empreiteiro_C
0 Fase 1 32000 29000 37500
1 Fase 2 25000 27500 22000
2 Fase 3 7400 6800 6600
3 Fase 4 2700 1800 2300
4 Fase 5 12000 13780 9900

Terceira Etapa - Análise dos Dados

Com os dados da tabela em cima, podemos começar a fazer a análise. Primeiro, encontrar o preço total para cada um dos Sub-Empreiteiros.

# Soma das colunas com o total para cada Sub-Empreiteiro
A=tabela["Sub_Empreiteiro_A"].sum()
B=tabela["Sub_Empreiteiro_B"].sum()
C=tabela["Sub_Empreiteiro_C"].sum()

Com a designação de “A”, ficou o Orçamento total do Sub-Empreiteiro A, com a designação de “B”, ficou o Orçamento total do Sub-Empreiteiro B e com a designação de “C”, ficou o Orçamento total do Sub-Empreiteiro C.

Agora basta escrever A, B e C para saber os totais:

# Orçamentos
A,B,C
(79100, 78880, 78300)

O orçamento mais elevado foi o do Sub-Empreiteiro A, com 79,100 euros e o mais baixo foi o do Sub-Empreiteiro C, com 78,300 euros.

Mas é importante visualizar os dados, e comparar os orçamentos para as diversas fases. Para a visualização desse tipo de informação, os gráficos são exelentes ferramentas de trabalho. No caso em análise, a tabela tem 6 linhas, tornando-se fácil a comparação entre as diversas variáveis. No entanto, quando as tabelas chegam às centenas e por vezes milhares de linhas, torna-se impossível a comparação de dados sem a ajuda de sistemas auxiliares.

# comando para a criação de um gráfico para todos os dados da tabela
tabela.plot(kind="bar", figsize=(14,8))

python

Visualmente, podemos agora fazer comparações. O Sub-Empreiteiro C, que foi o que teve o Orçamento do trabalho mais baixo, é também o que está a cobrar substancialmente mais na primeira fase. Normalmente isto deve-se a dois motivos:

  1. Erro nos cálculos
  2. O Sub-Empreiteiro C considerou algumas das tarefas da segunda fase como parte da primeira

Existe também a possibilidade de o Sub-Empreiteiro C estar certo, e o outros terem dado um preço demasiado baixo para a primeira fase.

No entanto, seja qual for o caso, esta análise simplista, é possível pela integração de gráficos.

Conclusão

Esta meia dúzia de linhas de código, podem ser facilmente integrados em relatórios de modo a que qualquer alteração na base dados, neste caso do Google Sheet, seja facilmente atualizados no relatório. O custo de usar este sistema é zero, tanto para o software (Python e Jupyter Notebook) como para a base de dados no Google Sheets.

Esta análise foi feita de um modo simplista de forma a apresentar o processo, sendo gerada a partir também de um projeto de construção simples. Mas o mesmo mantém-se verdade para projetos mais complexos, com maior base de dados, em que facilmente podem ser analisados por Python, e as análises exportadas para relatórios a serem distribuídos pela equipa. O nível de qualidade de tais relatórios e muito superior ao de soluções comuns como as do Microsoft Excel. A base de dados é facilmente acedida através de um weblink e os níveis de privacidade podem ser formatados de acordo com a equipa que lhe foi dado acesso.

Para o relatório final, a utilização de um editor de texto que consiga aceder a Python e converter a informação em pdf, é tudo o que basta. No meu caso em particular, eu uso Emacs - Org mode. Mas existem outros textos editores que servem perfeitamente. Seja qual for o método, o importante é que trabalhe, seja simples e consiga os resultados pretendidos.