在Python的大型文本tweets数据集中绘制特定单词随时间的变化

问题描述

我需要绘制带有一列文本的熊猫数据框(时间序列)随时间变化的单词出现情况。

数据框如下所示:

index,date,...,text
2020-10-20 20:20:00,2020-10-20,"The text goes here"
.
.
.

我想要的是一个图表,该图表显示了特定单词(例如“ here”)随时间的变化。

这是我目前拥有的(它可以完成工作,但是对于大数据和多个单词来说效率很低):

df['contains_word']=df['text'].str.contains('word')
df['contains_word']=df['contains_word'].replace(True,1)
df['contains_word']=df['contains_word'].replace(False,0)

g=df.groupby('date').contains_word.count()
plt.plot(g.index,g,c='r')
plt.xticks(rotation=90)
plt.title('xxx')
plt.show()

这是示例输出

enter image description here

解决方法

您似乎遇到了数量问题,而不是时间序列代码本身。为此,可以选择并行处理df['text'].str.contains('word')。我建议swifter进行并行处理。

import swifter
def contains_word(word,dataframe,column):
    dataframe['contains_word']=dataframe['text'].str.contains(word)
    dataframe['contains_word']=dataframe['contains_word'].replace(True,1)
    dataframe['contains_word']=dataframe['contains_word'].replace(False,0)
    return dataframe['contains_word']
# example for the column text and word "here"
df.swifter.apply(lambda x: contains_word(word='here',df,'text'),axis=0)

如果这还不够,我会尝试以更有效地查找所需值的方式来准备数据框。