Добавление значений нескольких фреймов данных в основной фрейм данных

#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)
  

Я написал этот код для вычисления полярности и субъективности.Теперь я просто столкнулся с двумя проблемами при дальнейшей работе:

  1. я хочу вычислить полярность и субъективность различных значений api в столбце API. и хочу добавить его к основному фрейму данных в виде двух столбцов PO и SU.

2.я хочу, чтобы указать дату мою функцию выше(из моих основных данных даты столбца), чтобы он дал мне полярности и субъективность этого API на соответствующую дату.

Любая помощь будет оценена.