如何将实时计算从流式推特API附加到数据帧?

时间:2016-08-14 13:24:05

标签: pandas dictionary dataframe python-3.5 twitter-streaming-api

我需要对来自流API的推文中的文本进行一些分析,我的问题是实时如何将我的数值结果计算以及一些字典键及其数据附加到同一数据帧来自流媒体推特API?

我得到的错误是“TypeError:无法连接非NDFrame对象”

到目前为止

代码:

# Variables that contains the user credentials to access Twitter API
access_token = ""
access_token_secret = ""
consumer_key = ""
consumer_secret = ""


score = pd.DataFrame()


# This is a basic listener that just prints received tweets to stdout.
class StdOutListener(StreamListener):


    def on_data(self, data):
        dataset = pd.DataFrame()
        tweetObj = json.loads(data)
        keys =  tweetObj.keys()
        #print (keys)
        if 'text' in tweetObj:
            score.append((tweetObj['text']))
        else:
            ('This does not have a text entry')   
        texts = (tweetObj['text'])
        wiki = TextBlob(texts)
        self.r = wiki.sentiment.polarity
        score.append(self.r)
        #print(len(score))
        return(self.r)





auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, StdOutListener())

# Searches by the keywords
stream.filter(track=['oil','gold','iron ore','uranium'],languages=['en'], stall_warnings=True)


# DF

print(score.head())

变量"self.r"是我要在数据框"scores"中追加的计算

keys对象是以这种格式存储字典键的地方,我试图在if语句中附加它们但没有运气。 :

dict_keys(['contributors', 'favorited', 'timestamp_ms', 'id', 'extended_entities', 'in_reply_to_user_id', 'user', 'source', 'favorite_count', 'truncated', 'place', 'coordinates', 'id_str', 'in_reply_to_user_id_str', 'in_reply_to_status_id_str', 'filter_level', 'in_reply_to_status_id', 'retweet_count', 'retweeted', 'in_reply_to_screen_name', 'retweeted_status', 'text', 'entities', 'created_at', 'geo', 'is_quote_status', 'lang', 'possibly_sensitive'])

我的目标是创建一个类似于下面的数据框,其中列名基于字典键本身,如下所示:

    score    text        contributors
0   .3       'aaa'       '@b'
1   .3       'aaa'       '@b'
2   .3       'aaa'       '@b'

作为奖励,我希望能够在一定数量的推文之后停止流,但不知道如何做到这一点。

我试过这行:

keys =  tweetObj.keys(500)

但得到错误:

TypeError: keys() takes no arguments (1 given)

希望这是有道理的,谢谢你提前!

0 个答案:

没有答案