title

Twitter y herramientas de BigData para explorar datos para en sector Bancario del Ecuador




Roque Leal

DataScience

Resumen

El presente Jupyter Notebook correponde a una exploración de los datos en la red social Twitter asociados a usuarios del sector bancario del Ecuador @BancoPichincha,@BancoPacificoEC,@BancoGuayaquil,@produbancoec,@solidarioec, lamentando los hechos de los sucesos que desencadenaron en el fallecimiento del Ciudadano Ex-Presidente del Perú, se realiza el informe como una aproximación científica de diferentes métodos para colectar y analizar datos en Twitter basado en las herramientas disponibles de Python.

In [39]:
import tweepy           # Para consumir la API de Twitter
import pandas as pd     # Para manejo de datos
import numpy as np      # Para operaciones numéricas

# Para ploteo y visualización:
import seaborn as sns
from IPython.display import display
import matplotlib.pyplot as plt
%matplotlib inline

App de Twitter

Para poder extraer tweets de las cuentas @BancoPichincha,@BancoPacificoEC,@BancoGuayaquil,@produbancoec,@solidarioec para un posterior análisis, creamos una aplicación basados en los servicios de Twitter. El sitio para poder hacer eso es https://apps.twitter.com/.

De esta app utilizaremos la siguiente información:

  • Consumer Key (API Key)
  • Consumer Secret (API Secret)
  • Access Token
  • Access Token Secret

Ahora comenzaremos a a consumir el API de Twitter. Para ello, creamos una función que nos permita autenticar nuestras llaves de acceso y consumo.

In [40]:
from credentials import *
def twitter_config():

    # Autenticar y acceder usando llaves:
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

    # Regresar acceso al API:
    api = tweepy.API(auth)
    return api

Extraemos tweets

Ahora se construye un extractor de datos de Twitter para el usuario de @BancoPichincha, usando el API Rest de Twitter para crear una ventana de búsqueda en el pasado de unos 60 días contados desde hoy 07 de febrero del 2020 y utilizando la cuenta de @BancoPichincha como usuario a minar. A manera de un ejercicio práctico sólo analizaremos los últimos 200 tweets dentro de la ventana de tiempo que nos permite twitter

In [41]:
extractor = twitter_config()

# Creamos una lista de tweets:
tweets = extractor.user_timeline(screen_name="BancoPichincha", count=200)
print("Tweets obtenidos: {}.\n".format(len(tweets)))

# Imprimimos los primeros 5 tweets:
print("Los primeros 5 tweets:\n")
for tweet in tweets[:5]:
    print(tweet.text)
    print()
Tweets obtenidos: 200.

Los primeros 5 tweets:

🔒Conoce lo que es un Emotet y por qué debes verificar la fuente original de tus correos electrónicos, de sus archiv… https://t.co/w1HyV3ZZLz

@Edwin_Tiburon ¡Buen día! El número a nivel nacional de Pague Ya es (02)2502010 opción 1. Saludos

@eduardo62272600 ¡Buen día! Como le indicamos en nuestro mensaje anterior, para poder atender su caso necesitamos q… https://t.co/klmTbiok2u

@andres123alb @PoliciaEcuador ¡Buen día! ¡Es un FRAUDE! Nunca enviamos este tipo de mensajes, ni por SMS ni por cor… https://t.co/k4M4MigUoW

✨ Para reflexionar...  #BuenasNoches https://t.co/t4WtottJfK

Creamos un Dataframe

Esto nos permite tener un ploteo más amigable usando el método head para visualizar sólo los primeros 10 tweets de la cuenta @BancoPichincha (o el número que elementos que se le pasen como argumento).

In [42]:
datos = pd.DataFrame(data=[tweet.text for tweet in tweets], columns=['Tweets'])
display(datos.head(10))
Tweets
0 🔒Conoce lo que es un Emotet y por qué debes ve...
1 @Edwin_Tiburon ¡Buen día! El número a nivel na...
2 @eduardo62272600 ¡Buen día! Como le indicamos ...
3 @andres123alb @PoliciaEcuador ¡Buen día! ¡Es u...
4 ✨ Para reflexionar... #BuenasNoches https://t...
5 👇 Así nos estamos transformando.\n#DigitalQuit...
6 ¿Eres titular de una de nuestras tarjetas de c...
7 @Elenarohel ¡Buen día! Gracias por enviarnos l...
8 @FrancisJacome 3. Escoja la opción “Referencia...
9 @FrancisJacome ¡Buen día! Sí, es posible solic...

Vamos agregar nuevos elementos de los tweets para explorar las caracteristicas de cada tweet

In [43]:
# Añadimos datos relevantes:
datos['len'] = np.array([len(tweet.text) for tweet in tweets])
datos['ID']  = np.array([tweet.id for tweet in tweets])
datos['Creado'] = np.array([tweet.created_at for tweet in tweets])
datos['Fuente'] = np.array([tweet.source for tweet in tweets])
datos['Likes']  = np.array([tweet.favorite_count for tweet in tweets])
datos['RTs']    = np.array([tweet.retweet_count for tweet in tweets])
In [44]:
display(datos.head(10))
Tweets len ID Creado Fuente Likes RTs
0 🔒Conoce lo que es un Emotet y por qué debes ve... 140 1225875416382164993 2020-02-07 20:14:09 Twitter Web App 3 1
1 @Edwin_Tiburon ¡Buen día! El número a nivel na... 97 1225862695121031169 2020-02-07 19:23:36 AgoraPulse Manager 0 0
2 @eduardo62272600 ¡Buen día! Como le indicamos ... 140 1225793014922141697 2020-02-07 14:46:43 AgoraPulse Manager 0 0
3 @andres123alb @PoliciaEcuador ¡Buen día! ¡Es u... 140 1225709879811330048 2020-02-07 09:16:22 AgoraPulse Manager 1 2
4 ✨ Para reflexionar... #BuenasNoches https://t... 60 1225608871177121792 2020-02-07 02:35:00 TweetDeck 14 0
5 👇 Así nos estamos transformando.\n#DigitalQuit... 88 1225578792023986177 2020-02-07 00:35:28 Twitter Ads 3 1
6 ¿Eres titular de una de nuestras tarjetas de c... 140 1225556023429214209 2020-02-06 23:05:00 Twitter Ads 14 1
7 @Elenarohel ¡Buen día! Gracias por enviarnos l... 139 1225528954569793536 2020-02-06 21:17:26 AgoraPulse Manager 0 0
8 @FrancisJacome 3. Escoja la opción “Referencia... 140 1225526631021916163 2020-02-06 21:08:12 AgoraPulse Manager 0 0
9 @FrancisJacome ¡Buen día! Sí, es posible solic... 140 1225526616773795840 2020-02-06 21:08:09 AgoraPulse Manager 0 0

Descripción básica

En este apartado investigaremos sobre estadísticos básicos de la información minada, como la media de las longitudes de cada tweet, cuál fue el tweet con más favoritos, cuál fue el tweet más retweeteado, etc.

In [45]:
# Extraemos el promedio:
media = np.mean(datos['len'])

print("El promedio de caracteres en tweets: {}".format(media))

# Extraemos el tweet con más FAVs y con más RTs:
fav_max = np.max(datos['Likes'])
rt_max  = np.max(datos['RTs'])

fav = datos[datos.Likes == fav_max].index[0]
rt  = datos[datos.RTs == rt_max].index[0]

# Max FAVs:
print("El tweet con más likes es: \n{}".format(datos['Tweets'][fav]))
print("Número de likes: {}".format(fav_max))
print("{} caracteres.\n".format(datos['len'][fav]))

# Max RTs:
print("El tweet con más retweets es: \n{}".format(datos['Tweets'][rt]))
print("Número de retweets: {}".format(rt_max))
print("{} caracteres.\n".format(datos['len'][rt]))
El promedio de caracteres en tweets: 129.115
El tweet con más likes es: 
¿Necesitas crear alianzas estratégicas para tu empresa? Entonces, ¡es crucial que seas un buen negociador! En… https://t.co/0Z2v2WfRFh
Número de likes: 230
134 caracteres.

El tweet con más retweets es: 
¿Necesitas crear alianzas estratégicas para tu empresa? Entonces, ¡es crucial que seas un buen negociador! En… https://t.co/0Z2v2WfRFh
Número de retweets: 43
134 caracteres.

Series de tiempo

Teniendo los tweets como vectores basado en las fechas de creación, podemos construir una serie de tiempo con respecto a longitudes de tweets, favoritos y retweets.

In [46]:
# Creamos series de tiempo para datos:
tlen = pd.Series(data=datos['len'].values, index=datos['Creado'])
tfav = pd.Series(data=datos['Likes'].values, index=datos['Creado'])
tret = pd.Series(data=datos['RTs'].values, index=datos['Creado'])
tlen.plot(figsize=(16,4), color='r');

En este caso observamos que la cuenta @BancoPichincha mantiene un comportamiento constante.

In [47]:
# Visualización de likes vs retweets:
tfav.plot(figsize=(16,4), label="Likes", legend=True)
tret.plot(figsize=(16,4), label="Retweets", legend=True);

Presentando una gráfica de las interacciones causadas por cada tweet de la cuenta @BancoPichincha, observamos los likes y retweets originados, los cuales alcanzaron una audiencia de hasta 250 cuentas que interactuaron

Pie charts de dispositivos

Basados en los metadatos de la tweets de @BancoPichincha es propicia la ocasión de conocer desde que dispositivo fue creado, en este caso la totalidad ha tenido por origen el gestor de AgoraPulse Manager, como lo vemos en la siguiente gráfica.

In [48]:
fuentes = []
for fuente in datos['Fuente']:
    if fuente not in fuentes:
        fuentes.append(fuente)
percent = np.zeros(len(fuentes))

for fuente in datos['Fuente']:
    for index in range(len(fuentes)):
        if fuente == fuentes[index]:
            percent[index] += 1
            pass

percent /= 100

# Pie chart:
pie_chart = pd.Series(percent, index=fuentes, name='Fuentes')
pie_chart.plot.pie(fontsize=11, autopct='%.2f', figsize=(6, 6));

Polaridad

Realizado el análisis base se puede utilizar tambien el modelo de vaderSentiment una libreria de análisis de sentimientos basada en reglas y léxicos que está específicamente en sintonía con los sentimientos expresados en las redes sociales y para este caso vamos a extraer los principales 1200 tweets relacionados a reacciones de los usuarios de Twitter con cinco cuentas: @BancoPichincha,@BancoPacificoEC,@BancoGuayaquil,@produbancoec,@solidarioec de esta manera calcularemos la polaridad de los sentimientos expresados para cada una de las 5 cuentas utilizando esta base de 6.000 Tweets.

In [49]:
import tweepy
import matplotlib.pyplot as plt
%matplotlib inline 
import seaborn as sns 
sns.set()
import pandas as pd
import numpy as np
from datetime import datetime
import math
import json
In [50]:
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
In [51]:
from config import (consumer_key, 
                    consumer_secret, 
                    access_token, 
                    access_token_secret)
In [52]:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, parser=tweepy.parsers.JSONParser())
In [53]:
target_terms = ["@BancoPichincha", "@BancoPacificoEC","@BancoGuayaquil","@produbancoec","@solidarioec"]
In [54]:
sentiments = []
desired = 300
In [55]:
for target in target_terms:
        counter = 0

        while (counter < desired):  
            public_tweets = api.search(target, count=(desired-counter), result_type="recent")
            
            for tweet in public_tweets['statuses']:      
                results = analyzer.polarity_scores(tweet["text"])  
                compound = results["compound"]
                pos = results["pos"]
                neu = results["neu"]
                neg = results["neg"]
                
                
                Date = str(datetime.strptime(tweet["created_at"], "%a %b %d %H:%M:%S %z %Y"))
                Date = Date[:19]    
        
                
                sentiments.append({"Source": target,
                            "Text": tweet["text"],
                            "DateTime": Date, 
                            "Compound": compound,
                            "Pos": pos,
                            "Neg": neu,
                            "Neu": neg,
                            "Tweets Ago": counter+1})

                counter = counter + 1
    
sentiments_df = pd.DataFrame.from_dict(sentiments)  

sentiments_df
Out[55]:
Compound DateTime Neg Neu Pos Source Text Tweets Ago
0 0.3182 2020-02-07 21:04:19 0.905 0.000 0.095 @BancoPichincha RT @BancoPichincha: 🔒Conoce lo que es un Emote... 1
1 0.0000 2020-02-07 21:02:53 1.000 0.000 0.000 @BancoPichincha BANCO PICHINCHA C.A. $PCH cerró hoy a $91.0, 1... 2
2 0.0000 2020-02-07 20:56:07 1.000 0.000 0.000 @BancoPichincha ¿Qué opinarías si tu eslogan fuera "Nuestra me... 3
3 0.0000 2020-02-07 20:34:55 1.000 0.000 0.000 @BancoPichincha Es imposible que el la Agencia del @BancoPichi... 4
4 0.3182 2020-02-07 20:16:15 0.723 0.000 0.277 @BancoPichincha RT @BancoPichincha: ✨ Para reflexionar... #Bu... 5
5 0.0000 2020-02-07 19:51:39 1.000 0.000 0.000 @BancoPichincha @novaecuador @davalos2019 @superbancosEC @Banc... 6
6 0.0000 2020-02-07 19:48:39 1.000 0.000 0.000 @BancoPichincha @Juancitojaid @Julyberth @CrediScotiaPE @Indec... 7
7 0.0000 2020-02-07 19:40:22 1.000 0.000 0.000 @BancoPichincha @alvaro_vizuete @davalos2019 @superbancosEC @B... 8
8 0.4019 2020-02-07 19:27:45 0.886 0.000 0.114 @BancoPichincha RT @Ley__Fernanda: @Denuncias_ecu Buenas tarde... 9
9 0.0000 2020-02-07 19:25:59 1.000 0.000 0.000 @BancoPichincha @404Flygon @gonzAL1901 @BCPComunica @interbank... 10
10 0.0000 2020-02-07 19:24:37 1.000 0.000 0.000 @BancoPichincha @gonzAL1901 @404Flygon @BCPComunica @interbank... 11
11 0.0000 2020-02-07 19:19:23 1.000 0.000 0.000 @BancoPichincha @Julyberth @ScotiabankPE @CrediScotiaPE @Indec... 12
12 -0.2960 2020-02-07 19:17:54 0.901 0.099 0.000 @BancoPichincha @BancoPichincha\nSeñores del banco, alguna raz... 13
13 0.0000 2020-02-07 19:13:13 1.000 0.000 0.000 @BancoPichincha @404Flygon @gapf_2201 @BCPComunica @interbank ... 14
14 -0.3612 2020-02-07 19:12:19 0.837 0.163 0.000 @BancoPichincha @gapf_2201 @gonzAL1901 No tengo 1000 lucas pa ... 15
15 0.0000 2020-02-07 19:01:25 1.000 0.000 0.000 @BancoPichincha @BancoPichincha puede ayudarme con los numero ... 16
16 0.0000 2020-02-07 18:54:17 1.000 0.000 0.000 @BancoPichincha @FiscaliaEcuador @Denuncias_ecu @BancoPichincha 17
17 0.0000 2020-02-07 18:53:42 1.000 0.000 0.000 @BancoPichincha Haciendo creer que se encuentran en situacione... 18
18 0.4019 2020-02-07 18:53:02 0.876 0.000 0.124 @BancoPichincha @Denuncias_ecu Buenas tardes por favor ayúdeme... 19
19 0.0000 2020-02-07 18:33:32 1.000 0.000 0.000 @BancoPichincha RT @mvaca1: @FEGASG @Presidencia_Ec\[email protected] 20
20 0.0000 2020-02-07 18:30:23 1.000 0.000 0.000 @BancoPichincha @SkyBridghe @LunaAzulEc @MashiRafael @BancoPic... 21
21 0.0000 2020-02-07 18:28:49 1.000 0.000 0.000 @BancoPichincha @SkyBridghe @LunaAzulEc @MashiRafael @BancoPic... 22
22 0.0000 2020-02-07 18:26:29 1.000 0.000 0.000 @BancoPichincha @SkyBridghe @LunaAzulEc @MashiRafael @BancoPic... 23
23 0.0000 2020-02-07 18:25:35 1.000 0.000 0.000 @BancoPichincha @BancoPichincha @rodriguez1305 Los números de ... 24
24 0.0000 2020-02-07 18:25:01 1.000 0.000 0.000 @BancoPichincha RT @katie92_m: @BancoPichincha @DEFENSORIAEC @... 25
25 0.0000 2020-02-07 18:24:59 1.000 0.000 0.000 @BancoPichincha RT @katie92_m: @BancoPichincha @DEFENSORIAEC @... 26
26 0.0000 2020-02-07 18:24:24 1.000 0.000 0.000 @BancoPichincha RT @SkyBridghe: @LunaAzulEc @MashiRafael @Banc... 27
27 0.0000 2020-02-07 18:23:35 1.000 0.000 0.000 @BancoPichincha @BancoPichincha @DEFENSORIAEC @elcomerciocom p... 28
28 0.0000 2020-02-07 18:20:36 1.000 0.000 0.000 @BancoPichincha @BancoPichincha @DEFENSORIAEC @elcomerciocom e... 29
29 0.0000 2020-02-07 18:20:10 1.000 0.000 0.000 @BancoPichincha @BCVs70 @BancoPichincha Borre el tweet 30
... ... ... ... ... ... ... ... ...
1470 0.0000 2020-02-07 13:43:51 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 271
1471 0.0000 2020-02-06 03:28:45 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 272
1472 0.0000 2020-02-05 23:36:26 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 273
1473 0.0000 2020-02-05 23:00:00 1.000 0.000 0.000 @solidarioec Aumenta las ventas de tu negocio aplicando est... 274
1474 0.0000 2020-02-04 17:22:30 1.000 0.000 0.000 @solidarioec ¿Quieres conocer el estado del sistema financi... 275
1475 0.0000 2020-02-03 03:59:43 1.000 0.000 0.000 @solidarioec RT @solidarioec: La mejor forma de alcanzar tu... 276
1476 0.0000 2020-02-02 23:00:24 1.000 0.000 0.000 @solidarioec RT @solidarioec: La mejor forma de alcanzar tu... 277
1477 0.0000 2020-02-02 23:00:00 1.000 0.000 0.000 @solidarioec La mejor forma de alcanzar tus metas es ahorra... 278
1478 -0.2960 2020-01-31 22:08:07 0.879 0.121 0.000 @solidarioec RT @solidarioec: (2/2) profesores, trabajadore... 279
1479 0.0000 2020-01-31 22:07:56 1.000 0.000 0.000 @solidarioec RT @solidarioec: (1/2) En el 2019 el programa ... 280
1480 0.0000 2020-02-07 13:43:51 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 281
1481 0.0000 2020-02-06 03:28:45 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 282
1482 0.0000 2020-02-05 23:36:26 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 283
1483 0.0000 2020-02-05 23:00:00 1.000 0.000 0.000 @solidarioec Aumenta las ventas de tu negocio aplicando est... 284
1484 0.0000 2020-02-04 17:22:30 1.000 0.000 0.000 @solidarioec ¿Quieres conocer el estado del sistema financi... 285
1485 0.0000 2020-02-03 03:59:43 1.000 0.000 0.000 @solidarioec RT @solidarioec: La mejor forma de alcanzar tu... 286
1486 0.0000 2020-02-02 23:00:24 1.000 0.000 0.000 @solidarioec RT @solidarioec: La mejor forma de alcanzar tu... 287
1487 0.0000 2020-02-02 23:00:00 1.000 0.000 0.000 @solidarioec La mejor forma de alcanzar tus metas es ahorra... 288
1488 -0.2960 2020-01-31 22:08:07 0.879 0.121 0.000 @solidarioec RT @solidarioec: (2/2) profesores, trabajadore... 289
1489 0.0000 2020-01-31 22:07:56 1.000 0.000 0.000 @solidarioec RT @solidarioec: (1/2) En el 2019 el programa ... 290
1490 0.0000 2020-02-07 13:43:51 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 291
1491 0.0000 2020-02-06 03:28:45 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 292
1492 0.0000 2020-02-05 23:36:26 1.000 0.000 0.000 @solidarioec RT @solidarioec: Aumenta las ventas de tu nego... 293
1493 0.0000 2020-02-05 23:00:00 1.000 0.000 0.000 @solidarioec Aumenta las ventas de tu negocio aplicando est... 294
1494 0.0000 2020-02-04 17:22:30 1.000 0.000 0.000 @solidarioec ¿Quieres conocer el estado del sistema financi... 295
1495 0.0000 2020-02-03 03:59:43 1.000 0.000 0.000 @solidarioec RT @solidarioec: La mejor forma de alcanzar tu... 296
1496 0.0000 2020-02-02 23:00:24 1.000 0.000 0.000 @solidarioec RT @solidarioec: La mejor forma de alcanzar tu... 297
1497 0.0000 2020-02-02 23:00:00 1.000 0.000 0.000 @solidarioec La mejor forma de alcanzar tus metas es ahorra... 298
1498 -0.2960 2020-01-31 22:08:07 0.879 0.121 0.000 @solidarioec RT @solidarioec: (2/2) profesores, trabajadore... 299
1499 0.0000 2020-01-31 22:07:56 1.000 0.000 0.000 @solidarioec RT @solidarioec: (1/2) En el 2019 el programa ... 300

1500 rows × 8 columns

In [56]:
markersize = 160 
kws = dict(s=markersize, linewidth=.8, edgecolor="bk")
sns.set(font_scale = 1.5)

max_tweets = sentiments_df["Tweets Ago"].max()

pyber_palette = ['#ffff66','#1b919a','#ff0033','#000099','#c6fcff']  

sentiments_df.rename(columns = {'Source':'Media Sources'}, inplace = True)  

Date = Date[:10] 

sns.lmplot(x='Tweets Ago', y='Compound', data=sentiments_df,
            fit_reg=False,
            palette=pyber_palette, 
            scatter_kws=kws,
            hue= 'Media Sources',
            size = 10,
            legend_out=True)
plt.title("Análisis de los Sentimientos ({})".format(Date))
plt.ylabel("Polaridad de Tweet")
plt.xlabel("Tweets Ago")
plt.xlim(max_tweets+5, -5.0)  
plt.ylim(-1, 1)

plt.savefig("Sentiment Analysis of Media Tweets.png")

plt.show()
In [57]:
BancoPichincha = sentiments_df.groupby('Media Sources')['Compound'].mean()['@BancoPichincha']
BancoPacificoEC = sentiments_df.groupby('Media Sources')['Compound'].mean()['@BancoPacificoEC']
BancoGuayaquil = sentiments_df.groupby('Media Sources')['Compound'].mean()['@BancoGuayaquil']
produbancoec = sentiments_df.groupby('Media Sources')['Compound'].mean()['@produbancoec']
solidarioec = sentiments_df.groupby('Media Sources')['Compound'].mean()['@solidarioec']
print("@BancoPichincha = " + str(BancoPichincha) + ", @BancoPacificoEC = " + str(BancoPacificoEC) + ", @BancoGuayaquil = " + str(BancoGuayaquil) +", @produbancoec = " + str(produbancoec) +", @solidarioec = " + str(solidarioec))

x_labels = ['Pichincha','Pacifico','Guayaq','Produban','Solidario']
y_sentiments = [BancoPichincha,BancoPacificoEC,BancoGuayaquil,produbancoec,solidarioec]
palette = ['#ffff66','#1b919a','#ff0033','#000099','#c6fcff']  

x_pos = [0,1,2,3,4]    
plt.bar(x_pos, y_sentiments, color=sns.color_palette(palette,5), align='center', width = 1, edgecolor = 'bk', linewidth = .6)
plt.xlim(-0.5, len(x_labels)-0.49)  
plt.ylim(min(y_sentiments)-0.1, max(y_sentiments)+0.1) 
plt.xticks(x_pos, x_labels)
plt.title("Overall Media Sentiment based on Twitter ({})".format(Date), fontsize=14)
plt.ylabel("Tweet Polarity", fontsize=14)
for a,b in zip(x_pos, y_sentiments): 
    if b <= 0:
        B = b-0.035                  
    else:                             
        B = b+0.015                  
    plt.text(a-0.25, B, str(round(b, 2)), fontsize = 13)  


plt.savefig("Overall Media Sentiment based on Twitter.png")

plt.show()
@BancoPichincha = -0.033136, @BancoPacificoEC = -0.06135899999999995, @BancoGuayaquil = -0.027069000000000003, @produbancoec = -0.007995999999999998, @solidarioec = -0.0296

En esta oportunidad basado en muestra de 6000 tweets y usando las cinco cuentas para la comparación se tiene la cuenta de @BancoPacificoEC como la principal que se asocia con sentimientos negativos por parte de la muestra, precedida por la cuenta @BancoPichincha, @BancoGuayaquil, @solidarioec y finalmente la cuenta @produbancoec. Todas ellas polarizadas a sentimientos negativos.

Conclusiones

Los resultados presentan diferentes soluciones en cuanto al análisis de contenido en twitter a partir de diferentes librerias de Python, la interpretación de ellos es a juicio de los lectores y espera ser una aproximación inicial para que permita involucrarlos en la exploración de los datos en redes sociales como parte del estudio sobre el comportamiento de las audiencias y los fenómenos sociales.