In [4]:
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
from pymongo import MongoClient
from geopy.geocoders import Nominatim

locate = Nominatim()
client = MongoClient()
db = client.twitterCleanDb
tweetCollection = db.tweets

times = []
polarities = []
subjectivities = []
locations = []
locationPolarities = []
lats = []
longs = []
modiTweets = tweetCollection.find({'cleantest' :{'$regex': '.*modi*.'}})
for tweet in modiTweets:
    times.append(tweet['created_at'])
    polarities.append(tweet['polarity'])
    subjectivities.append(tweet['subjectivity'])
    
    latlong = locate.geocode(tweet['user']['location'])
    if latlong is None:
        latlong = locate.geocode(tweet['user']['time_zone'])
        if latlong is None:
            locations.append(["p", "p"])
            print('appended')
        else:
            locations.append([latlong.latitude, latlong.longitude])
            print('appended 1', latlong, latlong.latitude, latlong.longitude)
            locationPolarities.append(tweet['polarity'])
    else:
        locations.append([latlong.latitude, latlong.longitude])
        print('appended 2', latlong, latlong.latitude, latlong.longitude)
        locationPolarities.append(tweet['polarity'])
    
appended 1 New Delhi, Delhi, India 28.6141793 77.2022662
appended 2 Noida, Ghaziabad, Uttar Pradesh, 201301, India 28.5726442 77.3547609
appended 1 Mumbai, Greater Bombay, Mumbai Suburban, Maharashtra, India 19.1334321 72.8882172
appended 2 United Kingdom, دبي, دبي‎, الإمارات العربية المتحدة 25.2232283 55.1594933008754
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 Big A's On the Riverfront, 308, North Main Street, St. Charles, St. Charles County, Missouri, 63301, United States of America 38.78305035 -90.4800825562532
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 New Delhi, Delhi, India 28.6141793 77.2022662
appended 1 Chennai, Chennai district, Tamil Nadu, India 13.0801721 80.2838331
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 Mumbai, Greater Bombay, Mumbai Suburban, Maharashtra, India 19.1334321 72.8882172
appended 2 Jandola PO, Jandola-Chagmalai Rd, South Wazīristān Agency, وفاقی قبائلی علاقہ جات, ‏پاکستان‎ 32.3365096 70.1223033
appended 2 India 22.3511148 78.6677428
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 1 Chennai, Chennai district, Tamil Nadu, India 13.0801721 80.2838331
appended 1 Hawaii, United States of America 21.2160437 -157.975203
appended 2 Kharagpur, Paschim Medinipur, West Bengal, 721301, India 22.34309 87.3012875
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 India 22.3511148 78.6677428
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 1 New Delhi, Delhi, India 28.6141793 77.2022662
appended 2 Noida, Ghaziabad, Uttar Pradesh, 201301, India 28.5726442 77.3547609
appended 1 Mumbai, Greater Bombay, Mumbai Suburban, Maharashtra, India 19.1334321 72.8882172
appended 2 United Kingdom, دبي, دبي‎, الإمارات العربية المتحدة 25.2232283 55.1594933008754
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 Big A's On the Riverfront, 308, North Main Street, St. Charles, St. Charles County, Missouri, 63301, United States of America 38.78305035 -90.4800825562532
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 New Delhi, Delhi, India 28.6141793 77.2022662
appended 1 Chennai, Chennai district, Tamil Nadu, India 13.0801721 80.2838331
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 Mumbai, Greater Bombay, Mumbai Suburban, Maharashtra, India 19.1334321 72.8882172
appended 2 Jandola PO, Jandola-Chagmalai Rd, South Wazīristān Agency, وفاقی قبائلی علاقہ جات, ‏پاکستان‎ 32.3365096 70.1223033
appended 2 India 22.3511148 78.6677428
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 1 Chennai, Chennai district, Tamil Nadu, India 13.0801721 80.2838331
appended 1 Hawaii, United States of America 21.2160437 -157.975203
appended 2 Kharagpur, Paschim Medinipur, West Bengal, 721301, India 22.34309 87.3012875
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 2 India 22.3511148 78.6677428
appended 1 Tijuana, Municipio de Tijuana, Baja California, 22105, México 32.5008626 -116.9641657
appended 1 None, TO, PIE, Italia 44.933143 7.540121
appended 1 Kolkata, Hāora, West Bengal, 700021, India 22.5677459 88.3476023
In [5]:
import dateutil
df = pd.DataFrame({'time':times, 'polarity': polarities, 'subjectivity': subjectivities})
df = df.sort_values(by=['time'])
df['time'] = df['time'].apply(dateutil.parser.parse)
df.dtypes
Out[5]:
polarity                    float64
subjectivity                float64
time            datetime64[ns, UTC]
dtype: object
In [20]:
plt.figure(figsize = (12, 5))

plt.title('Sentiment Comparision')
plt.plot(df['time'], df['polarity'])
plt.plot(df['time'], df['subjectivity'])

plt.xlabel('Time')
plt.ylabel('Sentiment Value')
Out[20]:
Text(0,0.5,'Sentiment Value')
In [11]:
lats = [lat[0] for lat in locations]
longi = [long[1] for long in locations]

print(lats, " +  ", longi)
[28.6141793, 28.5726442, 19.1334321, 25.2232283, 44.933143, 38.78305035, 44.933143, 28.6141793, 13.0801721, 44.933143, 44.933143, 19.1334321, 32.3365096, 22.3511148, 44.933143, 13.0801721, 21.2160437, 22.34309, 44.933143, 22.3511148, 44.933143, 28.6141793, 28.5726442, 19.1334321, 25.2232283, 44.933143, 38.78305035, 44.933143, 28.6141793, 13.0801721, 44.933143, 44.933143, 19.1334321, 32.3365096, 22.3511148, 44.933143, 13.0801721, 21.2160437, 22.34309, 44.933143, 22.3511148, 32.5008626, 44.933143, 22.5677459]  +   [77.2022662, 77.3547609, 72.8882172, 55.1594933008754, 7.540121, -90.4800825562532, 7.540121, 77.2022662, 80.2838331, 7.540121, 7.540121, 72.8882172, 70.1223033, 78.6677428, 7.540121, 80.2838331, -157.975203, 87.3012875, 7.540121, 78.6677428, 7.540121, 77.2022662, 77.3547609, 72.8882172, 55.1594933008754, 7.540121, -90.4800825562532, 7.540121, 77.2022662, 80.2838331, 7.540121, 7.540121, 72.8882172, 70.1223033, 78.6677428, 7.540121, 80.2838331, -157.975203, 87.3012875, 7.540121, 78.6677428, -116.9641657, 7.540121, 88.3476023]
In [22]:
import mplleaflet

mapdf = pd.DataFrame({'lat': lats, 'longi': longi, 'polarity':polarities[:len(lats)]})
plt.figure(figsize=(8, 8))
plt.scatter(longi, lats, c = polarities[:len(lats)])
mplleaflet.display()
Out[22]: