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.