Searching...
lunes, 9 de abril de 2018

Extracción y gestión básica de datos de Twitter con Python

En este artículo voy a extraer datos de Twitter usando tweepy y a mostrar cómo gestionarlos usando pandas. Explicaré la publicación completa junto con el código, de la manera más simple posible.

Antes que nada, necesitamos tener Python instalado.

Estoy casi seguro de que todo el código se ejecutará en Python 2.7, pero voy a usar Python 3.6. Recomiendo al lector instalar Anaconda, que es una distribución de Python muy útil para gestionar paquetes que incluye muchas herramientas útiles, como Jupyter Notebooks. Para descargar e instalar Python Anaconda 3.6 puedes leer este artículo.

Explicaré el código suponiendo que usamos un Jupyter Notebook, pero el código se ejecutará si estás programando un script simple con tu editor de texto. Tendrás que adaptarlo (no es difícil). Te puedes bajar el código fuente del repositorio que he creado en GitHub.
Para empezar, lo primero es estar autorizados y tener acceso a la API de Tweeter, para lo que tendremos que asegurarnos de tener instalada la librería Tweepy de Python.
En caso de no tenerla instalada, abre un terminal de Python (o de Anaconda si estás usando esta distribución), y teclea:
$pip install tweepy

Luego abre un Jupyter Notebook y ejecuta la siguiente sentencia para verificar que tweepy se ha instalado correctamente:

A continuación, se resumen las librerías que debes tener instaladas:

NumPy: este es el paquete fundamental para cálculo científico con Python. Además de sus usos científicos obvios, NumPy también se puede usar como contenedor multidimensional eficiente de datos genéricos.

Pandas: es una librería de código abierto que proporciona estructuras de datos y herramientas de análisis de datos fáciles de usar y de alto rendimiento.

Tweepy: es una librería Python fácil de usar para acceder a la API de Twitter.

Matplotlib: es una librería de gráficos 2D de Python que produce figuras de calidad de publicación en una variedad de formatos impresos y entornos interactivos en todas las plataformas.

Seaborn: es una librería de visualización de Python basada en matplotlib. Proporciona una interfaz de alto nivel para dibujar gráficos estadísticos atractivos.

Textblob: es una librería Python para procesar datos textuales. Proporciona una API simple para bucear en tareas comunes de procesamiento de lenguaje natural (NLP).

Todas estas librerías se pueden instalar con pip. Al final de este artículo, podrá encontrar más referencias sobre estas librerías de Python.

Escribe el siguiente código en tú Jupyter Notebook:


Para extraer los tweets para un análisis posterior, necesitamos acceder a nuestra cuenta de Twitter y crear una aplicación. El sitio web para hacer esto es https://apps.twitter.com/.

Desde esta aplicación que estamos creando guardaremos la siguiente información en un script llamado credentials.py:

·       Clave de consumidor (clave de API)
·       Secreto del consumidor (API Secret)
·       Token de Acceso
·       Secreto del Token de Acceso

Un ejemplo de este script es el siguiente:


La razón de crear este archivo adicional es que queremos exportar solo el valor de estas variables, pero sin que se vean en nuestro código principal (nuestro cuaderno). Ahora podemos consumir la API de Twitter. Para hacer esto, creamos una función que nos permita la autenticación de nuestras claves. Añadimos esta función a otra celda de código y la ejecutamos:


Ahora que hemos creado una función para configurar la API de Twitter, podemos usar esta función para crear un objeto "extractor". Después de esto, usaremos la función extractor.user_timeline(screen_name, count) de Tweepy para extraer del usuario screen_name una cantidad de tweets count.

En este caso, he elegido @machinelearnbot como usuario para extraer datos para un análisis posterior, una cuenta que sigo de actualidades sobre aprendizaje automático.


Con esto tendremos un resultado similar a este, y podremos comparar el resultado con la cuenta de Twitter (para verificar si estamos siendo coherentes):


Ahora tenemos un extractor y extraemos datos, que se enumeran en la variable tweets. Debo mencionar en este punto que cada elemento de esa lista es un objeto tweet de Tweepy.

A continuación, vamos a aprender cómo gestionar estos datos.

Ahora tenemos información inicial para construir un DataFrame de pandas, con el fin de manipular la información de una manera muy fácil.

La función display de IPython dibuja una salida de una manera amigable, y el método head de un dataframe nos permite visualizar los primeros 10 elementos del mismo (o el primer número de elementos que se pasen como argumento).


Esto creará un resultado similar a este:


Así que ahora tenemos una tabla con los datos ordenados.

Algo interesante es el número de métodos internos que tiene la estructura tweet de Tweepy:

Esto genera la siguiente lista de elementos:

Lo interesante aquí es la cantidad de metadatos contenidos en un único tweet. Si queremos obtener datos tales como la fecha de creación o la fuente de creación, podemos acceder a la información con estos atributos. Un ejemplo es el siguiente:


Obteniendo un resultado como este:

982946452015116289
2018-04-08 11:41:11
Machine learning Bot 6
1
2
None
None
{'hashtags': [{'text': 'machinelearning', 'indices': [98, 114]}, {'text': 'ad', 'indices': [115, 118]}], 'symbols': [], 'user_mentions': [{'screen_name': 'machinelearnbot', 'name': 'Machine Learning', 'id': 4820804277, 'id_str': '4820804277', 'indices': [81, 97]}], 'urls': [{'url': 'https://t.co/QWW5ZKINkr', 'expanded_url': 'https://click.linksynergy.com/link?id=*YZD2vKyNUY&offerid=358574.622414&type=2&murl=https%3A%2F%2Fwww.udemy.com%2Ftaming-big-data-with-apache-spark-hands-on%2F', 'display_url': 'click.linksynergy.com/link?id=*YZD2v…', 'indices': [57, 80]}]}

Ahora podemos ordenar los datos relevantes y añadirlos a nuestro dataframe.

Como se puede ver, podemos obtener una gran cantidad de datos de un único tweet. Pero no todos estos datos son siempre útiles para algo específico. En nuestro caso, solamente añadimos algunos datos a nuestro dataframe. Para esto, usamos listas de Python y se añadirá una nueva columna al dataframe simplemente añadiendo el nombre del contenido entre corchetes y asignando el contenido. El código es el siguiente:


Y volvemos a mostrar el dataframe para ver los cambios:

Ahora que hemos extraído los datos de los tweets y los tenemos dispuestos de una manera ordenada fácil de gestionar, estamos listos para manipularlos un poco más, recopilar algunos datos estadísticos y visualizar algunos gráficos. Pero esto lo trataré en el artículo siguiente. No te lo pierdas !!! ;)

0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!