Python 如何按年份计算熊猫数据框列中最常出现的单词?

Python 如何按年份计算熊猫数据框列中最常出现的单词?,python,pandas,word-frequency,Python,Pandas,Word Frequency,我有一个pandas数据框架,其中包含一列“reviews”和一列“year”。我想查看评论栏中出现频率最高的100个单词,但按年份过滤。所以,我想知道从2002年、2003年、2004年到2017年的前100名 将熊猫作为pd导入 从nltk.corpus导入停止词 df=pd.read_csv(“./reviews.csv”) stop=stopwords.words('english') commonwords=pd.Series(“”.join(df['reviews']).lower(

我有一个pandas数据框架,其中包含一列“reviews”和一列“year”。我想查看评论栏中出现频率最高的100个单词,但按年份过滤。所以,我想知道从2002年、2003年、2004年到2017年的前100名

将熊猫作为pd导入
从nltk.corpus导入停止词
df=pd.read_csv(“./reviews.csv”)
stop=stopwords.words('english')
commonwords=pd.Series(“”.join(df['reviews']).lower().split()).value_counts()[:100]
印刷品(常用词)
df.to_csv('commonwords.csv',index=False)

上面的代码可以工作,但它只提供了所有年份中出现频率最高的100个单词。

在创建commonwords数据框之前,您可以使用groupby操作创建另一个数据框,如so
df.groupby(['year','reviews'))
。然后使用重置索引操作,这样您就可以使用它来过滤前100名

除重置索引外,您还可以参考以了解更多想法。

您可以使用:

df = pd.DataFrame({'reviews':['He writer in me great great me',
                        'great ambience the coffee was great',
                        'great coffee'],
                   'year':[2002,2004,2004]})
print (df)

                               reviews  year
0       He writer in me great great me  2002
1  great ambience the coffee was great  2004
2                         great coffee  2004

#change for 100 for top100 in real data
N = 3
df1 =  (df.set_index('year')['reviews']
          .str.lower()
          .str.split(expand=True)
          .stack()
          .groupby(level=0)
          .value_counts()
          .groupby(level=0)
          .head(N)
          .rename_axis(('year','words'))
          .reset_index(name='count'))

print (df1)
   year     words  count
0  2002     great      2
1  2002        me      2
2  2002        he      1
3  2004     great      3
4  2004    coffee      2
5  2004  ambience      1
说明

  • 使用for
    DataFrame将值转换为小写
  • 通过对多索引系列进行重塑
  • 对每个组的值进行计数,并对值进行排序
  • 通过获取top
    N
  • 数据清理-使用