#python #pandas #twitter #data-science #sentiment-analysis
#python #pandas #Twitter #наука о данных #анализ настроений
Вопрос:
Это мои основные данные
API Close Date Dividends High Low
@3MIndia 25981.7 2018-09-03 0.0 26662.0 25807.8
@Adani_Gas 25454.0 2018-09-04 0.0 26000.0 25010.0
@AdaniOnline 25307.1 2018-09-05 0.0 25519.2 25015.0
Affle 25790.3 2018-09-06 0.0 25950.0 25200.0
AGC 25383.9 2018-09-07 0.0 25747.8 25200.0
Теперь я хочу вычислить настроения в твиттере для разных значений столбца API для разных значений столбца Даты.
def mytweet(tweet_text,number,days):
import tweepy
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
from tweepy.cursor import Cursor
from datetime import datetime, timedelta
import json
import pandas as pd
#import preprocessor as p
import re
from nltk.tokenize import WordPunctTokenizer
#from nltk.corpus import stopwords
from nltk.tokenize import sent_tokenize
import string
from pandas.io.json import json_normalize
from textblob import TextBlob
import os
os.chdir("C:\Users\HP\UntitledFolder2")
dataf1 = pd.DataFrame()
cons_key = 'xxxxxxxxx'
cons_secret = 'xxxxxxx'
acc_token = 'xxxxxxxx'
acc_secret = 'xxxxxxx'
keyword = tweet_text '-filter:retweets'
total_tweets = number
auth = tweepy.OAuthHandler(cons_key, cons_secret)
auth.set_access_token(acc_token, acc_secret)
api = tweepy.API(auth)
today_datetime = datetime.today().now()
yesterday_datetime = today_datetime - timedelta(days=days)
today_date = today_datetime.strftime('%Y-%m-%d')
yesterday_date = yesterday_datetime.strftime('%Y-%m-%d')
#api = authentication(cons_key,cons_secret,acc_token,acc_secret)
search_result = api.search(q=keyword,since=yesterday_date,until=today_date,count=total_tweets,tweet_mode='extended',lang = 'en')
for tweet in search_result:
dict = {'Screen Name': tweet.user.screen_name,'Tweet Created At': tweet.user.name,'Tweet Created At': str(tweet.created_at),'Tweet_Text': str(tweet.full_text),'User Location': str(tweet.user.location),'Tweet Coordinates': str(tweet.coordinates),'Retweet Count': str(tweet.retweet_count),'Retweeted': str(tweet.retweeted),'Phone Type': str(tweet.source),'Favorite Count': str(tweet.favorite_count),'Favorited': str(tweet.favorited),'Replied': str(tweet.in_reply_to_status_id_str)}
dataf = pd.DataFrame([dict])
user_removed = re.sub(r'@[A-Za-z0-9] ','',str(dataf.Tweet_Text))
link_removed = re.sub('https?://[A-Za-z0-9./] ','',user_removed)
number_removed = re.sub('[^a-zA-Z]', ' ', link_removed)
lower_case_tweet= number_removed.lower()
tok = WordPunctTokenizer()
words = tok.tokenize(str(lower_case_tweet))
clean_tweet = (' '.join(words)).strip()
#clean_tweet = p.clean(status['Tweet_Text'])
dataf['Clean Tweet'] = clean_tweet
blob = TextBlob(str(dataf['Clean Tweet']))
sentiment = blob.sentiment
PO1 = sentiment.polarity
SU1 = sentiment.subjectivity
#dataf['Sentiment'] = sentiment
dataf['PO1'] = PO1
dataf['SU1'] = SU1
dataf['PO1'].between(-0.5, 0.5, inclusive=False)
dataf['SU1'].between(-0.5, 0.5, inclusive=False)
dataf1=dataf1.append(dataf)
filename = tweet_text ".xlsx"
#dataf1.to_excel(filename)
P1 = dataf1.PO1.mean()
S1 = dataf1.SU1.mean()
d1 = {'PO': [P1], 'SU': [S1]}
return pd.DataFrame(d1)
Я написал этот код для вычисления полярности и субъективности.Теперь я просто столкнулся с двумя проблемами при дальнейшей работе:
- я хочу вычислить полярность и субъективность различных значений api в столбце API. и хочу добавить его к основному фрейму данных в виде двух столбцов PO и SU.
2.я хочу, чтобы указать дату мою функцию выше(из моих основных данных даты столбца), чтобы он дал мне полярности и субъективность этого API на соответствующую дату.
Любая помощь будет оценена.