Análise de Mensagens de Bom Dia do WhatsApp da Família

Fernando Marcos Wittmann
Data Science BR
Published in
7 min readJan 11, 2020

OBS: Para executar os códigos deste post no Google Colab, basta clicar aqui.

Photo by Chris Ried on Unsplash

Como um bom cientista de dados decidi entreter o grupo de minha família com informações sobre a movimentação no grupo. Em especial, decidi focar nos bom dias, ação praticamente religiosa tomada diariamente por muitos dos membros. Neste post estarei descrevendo passo a passo como estarei fazendo esta análise e pode servir como tutorial para quem quiser replicar para o grupo de sua família. Aliás estou escrevendo este post em paralelo à realização da análise, portanto, ainda não sei quais serão os resultados. E para deixar claro: minha intenção aqui não é desincentivar tal prática. Afinal, a mesma é um sinal de um laço presente entre os familiares. Por hora, meu plano de ação é:

  • Baixar o log de dados de conversa do grupo
  • Usando Python, extrair a partir do log de conversas e criar uma base de dados com as seguintes colunas: Data, Hora, Quem deu bom dia

A partir dessa base de dados quero extrair algumas informações, talvez usando pivots do google sheets ou o pacote pandas do Python, como por exemplo:

  • Número total de bom dias
  • Média do horário que os bom dias são dados
  • Os madrugadores da família (quem dá bom dia mais cedo em média)
  • Os tardões da família (quem dá bom dia mais tarde em média)
  • Os top 10 bom dias mais cedos já dados no grupo
  • Os top 10 bom dias mais tardes já dados
  • Quem deu mais bom dias no grupo
  • ATUALIZAÇÃO: Anonimizei os contatos para evitar encrencas com os familiares 😅

E por aí vai. Por simplificação, estarei frequentemente me referindo à sigla BD para bom dia. Sem mais delongas, vamos começar.

Baixando o log de conversas do grupo

Esta parte é bem simples, basta ir no menu do grupo (três pontos) > mais > exportar chat. A base de dados (juntamente com outros arquivos) estará salva em um arquivo .txt.

Em seguida, salvei o log em uma pasta do Google Drive chamada familia-grupo-whatsapp pela qual estarei acessando via Google Colab. Primeiramente vou montar o Google Drive:

Agora vou acessar a pasta que salvei as mensagens e dar uma olhada no arquivo:

Vamos dar uma olhada nos últimos 200 caracteres do arquivo (anonimizei os nomes):

Agora vamos extrair todos os bom dias utilizando regex:

Uma lista de tuplas contendo data, horário e contato de quem deu bom dia foi criado. O padrão regex para extração destas informações foi criado utilizando o regexr.com. Alguns melhoramentos podem ser feito, pois atualmente apenas captura Bom dia e bom dia (iniciais maiúsculas e minúsculas). Por exemplo, algum parente entusiasmado poderia ter dado Boooom dia ou bom diiiia e não será capturado. De forma a fazer algumas análises, vamos converter esta lista para um DataFrame do Pandas:

Em seguida, vou criar baixar um gerador aleatório de nomes para anonimizar os contatos:

Por exemplo, vamos ver para qual nome o meu pai foi anonimizado:

Meu pai passará a ser Mr. Frederick, nada mal. Por fim, vou aplicar a função anonimização à todos os contatos:

Se você não quiser anonimizar os nomes, basta ignorar a linha anterior com a função .apply(lambda x: contatos_anonimizados[x]. Vamos agora para algumas análises, primeiramente algumas estatísticas iniciais:

Nesta base estão contidos 1129 dias, como podemos conferir no elemento unique da coluna Data. Ou seja, em torno de 3 anos. Neste período, o número de BDs dados nos foi 10mil, como podemos conferir no campo count. O número de contatos diferentes que deram BDs é 66 (unique da coluna Deu BD). Vamos agora ver quem deu mais bom dia na família:

Tio Waddill é o campeão com 993 BDs (88% dos dias!). Em segundo lugar vem meu primo Duvall com 912 BDs. Meu pai, vulgo Mr. Frederick, vem em quinto lugar. Vamos plotar em um gráfico estes resultados:

Para ficar mais fácil tirar informações referentes aos horários dos BDs, vamos adicionar uma coluna com o horário convertido para um número fracionário (por exemplo 6:30AM tornaria-se 6.5). Precisarei adicionar algumas condicionais para corretamente converter 12:30AM (meia noite e meia) para 0.5 e 12:30 PM (meio dia e meia) para 12.5:

Vamos testar a conversão de alguns horários:

Vamos agora adicionar uma nova coluna com o horário fracionado.

Vou também criar uma função para converter horários fracionados para normal. Será útil posteriormente:

Análise dos horários

Vamos para algumas análises utilizando os horários. Primeiramente os recordes de quem deu bom dia mais cedo:

Tio Daniel foi o campeão com dois BDs próximos à 1 da manhã. Nada mal, hein. Aposto que aproveitou o caminho para o banheiro. E podemos ver que os top 10 deram bom dias antes das 3 e meia da manhã. Vamos ver agora os recordes de quem deu BD mais tarde:

Primo Mestad deu bom dia as 9 e 35 da noite! E os top 10 deram bom dias após as 4 da tarde! Antes tarde do que nunca, não é mesmo pessoal? Vamos agora ver a média dos horários dos BDs:

E também a distribuição dos horários dos BDs:

Por fim o desvio padrão:

Portanto, 95% dos BDs estão em torno de 5 e 10:30 da manhã:

Madrugadores da família

Aqueles que em média deram bom dia mais cedo:

Tardões da família

Aqueles que em média deram bom dia mais tarde:

Meu irmão se saiu como o mais tarde, dando bom dias em média perto das 13 horas. No entanto, alguns deram bom dia poucas vezes e sendo assim não há significância estatística. Por exemplo, o primeiro colocado somente deu bom dia duas vezes:

Portanto, para não sujar a moral de meu irmão, e para ter uma significância estatística, vamos selecionar apenas aqueles que deram bom dia pelo menos 10 vezes:

Madrugadores da Família com Significância Estatística

Aqueles que em média deram bom dia mais cedo e pelo menos 10 vezes:

Tardões da Família com Significância Estatística

Aqueles que em média deram bom dia mais tarde e pelo menos 10 vezes:

Aqui vale salientar que para alguns familiares há uma diferença de fuso horário de uma hora portanto alguns não necessariamente são mais tardes.

Dias com mais bom dias

Os dias mais felizes. Em primeiro lugar foi um dia após o natal:

Exportando a base de dados

Por fim, vamos exportar esta base de dados para CSV. Assim você também poderá fazer análises usando o Excel ou Google Sheets:

Como o Google Drive está montado, o arquivo estará salvo na mesma pasta que o arquivo txt importado anteriormente.

Conclusão

Apenas para reforçar, quis demonstrar aqui como podemos facilmente fazer análises simples e práticas com o Python. Não tenho objetivos de desincentivar tal prática nem que seja usado para uma zoação negativa de quem os faz. Espero que este código seja útil para que outros cientistas de dados possam descolar algumas risadas nos grupos de seus familiares.

Código Fonte

--

--

Fernando Marcos Wittmann
Data Science BR

Head of Data Science @ Awari | Machine Learning Expert | E-Learning