Explora tu actividad en Google con R: Análisis y visualización de datos de tu historial de búsquedas

Descubre cómo y cuánto has usado el buscador más popular del mundo, usando una copia de tus datos personales

Dashboard para visualizar tu actividad de búquedas en Google. Link al final del articulo

¿Te imaginas un mundo sin el motor de búsquedas más popular del mundo? Apuesto, querido lector, a que si tienes entre 18 y 25 años de edad, tocar un diccionario o una enciclopedia no es parte de algo cotidiano para ti, como lo fue para muchos de nosotros en nuestra juventud.

Encontrar respuestas, poseer conocimiento, información (y desinformación), está a tan solo un clic de distancia hoy en día al alcance de cualquier persona. Es por eso que me parece interesante poder echar un vistazo en cómo han cambiado nuestros hábitos personales de consumo, sobre todo si conservas un historial con bastante antigüedad desde que le abriste las puertas a papá Google para saber todo acerca de ti.

¿Dónde puedo obtener una copia de mis datos?

Gracias a Google Takeout, herramienta que brinda Google para consultar tus datos almacenados en cualquiera de sus productos que hayas hecho uso, puedes consultar tu historial de búsquedas. Tienes que ingresar a la url https://takeout.google.com/settings/takeout para loguearte con tu cuenta personal.

Screenshot: Sitio web Google Takeout

Puedes solicitar una copia completa de tus datos, o por producto, o seleccionar sólo algunas características de un solo producto. Para nosotros, para fines de ejemplificar para este artículo, es suficiente con seleccionar “My Activity”.

Screenshot: Selección de My Activity en Google Takeout

También te recomiendo que te asegures de desmarcar el resto de opciones que contiene para sólo dejar la opción “Search”, para disminuir el peso y el tiempo de entrega del archivo que generará.

Screenshot: Selección de Search, en My Activity en Google Takeout

Una vez hecho esto, deberás seleccionar exportar una sola vez, y elegir el formato de entrega .zip.

Screenshot: Generar .zip en Google Takeout

Y listo, ahora sólo te quedará ser paciente, esperando a que se genere la copia del contenido que has seleccionado.

Screenshot: Confirmación de archivo que generará Google Takeout

Cuando tu archivo sea generado, recibirás un correo de notificación, invitándote a descargarlo, con una caducidad para poder hacerlo antes de la fecha señalada, por temas de seguridad.

Screenshot: Correo de notificación de descarga de copia de datos desde Google Takeout

Cuando descomprimas el .zip que has descargado, encontrarás un archivo con el nombre “MyActivity.html”.

Screenshot: Estructura de carpetas del .zip descomprimido

Este archivo HTML contiene los datos completos de tu historial de búsquedas en Google, desde que comenzaste a usar el motor de búsqueda por primera vez, hasta el momento en que generaste esta copia de datos con Google Takeout.

Screenshot: Archivo HTML del historial de búsquedas en Google

Lectura de los datos exportados

Ahora ya puedes proceder a trabajar la información obtenida en un nuevo script en R. Primero debes incluir todos los packages que usarás, y establecer la lectura de tu historial de búsqueda, contenido en el archivo “MyActivity.html” que se encuentra dentro de la carpeta “Search”, contenida en la carpeta “My Activity”.

# PACKAGES REQUERIDOS
library(wordcloud)
library(lubridate)
library(rvest)
library(tm)
library(tidyverse)
library(plotly)
# LECTURA DEL HISTORIAL DE BÚSQUEDAS
fileHTML <- "Takeout/My Activity/Search/MyActivity.html"
mySearchFile <- read_html(fileHTML, encoding = "UTF-8")

Extraerás los datos que te interesan y harás web scrapping del HTML, usandoel package “rvest”. De esa manera mediante expresiones regulares podrás extraer fecha y hora de tus búsquedas, el texto buscado y el tipo de búsqueda que realizaste en Google, para poder crear un data frame con toda esta información.

# SCRAPPING FECHA Y HORA DE BÚSQUEDAS
dateSearch <- mySearchFile %>%
html_nodes(xpath = '//div[@class="mdl-grid"]/div/div') %>%
str_extract(pattern = "(?<=<br>)(.*)(?<=PM|AM)") %>%
mdy_hms()
dateSearch[1:5]
# SCRAPING TEXTO BUSCADO
textSearch <- mySearchFile %>%
html_nodes(xpath = '//div[@class="mdl-grid"]/div/div') %>%
str_extract(pattern = '(?<=<a)(.*)(?=</a>)') %>%
str_extract(pattern = '(?<=\">)(.*)')
textSearch[1:5]
# SCRAPING TIPO DE BÚSQUEDA
searchType <- mySearchFile %>%
html_nodes(xpath = '//div[@class="mdl-grid"]/div/div') %>%
str_extract(pattern = "(?<=mdl-typography--body-1\">)(.*)(?=<a)") %>%
str_extract(pattern = "(\\w+)(?=\\s)")
searchType[1:5]
# CREAR DATA FRAME USANDO INFORMACIÓN EXTRAIDA
searchedData <- tibble(timestamp = dateSearch,
date = as_date(dateSearch),
year = year(dateSearch),
month = month(dateSearch, label = TRUE),
day = weekdays(dateSearch),
hour = hour(dateSearch),
type = searchType,
search = textSearch)
searchedData$day <- factor(searchedData$day, levels = c("Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday","Saturday"))searchedData <- na.omit(searchedData)
head(searchedData)

Como resultado obtendrás un nuevo data frame con 8 variables.

Screenshot: Previsualización en consola de Data Frame creado a partir del HTML

¿Cuánto ha cambiado la frecuencia con que “Googleas” a través del tiempo?

Esta podría ser una primer pregunta que puedes responder. Con la información obtenida puedes visualizar el número de búsquedas realizadas en relación con los años de antigüedad de tu historial.

# PLOT DE BÚSQUEDAS POR AÑO
searchByYear <- ggplot(searchedData, aes(year, fill=..count..)) +
scale_fill_gradient(low = "yellow", high = "red")+
geom_bar(width=0.7)+
labs(x= "Año", y= "Búsquedas") +
ggtitle("Cuánto ha cambiado tu frecuencia de búsquedas en Google con el tiempo", "Actividad de búsquedas por año")
searchByYear

En mi caso, por ejemplo, mi historial va desde 2007 hasta el día de hoy, en 2020. Es decir, 13 años de búsquedas se ven representados en volumen del siguiente modo. Hay un incremento muy notable, principalmente en comparación con años anteriores a 2014, en que seguía usando mayormente el buscador de Yahoo, además me parece que hay que tomar a consideración que el acceso a conexiones de internet cada vez más y más veloces también facilitó la posibilidad de realizar cada vez más y más consultas a Google.

Análisis y visualización de datos de tu historial de búsquedas en Google— Plot de cantidad de búsquedas realizadas por año

¿Cuánto ha cambiado la frecuencia con que “Googleas” a través del tiempo? (Visualización a detalle por meses)

Puedes profundizar un poco más en los resultados anteriormente obtenidos, ahora visualizando qué tanto ha cambiado la frecuencia con qué has realizado búsquedas en Google, detallado por meses a lo largo de los años de la antigüedad que tenga tu historial.

# PLOT DE BÚSQUEDAS POR MES/AÑO
searchByMonth <- searchedData[(searchedData$year > 2007 & searchedData$year< 2021), ]
ggplot(searchByMonth, aes(year, fill=..count..)) +
scale_fill_gradient(low = "yellow", high = "red")+
geom_bar(aes(x = month, group = year)) +
theme(axis.text.x = element_text(angle=90)) +
facet_grid(.~year, scales="free") +
labs(x= "Year / Month", y= "Count") +
ggtitle("Cuánto ha cambiado tu frecuencia de búsquedas en Google con el tiempo", "Actividad de búsquedas por año/mes en detalle")

Estoy casi seguro, amigo lector, que al igual que yo, si observas con detenmiento, mucho tuvo que ver el aumento de cantidad de búsquedas realizadas en relación con los peores meses en que la pandemia en tu país te vio obligado a permanecer más en casa, y por ende con tus dispositivos como teléfonos, tablets y computadoras con acceso a internet. Por ejemplo en mi caso, no creo que sea coincidencia que los registros máximos graficados en 2020 coinciden con el semáforo rojo (cierre de todo establecimiento no escencial y trabajo remoto desde casa) establecido en el país en que vivo (México).

Análisis y visualización de datos de tu historial de búsquedas en Google — Plot de cantidad de búsquedas realizadas por año/mes

¿En qué horario del día sueles “Googlear” más?

Puedes obtener esta información también, ya que cuentas con registro de la hora exacta en que realizaste búsquedas con el popular motor de Google.

# PLOT DE BÚSQUEDAS POR HORA
seearchByHour <- ggplot(searchedData, aes(hour, fill=..count..)) +
scale_fill_gradient(low = "yellow", high = "red") +
geom_bar() +
labs(x= "Hora", y= "Count") +
ggtitle("¿A qué hora del día tienes mayor frecuencia de búsquedas en Google?", "Actividad por hora del día en detalle")
seearchByHour

Obtendrás como resultado el siguiente plot, donde por ejemplo en mi caso, es notable que mayormente soy un “googleador” diurno.

Análisis y visualización de datos de tu historial de búsquedas en Google — Plot de horario en que mayormente realizas búsquedas

¿Qué día de la semana sueles “Googlear” más?

Siguiendo el ejemplo anterior, también puedes visualizar cuáles son los días de la semana que registran una mayor cantidad de búsquedas realizadas por ti.

# PLOT DE BÚSQUEDAS POR DÍA DE LA SEMANA
seearchByWeekD <- ggplot(searchedData, aes(day, fill=..count..)) +
scale_fill_gradient(low = "yellow", high = "red") +
geom_bar() +
labs(x= "Día de la semana", y= "Búsquedas") +
ggtitle("¿Qué día de la semana tienes mayor frecuencia de búsquedas en Google?", "Actividad por día la semana en detalle")

Es de esperarse, que si al igual que yo ocupas tus fines de semana para alejarte un poco de permanecer en conexión, para ir a ver a tu pareja, por ejemplo, será notablemente visible la disminución del volumen de búsquedas.

Análisis y visualización de datos de tu historial de búsquedas en Google — Plot de días de la semana en que mayormente realizas búsquedas

Visualización de datos de la relación entre día de la semana y el horario en que sueles “Googlear” más

Retomando los dos últimos plots obtenidos, donde puedes ver el horario y el día de la semana en que registras mayor cantidad de búsquedas en Google, puedes crear un nuevo plot para ver en detalle la relación que guardan ambos.

# PLOT RELACIÓN ENTRE DÍA DE LA SEMANA Y HORARIO DE BÚSQUEDAS
searchWdayTime <- ggplot(searchedData) +
scale_fill_gradient(low = "yellow", high = "red")+
geom_bar(aes(x = hour, group = day, fill=..count..) ) +
labs(x= "Hora del día / Día de la semana", y= "Búsquedas") +
ggtitle("Relación entre el día y la hora en que tienes mayor frecuencia de búsquedas en Google", "Actividad de búsquedas por Día de la semana / Hora, en detalle") +
facet_grid(.~day, scales = "free")
searchWdayTime

De este modo, obtendrás un plot como el siguiente. Igualmente podrías cruzar datos con otras variables que ya usaste como meses y años.

Análisis y visualización de datos de tu historial de búsquedas en Google — Plot de relación entre días de la semana y horario, en que mayormente realizas búsquedas

¿Cuáles han sido los términos que más has “googleado” los últimos dos años?

Esta es otra interesante pregunta a la que puedes dar respuesta, visualizando los datos usando el package “wordcloud”. Primero deberás extraer los términos para posteriormente limpiarlos y así poder crear un Text Corpus. Además deberás remover palabras que no brinden una información relevante como artículos y pronombres.

## LIMPIAR Y EXTRAER TEXTO PARA CREAR TEXT CORPUS
lastTwoYears <- searchedData[(searchedData$year > 2017 & searchedData$year< 2021), ]
search <- tolower(lastTwoYears$search)
search <- gsub('(http|https)\\S+\\s*|(#|@)\\S+\\s*|\\n|\\"', " ", search)
search <- gsub("(.*.)\\.com(.*.)\\S+\\s|[^[:alnum:]]", " ", search)
search <- trimws(search)
textCorpus <- Corpus(VectorSource(search))
textCorpus <- tm_map(textCorpus, content_transformer(removePunctuation))
textCorpus <- tm_map(textCorpus, content_transformer(removeNumbers))
stopwords <- c(stopwords("english"), "que", "com", "cómo", "como", "para", "con", "qué", "las", "los", "del", "can")
textCorpus <- tm_map(textCorpus, removeWords, stopwords)
searchTDM <- TermDocumentMatrix(textCorpus)
searchMatrix <- as.matrix(searchTDM)

Finalmente puedes crear un nuevo Data Frame para poder visualizar tu nube de términos más buscados en Google de estos últimos dos años.

# CREAR NUEVO DATA FRAME CON TÉRMINOS Y WORDCLOUD
arrange <- sort(rowSums(searchMatrix), decreasing = TRUE)
twNames <- names(arrange)
dataCloud <- data.frame(word = twNames, freq = arrange)
wordcloud(dataCloud$word, dataCloud$freq, min.freq = 40, scale = c(2 , 0.5), max.words = 100, colors=brewer.pal(9, "Paired"))

Deberías obtener entonces como resultado tu wordcloud con los términos que por lo menos buscaste 40 veces o más. Esta es mi nube de términos más buscados de 2018 a 2020. No me juzguen por buscar tanto torrent por favor jeje.

Análisis y visualización de datos de tu historial de búsquedas en Google — Plot de wordcloud de términos más buscados en Google los últimos dos años

Como extra, puedes repetir el ejercicio para averiguar cuáles fueron los términos más buscados durante los primeros dos años en que permitiste que Google entrara a tu vida para saber todo sobre ti. Sólo hace falta que modifiques el rango de años abarcados en la variable lastTwoYears. En mi caso por ejemplo, de 2008 a 2010 (años de mucho Flash y foros dónde encontrar respuestas sobre desarrollo web), esta es mi wordcloud. Evidentemente el volumen de búsquedas fue mucho menor en comparación con la anterior wordcloud generada.

Análisis y visualización de datos de tu historial de búsquedas en Google — Plot de wordcloud de términos más buscados en Google los primeros dos años del historial

Muchas gracias por tu amable lectura. Del mismo modo que con la mayoría de mis artículos, te comparto un poco más estéticos los plots generados con plotly en un flexdashboard que armé: https://rpubs.com/cosmoduende/google-search-history-analysis

Aquí puedes encontrar el código completo: https://github.com/cosmoduende/r-google-search-history-analysis

¡Te agradezco haber llegado hasta el final, te deseo que tengas muy felices análisis, que puedas poner en práctica todo, y te sorprendas y diviertas tanto como yo con los resultados!

Otros artículos que he escrito

Si te ha gustado este artículo, te agradeceré mucho tus claps. Además te invito a visitar también otros artículos que he escrito, que podrían ser de tu interés:

Aprendiz constante, amante de la tecnología. #G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. Organizador de #KotlinCDMX.