Python 如何按年份计算熊猫数据框列中最常出现的单词?
我有一个pandas数据框架,其中包含一列“reviews”和一列“year”。我想查看评论栏中出现频率最高的100个单词,但按年份过滤。所以,我想知道从2002年、2003年、2004年到2017年的前100名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(
将熊猫作为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
说明:
DataFrame将值转换为小写
N
值