Blog
Tutorial de análisis de sentimientos de Twitter en Python p.2
- Publicado por: Rafael Fernandez
- Categoría: Curso de SQLite Dash
-Explicaremos cómo instalar y utilizar la librería Pandas.
-Explicaremos cómo leer la base de datos y suavizarlos.
Hola y bienvenidos a la parte 2 de nuestro proyecto de Visualización de Análisis de Sentimientos con Dash. Antes de esta parte, aprendimos cómo calcular el sentimento en una frase, cómo transmitir datos de Twitter, y ahora estamos listos para vincularlo a Dash. Si aún no estás familiarizado con Dash, echa un vistazo a los tutoriales de Dash.
En nuestra aplicación Dash, necesitamos alguna forma de interactuar con nuestra base de datos. Debido a que es bastante probable que hagamos varios cálculos sobre estos datos, en lugar de mostrar el sentimiento en bruto, voy a usar pandas. Si no tienes pandas ejecuta en tu cmd como administrador “pip install pandas”. Pandas es una popular librería de análisis de datos para Python. Puedes pensar en ello como Excel para Python. Si desea obtener más información, consulte los tutoriales de Análisis de datos con Python y Pandas.
Vamos a cubrir rápidamente cómo podemos leer una base de datos y luego haremos un simple cálculo:
import sqlite3 import pandas as pd conn = sqlite3.connect('twitterF1.db') c = conn.cursor() df = pd.read_sql("SELECT * FROM sentimiento WHERE tweet LIKE '%py%' ORDER BY unix DESC LIMIT 1000", conn) print(df.tail())
Para cargar una base de datos en un marco de datos, primero pasamos la consulta SQL, y luego el objeto de conexión. En este caso, nuestra consulta SQL está buscando cualquier tweet que contenga la subcadena de “py” en ellos, como py es bastante común siempre aparece algo. Por ahora, también estamos limitando el retorno a 1000, ordenando por el tiempo unix, descendiendo (así que tenemos los últimos tweets).
Ejemplo de salida:
unix tweet \
0 1.522758e+12 RT @thegreatkhalid: happy 4 u
1 1.522758e+12 RT @BeykozAktuel: https://t.co/mpyBHapRlX Beyk…
2 1.522758e+12 @riannuuh_ Im really really happy that you lov…
3 1.522758e+12 RT @kekekior: I can sit in my room for hours a…
4 1.522758e+12 RT @TeamSirish: Wishing our cute lil #AlluAyaa…
sentimiento
0 0.5719
1 0.0000
2 0.8581
3 0.4767
4 0.8357
Esto es solo un fragmento rápido de nuestros datos. Ahora, los resultados de los sentimientos en bruto son ruidosos y vamos filtrarlos y suavizarlos. Hagámoslo con un promedio móvil pero no queremos una media móvil cualquiera, queremos algo que sea adecuado para el tamaño de los datos que podamos encontrar.
Además, ya que hemos ordenado por tiempo unix en orden descendente, es probable que queramos dar la vuelta a nuestros datos para que estén en el orden cronológico adecuado, con:
df.sort_values('unix', inplace=True)
Suavizando los datos:
df['sentiment_smoothed'] = df['sentiment'].rolling(int(len(df)/5)).mean() df.dropna(inplace=True) print(df.tail())
El código completo sería:
import sqlite3 import pandas as pd conn = sqlite3.connect('twitterF1.db') c = conn.cursor() df = pd.read_sql("SELECT * FROM sentimiento WHERE tweet LIKE '%py%' ORDER BY unix DESC LIMIT 1000", conn) df.sort_values('unix', inplace=True) df['sentimiento_smoothed'] = df['sentimiento'].rolling(int(len(df)/5)).mean() df.dropna(inplace=True) print(df.tail())
unix tweet \
4 1.522758e+12 RT @TeamSirish: Wishing our cute lil #AlluAyaa…
3 1.522758e+12 RT @kekekior: I can sit in my room for hours a…
2 1.522758e+12 @riannuuh_ Im really really happy that you lov…
1 1.522758e+12 RT @BeykozAktuel: https://t.co/mpyBHapRlX Beyk…
0 1.522758e+12 RT @thegreatkhalid: happy 4 u
sentimiento sentimiento_smoothed
4 0.8357
3 0.4767
2 0.8581
1 0.0000
0 0.5719
De acuerdo, en este punto, deberíamos tener todo lo que necesitamos para crear nuestra primera aplicación básica de Dash que mostrará en vivo el sentimiento de Twitter para cualquier palabra que queramos. Hagámoslo en el próximo tutorial!
Proyecto Dash con Análisis de Sentimientos en Python, 4º tutorial