Tools

MICRODATI CON GOOGLE TRENDS : Come ti analizzo il trend di 100 Keywords in una sola volta con Python e PyTrends

Luca Troso
MICRODATI CON GOOGLE TRENDS : Come ti analizzo il trend di 100 Keywords in una sola volta con Python e PyTrends

MICRODATI CON GOOGLE TRENDS : Come ti analizzo il trend di 100 Keywords in una sola volta con Python e PyTrends

Benvenuto in questa mini-guida a PyTrends!

Ho diviso questo articolo in tre parti:

  • Parte uno - Meno chiacchiere e più fatti!
    Qui vi presento Trosotrend, un tool didattico per far processare direttamente la richiesta di analisi in Python.
  • Parte due - Più chiacchiere e meno fatti
    Analisi del codice base di Pytrends
    Troverete anche un link al codice presente in Google Colab.
  • Parte tre - Il Codice di base Trosotrend ed approfondimenti del codice
    In questa sezione analizziamo, nel dettaglio, il codice del programma in Python realizzato.
    Troverete anche un link al codice presente in Google Colab

PARTE UNO: Meno chiacchiere e più fatti!

Problema: Google Trends mi permette di confrontare solo 5 parole chiave alla volta e, anche ripetendo l’operazione più volte, non avrei i valori relazionati tra loro in quanto Google mi restituisce ogni volta il confronto basato su sole 5 keywords (ed in valore relativo, non assoluto).

Soluzione: Utilizzare Python e le Api di PyTrends per confrontare anche 100 keywords mantenendo i valori correttamente relazionati tra loro.

Tool (Trosotrend): prima i fatti! Ho creato un piccolo tool online per dare a tutti la possibilità di testare la funzionalità anche se non si hanno le conoscenze di base di Python. Lo so, il nome del tool è osceno.

In questo caso ho utilizzato alcuni strumenti Low-code e No-Code quali Jotform, Pipedream e chiaramente Python per la parte di programmazione.

Link al tool: https://www.lucatroso.it/trosotrend

Ti annoia anche inserire due keywords nel tool di test? Allora te la faccio ancora più semplice con questo esempio:

Keywords da analizzare: pizza margherita,pizza diavola,pizza salsiccia e friarielli,pizza fritta,pizza marinara,pizza salame e provola,calzone al forno,wurstel e patate

File generato dal codice: clicca e scarica

PARTE DUE: Più chiacchiere e meno fatti!

Cos’è Pytrend?

Pytrend è una API non ufficiale per Google Trends e ci permette di velocizzare drasticamente il lavoro di comparazione che viene eseguito solitamente attraverso l’interfaccia web di Google Trends. In pratica, risparmiamo tempo utilizzando questa modalità di lavoro.

Pytrend si può utilizzare con il linguaggio di programmazione Python. In questo caso io utilizzo la versione 3.9.

Quali dati possiamo ottenere con Pytrend? Eccone alcuni:

  • Interest Over Time (trend nel tempo)
  • Historical Hourly Interest
  • Interest by Region (trend per regione)
  • Related Topics
  • Related Queries
  • Trending Searches
  • Top Charts
  • Keyword Suggestions

Utilizzo spesso "Google Trends", insieme ad altri database, per comprendere la "domanda" digitale di un dato bene / servizio o il trend di crescita di una categoria particolare.

Purtroppo, la versione web, ha un grande limite: può (al momento) confrontare solo 5 parole chiave. Inoltre, effettuare questo lavoro manualmente porta via, spesso, molto tempo.

Nota bene: il limite del numero di keywords si applica anche alle api di Pytrend (che fanno ovviamente una richiesta alle api di Google) ma con qualche workaround, è possibile confrontare anche molte più keywords.

Come possiamo quindi confrontare più di 5 prodotti / servizi / keywords? 

Uno dei metodi è sicuramente quello di utilizzare Python e le API (non ufficiali) di PyTrends.

Attenzione: se vuoi mettere in pratica quanto scritto da ora in poi devi poter accedere ad una idle (Python). Se sei a digiuno di Python, ti consiglio prima di comprendere le basi di questo linguaggio.

Codice di base Pytrend (fino a 5 keywords)

Per iniziare, è necessario installare la liberaria di Pytrend con la seguente riga di codice dalla vostra idle preferita (o anche su Google Colab):


!pip install pytrends

Partiamo quindi dall’analisi del codice di base:


#importiamo le librerie per la visualizzazione dei dati e per l'analisi degli stessi
import pandas as pd                        
from pytrends.request import TrendReq
pytrend = TrendReq()

#inseriamo la lista di parole chiave
kw_list=['Scrum', 'Project Management', 'Kanban','Waterfall']

#controllo i dati dell'ultimo mese a partire da oggi e creo il payload
pytrend.build_payload(kw_list, timeframe='today 1-m')

dati = pytrend.interest_by_region()
#controllo le righe esistenti dove il risultato è superiore allo 0 per tutte le keywords
dati = dati[(dati != 0).all(1)]

#filtro i valori nulli
dati.dropna(how='all',axis=0, inplace=True)

#visualizzo sul terminale i risultati
print (dati)

In questo caso abbiamo analizzato, attraverso la funzione “Interest by Region (trend per regione)”, il trend di alcune keywords in ogni paese del mondo negli ultimi 30 giorni.

Dopo aver fornito la lista delle keywords (kw_List), queste informazioni sono state passate tramite la costruzione del payload:


pytrend.build_payload(kw_list, timeframe='today 1-m')

dove abbiamo indicato la lista delle keywords (kw_list) ed il range temporale da analizzare (timeframe=’today 1-m’).

Google Colab: per comodità ho creato anche uno spazio Google Colab dove potete testare direttamente il funzionamento di questo codice e copiarlo per eventuali modifiche.

Link Google Colab

PARTE TRE: Il Codice di base Trosotrend ed approfondimenti del codice (oltre le 5 keywords)

Per il servizio “Trosotrend” il codice risulta leggermente più articolato in quanto lo scopo è inviare a mezzo email un file CSV con il trend delle keywords richieste ed evitare che le API di Google blocchino la nostra analisi dopo 5 keywords.

Di conseguenza il codice dovrà:

  1. Recuperare le informazioni passate tramite il form di dati
  2. Creare un file CSV
  3. Elaborare i dati dei trend delle keywords
  4. Scrivere i dati sul file CSV
  5. Salvare il file CSV come file temporaneo
  6. Inviare il file a mezzo mail

Problemi da tenere in considerazione:

  1. Evitare di passare troppe richieste contemporaneamente al sistema Google (che potrebbe bannarci) così da poter analizzare più di 5 keywords
  2. Recuperare le Keywords dinamicamente da un software esterno

Vediamo insieme il codice completo:


import pandas as pd 
from pytrends.request import TrendReq
from pipedream.script_helpers import (s
teps, export)
import csv
import os
import re
import time

#recupero i dati dal database e configuro pytrends
keywords = steps["trigger"]["event"]["formData"]["q8_keywords"]
lista = keywords.split(",")
#print (lista)
pytrends = TrendReq(backoff_factor=0.5)

#configuro il tempo di attesa ed i tentativi
t_sleep = 2
t_sleep2 = 60
tentativi = 0

#creo il dataset
dataset = []

#inizio il ciclo di analisi per ogni keywords
for x in range(0,len(lista)):
     if tentativi == 30:
          count = 0
          time.sleep(t_sleep2)
     keywords = [lista[x]]
     pytrends.build_payload(
     kw_list=keywords,
     cat=0,
     timeframe=steps["trigger"]["event"]["formData"]["q19_scriviUna"],
          geo='IT')
     data = pytrends.interest_over_time()
     if not data.empty:
          data = data.drop(labels=['isPartial'],axis='columns')
          dataset.append(data)
          #print (data)
          tentativi +=1
          time.sleep(t_sleep)
     
#creo l'elenco dei risultati
result = pd.concat(dataset, axis=1)
#creo un file CSV e scrivo i risultati
with open('/tmp/risultati.csv', 'w') as f:
     f.write(str(result.to_csv('/tmp/risultati.csv')))
     

Vediamo il codice nel dettaglio:

1 - Nella prima parte del codice abbiamo importato tutte le librerie necessarie al corretto funzionamento del sistema.

import pandas as pd 
from pytrends.request import TrendReq
from pipedream.script_helpers import (steps, export)
import csv
import os
import re
import time

Qui abbiamo importato le librerie:

Pandas: che ci permette di lavorare con il dataframe pandas relativo alla visualizzazione in tabella dei dati.

Pytrends: è la libreria che ci permette di collegarci alle API di Google

Pipedream: è la funzione che mi permette di utilizzare la funzione della piattaforma pipedream per la gestione delle variabili (ovvero le keywords che ho inserito tramite il form)

Csv: libreria necessaria per la gestione dei file CSV
Os: necessario per la scrittura / lettura di file

Re: necessario la gestione delle espressioni regolari

Time: libreria per la gestione del “tempo”

2 -  Recupero dei dati dal database e configurazione generale

#recupero i dati dal database e configuro pytrends
keywords = steps["trigger"]["event"]["formData"]["q8_keywords"]
lista = keywords.split(",")
#print (lista)
pytrends = TrendReq(backoff_factor=0.5)

In questa fase abbiamo recuperato le keywords fornite tramite modulo (2 rigo) e trasformato queste informazioni in un unica “lista” separata da virgola [lista = keywords.split(",")]

3 -  Imposto il “Timing” di lavoro ed il dataset

#configuro il tempo di attesa ed i tentativi
t_sleep = 2
t_sleep2 = 60
tentativi = 0

#creo il dataset
dataset = []

Qui ho inserito due timer, uno da 2 secondi ed uno da 60 secondi. Questi timer mi serviranno per non sovraccaricare di richieste le API di Google (ed evitare di essere bannato). Creo inoltre il dataset dove saranno “conservati” temporaneamente le ricerche.

4 - Inizio le query

#inizio il ciclo di analisi per ogni keywords
for x in range(0,len(lista)):
     if tentativi == 30:
          count = 0
          time.sleep(t_sleep2)
     keywords = [lista[x]]
     pytrends.build_payload(
     kw_list=keywords,
     cat=0,
     timeframe=steps["trigger"]["event"]["formData"]["q19_scriviUna"],
          geo='IT')
     data = pytrends.interest_over_time()
     if not data.empty:
          data = data.drop(labels=['isPartial'],axis='columns')
          dataset.append(data)
          #print (data)
          tentativi +=1
          time.sleep(t_sleep)

Questa è la parte del codice più “interessante”. Inizio il ciclo di “query” per ogni parola chiave precedentemente passata tramite il form e mi fermo per 60 secondi ogni 30 keywords analizzate.

Il numero 30 è stato scelto sulla base di diversi “stress-test”.

Oltre le impostazioni di sicurezza qui vengono effettuate anche le seguenti operazioni:

  • Timeframe: Viene passato il range di date da analizzare
  • data: viene specificato il tipo di informazione che vogliamo estrarre, in questo caso, “interest_over_time” che analizza il trend nel tempo di una singola parola chiave.
  • Data.empty: qui evitiamo di “scrivere” colonne vuote. Se non vengono trovati risultati, la keywords saranno saltate.
  • Data (generale): qui catturiamo le informazioni e le scriviamo nel file temporaneo creato precedentemente.

5 - Scrivo i risultati

#creo l'elenco dei risultati
result = pd.concat(dataset, axis=1)
#creo un file CSV e scrivo i risultati
with open('/tmp/risultati.csv', 'w') as f:
     f.write(str(result.to_csv('/tmp/risultati.csv')))

In questo caso salvo tutti i dati salvati (result), creo un file CSV (with open) e scrivo i risultati (f.write).

Successivamente, un secondo codice in Python invia una email con, in allegato, il file CSV prodotto.

Il codice che abbiamo visto è la base di partenza per costruire software più articolati.

Google Colab: anche per questo codice ho creato del codice su Colab così da darvi la possibilità di copiarlo e modificarlo a vostro piacimento.

Link Google Colab Trosotrend

Cosa ne pensi della libreria PyTrends? Pensi possa essere utile alla tua attività?
Ps: Trosotrend è un progetto di studio e test e, se vuoi, puoi contribuire con le tue idee o con un aiuto concreto nel codice.
Basta chiedere!

Articoli che potrebbero interessarti...

May 15, 2023

Newsletter: Agile Cafè #1 - FOCUS & dintorni

Tools

Nel primo numero, esploreremo la potenza del "#Focus" attraverso le parole di #SteveJobs e discuteremo su come un focus strategico possa effettivamente trasformare le performance del vostro team o della vostra azienda. 🎯

June 22, 2022

MICRODATI CON GOOGLE TRENDS : Come ti analizzo il trend di 100 Keywords in una sola volta con Python e PyTrends

Tools

Analizziamo più di 5 Keywords con Google Trends e Python. Pytrend è una API non ufficiale per Google Trends. In questo articolo analizzeremo concretamente il suo utilizzo.