Usando API Pytrends para as trends do Twitter – Encontrando tópicos de crescente popularidade e mais discutidos

Por: Letícia Pires, Cientista de Dados Jr. na Sauter

O Google Trends é uma ferramenta de propriedade do Google que analisa a popularidade dos termos em vários idiomas e regiões. Por exemplo, no site você pode encontrar palavras chaves das tendências, explorar tópicos relacionados, analisar popularidade de termos e mais. É uma ferramenta muito útil se você quer fazer previsões ou entender melhor o comportamento humano. O livro “Todo mundo mente”, cita muito sobre o Google Trends, mostrando que o que as pessoas falam nem sempre é o que elas buscam no Google. Inclusive, recomendo muito essa leitura!

Dessa forma, existe a biblioteca Pytrends python que pode ser utilizada para encontrar e explorar melhor as tendências. Pytrends, segundo a documentação Pytrends PyPI, é uma API não oficial do Google Trends que pode ser usada para extrair informações úteis usando uma interface simples.

Objetivos

Sendo assim, este artigo tem como objetivo mostrar o uso da ferramenta para tópicos de crescente popularidade e principais resultados da pesquisa. No entanto, ao invés de fazer busca por termos gerais, foi utilizado um dataset com trends extraídas do Twitter.

Especificações técnicas

O código foi desenvolvido em Python, com auxílio da API do Google e como IDE utilizou-se o Google Colab.

Instalação

A primeira etapa é instalar a biblioteca pytrends através do código abaixo. A documentação você encontra no link https://pypi.org/project/pytrends/.

pip install pytrend

Implementação

Depois de instalar a biblioteca, é necessário fazer uma conexão com o Google, utilizando os seguintes comandos:

#Importando o método TrendReq do módulo de requisição do Pytrends 
from pytrends.request import TrendReq

#Execute o método TrendReq passando os parâmetros de linguagem e fuso horário
pytrends = TrendReq(hl='pt-BR', tz=360)

Em seguida é necessário construir uma carga útil. Essa carga irá conter informações de solicitação que ajudam o serviço a entender quais dados se deseja obter. Abaixo, um exemplo de como construir uma carga útil:

# Contruindo lista de palavras-chave 
kw_list = ["covid", "bolsonaro", "bbb"] 

# Consturindo a carga útil 
pytrends.build_payload (kw_list, timeframe = '2015-01-01 2021-01-01', geo = 'BR' )

No exemplo acima, o kw_list representa uma lista de palavras para obter os dados, geo é a localização geográfica e o timeframe é o prazo de interesse.

Aplicando à base de dados do Twitter

Como mencionado no início, utilizarei trends extraídas do Twitter para gerar os tópicos de popularidade crescente e principais resultados da pesquisa. Por isso, inicialmente realizei algumas importações.

import pandas as pd
from pytrends.request import TrendReq
pytrends = TrendReq(hl='pt-BR', tz=360)

#Para limpeza de texto
import unicodedata
import re
#Coletando os dados
path = 'https://raw.githubusercontent.com/letpires/trends_twitter_pytrends/main/trends_twitter.csv%20-%20P%C3%A1gina1.csv'
trends = pd.read_csv(path,encoding="ISO-8859-1", decimal=",", na_values="-", engine="python")
trends.head()

É possível perceber que algumas trends vieram com caracteres especiais, por isso, optei por removê-los, utilizando a função abaixo, extraída do StackOverflow:

"""
A remoção de acentos foi baseada em uma resposta no Stack Overflow.
http://stackoverflow.com/a/517974/3464573
"""

def removerAcentosECaracteresEspeciais(palavra):

    # Unicode normalize transforma um caracter em seu equivalente em latin.
    nfkd = unicodedata.normalize('NFKD', palavra)
    palavraSemAcento = u"".join([c for c in nfkd if not unicodedata.combining(c)])

    # Usa expressão regular para retornar a palavra apenas com números, letras e espaço
    return re.sub('[^a-zA-Z \\\]', '', palavraSemAcento)

Aplicando a função acima no dataframe, podemos obter o seguinte resultado:

#Aplicando a função para remover caracteres especiais
trends['trend'] = trends.apply(lambda row: removerAcentosECaracteresEspeciais(row['trend']), axis=1)
trends.head()

Em seguida, fiz a transformação dessas trends em lista, para poder passar pela API do Google:

# Convertendo para lista
df_list = trends["trend"].tolist()
df_list

Em seguida, apliquei o parâmetro related_topics para extrair as informações. Esse parâmetro retorna um dicionário contendo uma palavra chave e duas subchaves (‘rising‘ e ‘top‘). Para extrair tópicos com popularidade crescente, temos o resultado do rising e para principais pesquisas tem-se os resultados do top .

A função abaixo extrai em forma de dataframe somente os principais tópicos de cada pesquisa:

def related_topics_top(trend):
        #Colocando carga útil
        pytrends.build_payload(kw_list=[trend], timeframe='now 1-d', geo='BR', gprop='')
        related = pytrends.related_topics()
        try:
	    #Transformando as informações me dataframe
            top = pd.DataFrame.from_dict(related[trend]['top'])
            
            return top
        except Exception as e:
            top = None
            raise e

Como temos uma lista de palavras do Twitter, fiz uma iteração sobre cada um, através do código abaixo:

#Aplicando a função related_topics_top para cada item da lista
df_final = pd.DataFrame()

for item in df_list:
    print('----ITEM:', item)
    related = related_topics_top(item)

    #Inserindo o 'trend' nos dataframes
    related.insert(0, 'trend', item, allow_duplicates=True)
    df_final = df_final.append(related.head()).reset_index(drop=True)

print('--- DF Final ---')
df_final

O resultado obtido foi o seguinte:

Esses resultados não parecem tão interessantes visto que a palavra Xama está em 2 das linhas de topic title. Abaixo, a função para extrair somente os tópicos de popularidade crescente.

def related_topics_rising(trend):
	      
	#Colocando carga útil
        pytrends.build_payload(kw_list=[trend], timeframe='now 1-d', geo='BR', gprop='')
        related_rising = pytrends.related_topics()
        try:
	    #Transformando as informações me dataframe
            rising = pd.DataFrame.from_dict(related_rising[trend]['rising'])
            return rising
        except Exception as e:
            rising = None
            raise e
#Aplicando a função related_topics_rising para cada item da lista
df_final_rising = pd.DataFrame()

for item in df_list:
    print('----ITEM:', item)
    related2 = related_topics_rising(item)
    #Inserindo o 'trend' nos dataframes
    related2.insert(0, 'trend', item, allow_duplicates=True)
    df_final_rising = df_final_rising.append(related2.head()).reset_index(drop=True)

print('--- DF Final ---')
df_final_rising

O resultado obtido para tópicos de popularidade crescente foram:

No conjunto de resultados “crescentes”, podemos ver que as pesquisas instantâneas de seleção inglesa e Manchester estão entre os principais tópicos crescentes relacionados ao Harry Kane.

Conclusão:

Um ponto de atenção é com relação ao uso excessivo da API Pytrends, porque o Google pode limitar seu acesso. No entanto, esse limite da taxa de soliticação não é conhecido, segundo a página Pytrendd PyPI. Quando realizei esse trabalho, tive um problema similar de requisições. Segundo o site The Data Science Publication um usuário relatou que 1400 solicitações sequenciais em um período de 4 horas o levou ao imite.

Nesse link você encontra outras pessoas que relataram o mesmo problema.

Código completo no meu Github

Curtiu? Então nos acompanhe nas redes sociais:

Instagram LinkedIn | Facebook | Youtube

REFERÊNCIAS:

https://medium.com/the-data-science-publication/how-to-use-the-pytrends-api-to-get-google-trends-data-4378acbaaa8a

https://pypi.org/project/pytrends/

Leia também

Como usar o Google Workspace em sua empresa

Como usar o Google Workspace em sua empresa

O Google Workspace é uma ferramenta que as empresas estão adotando cada vez mais, pelas inúmeras vantagens que esse serviço oferece às organizações, principalmente o da conexão e da acessibilidade de todos os colaboradores. Ainda tem dúvidas de como é possível...

read more
Data Cloud – Entenda o armazenamento em nuvem para empresas

Data Cloud – Entenda o armazenamento em nuvem para empresas

O Data Cloud é um método que está sendo cada vez mais implementado pelas empresas, que estão entendendo como essa prática de armazenamento pode ser vantajosa, em diversos aspectos. Ainda tem dúvidas sobre como funciona o armazenamento em nuvem? Veja aqui mais...

read more
Entenda mais sobre seus dados no Google

Entenda mais sobre seus dados no Google

Você já parou para pensar como seus dados são administrados e armazenados pelo Google? Esse é um fenômeno que acontece a cada navegação sua, em qualquer dispositivo e em qualquer circunstância. Por conta disso, deveríamos nos preocupar mais com os dados do Google...

read more

Vamos nos conectar

Nos envie um e-mail e nós retornaremos nas próximas 24 horas.

5 + 8 =