Usamos cookies. Tienes opciones. Las cookies nos ayudan a mantener el sitio funcionando sin problemas e informar sobre nuestra publicidad, pero si deseas realizar ajustes, puedes visitar nuestro Aviso de cookies para más información.
Utilizamos cookies propias y de terceros para analizar su actividad en el sitio web con el objetivo de enviarle publicidad personalizada y mejorar el funcionamiento de la web. Puedes aceptar todas las cookies pulsando el botón “ACEPTAR” o seleccionarlas en función de su funcionalidad pulsando el botón “AJUSTES”.
×

Cómo llevar los datos de Twitter a la nube

Trabajar desde la nube, como Steve Jobs

En este post voy a mostrar cómo trabajar en la nube con Twitter, Google Cloud Platform, Python y Jupyter, de forma muy simple y con apenas unos pocos recursos gratuitos. A pesar de la sencillez del ejemplo que voy a generar, mi objetivo es utilizar tecnologías diferentes y variadas para mostrar el potencial que tiene el trabajo en la nube.

 

Esquema

Sin más, mi objetivo es extraer una serie de datos de Twitter para poder jugar con ellos, almacenarlos y mostrarlos gráficamente. Todo ello, utilizando recursos sencillos en la nube. Seguiré el siguiente esquema:

 

schema

 

APIS

Twitter

Con una cuenta de Twitter, tendremos que acceder para generar los accesos (claves, tokens) y dar acceso a nuestra aplicación desde la que extraer el dato de Twitter:

 

api twitter

 

BigQuery

Igual que en Twitter, necesitamos obtener las claves para poder acceder a nuestro Data Warehouse (en este caso, he optado por la solución de Google, ya que es posible tener una cuenta en GCP (Google Cloud Platform) gratuita de prueba.

 

schema big query

 

De esta forma, puedo hacer uso de BigQuery, donde almacenaré mis datos creando una base de datos que usaré más tarde para representar gráficamente la información.

Lo primero que hice fue crear un proyecto y activar la API de BigQuery:

 

IAM

 

Código

Para trabajar he optado por un lenguaje de programación como Python, por la comodidad y sencillez de hallar librerías en la red. Para trabajar con Python, recomiendo hacerlo desde Jupyter o desde Spyder, ambos accesibles fácilmente desde el navegador Anaconda. Personalmente, me encuentro más cómodo desde Spyder, ya que tiene un editor que te muestra las variables, arraysdataframes, etc., además de una consola que te muestra el dato de salida de manera fácilmente interpretable.

A pesar de ello, he encontrado problemas a la hora de conectar varios métodos de las librerías, debido a las diferentes versiones de Python, por lo que, finalmente recomiendo usar Jupyter ya que no ha presentado conflicto alguno.

El código que he generado es el siguiente:

  1. import pandas as pd
  2. import tweepy
  3. from tweepy import OAuthHandler, Stream, Cursor, API
  4.  
  5. # set secrets
  6. consumer_key = "XXX"
  7. consumer_secret = "XXX"
  8. access_token = "XXX"
  9. access_token_secret = "XXX"
  10. project_id = 'training-bigquery'
  11.  
  12. auth = OAuthHandler(consumer_key, consumer_secret)
  13. auth.set_access_token(access_token, access_token_secret)
  14. api = tweepy.API(auth)
  15.  
  16. search_text = ("divisapost")
  17. search_result = api.search(search_text, count=200)
  18.  
  19. outtweets = [[tweet.text,
  20. str(tweet.created_at),
  21. tweet.user.screen_name,
  22. tweet.favorite_count,
  23. tweet.retweet_count,
  24. tweet.user.followers_count/(tweet.user.friends_count+1),
  25. tweet.favorite_count + tweet.retweet_count] for tweet in search_result]
  26. atts=['tweet','time_stamp','user','favorites','retweets','influence', 'scope']
  27. divisapost=pd.DataFrame(data=outtweets, columns=atts)
  28. divisapost
  29. pd.io.gbq.to_gbq(divisapost, 'twitter.divisapost', project_id, if_exists='replace')

Donde utilizo las siguientes librerías:

  • tweepy: para conectar con Twitter y extraer los datos.
  • pandas: para crear dataframes y conectar con BigQuery.

En los enlaces se puede encontrar la documentación para instalarlas, así como los recursos que ofrecen y cómo emplearlos.

Con esta última, utilizo los datos extraídos de Twitter para insertarlos en un dataframe (podríamos decir que es como una matriz, pero que admite diferentes formatos además de los numéricos), creando el esquema que luego detectará BigQuery para crear la base de datos.

Haré una búsqueda del tema “divisapost” y así extraer los tweets que lo contienen, además del timeline del usuario “@divisadero”. De estos tweets, me interesa:

  • Texto del tweet
  • TimeStamp del tweet
  • Nombre de usuario del tweet
  • Número de followers del usuario
  • Número de amigos del usuario
  • Número de retweets del tweet
  • Número de favorites del tweet

Además, crearemos un par de métricas imaginarias para tener una idea del alcance de cada tweet así como de la influencia de cada usuario (me arriesgo a críticas de los más puristas en el campo “social text mining”):

  • Influencia: ratio followers/amigos
  • Alcance: retweets + favorites

BigQuery

El esquema que generamos tiene la siguiente forma:

 

schema 2

 

BigQuery identifica el tipo de campo de forma automática, creando el esquema que le indicamos anteriormente desde el script en Python.

Un detalle importante en este punto es que el “time_stamp” es de tipo “string” (texto) en lugar de numérico o de fecha. Esto se debe a que lo he forzado desde el código de Python para que sea compatible con el resto de módulos.

DataStudio

El último paso involucra a una herramienta de visualización de datos: DataStudio, de la que ya hemos hablado anteriormente en este post o en este otro.

Conectando BigQuery como fuente, identificamos las dimensiones y las métricas:

 

data studio

 

Podremos hacer rankings, ver qué usuario tiene mayor influencia o qué tweet ha tenido más alcance:

 

datastudio dashboard

 

El resultado del dashboard creado con Data Studio es público, por lo que puede visualizarse desde aquí.

Hay infinidad de opciones, ¿qué otras se te ocurren?

 

 

En nuestra compañía