看上去不太美观,给它排个序再看看:

大家好,我是皮皮。

一、前言

前几天在Python最强白银交流群【王王雪饼】问了一个处理词频的问题,这里拿出来给大家分享下。

Python

下图是他的代码:

#统计词频
fromcollectionsimportCounter
wordcount=Counter(all_words)
word_count=wordcount.most_common(30)
frequence_list=[]
foriinrange(len(word_count)):
frequence_list.append(word_count[i][0])
frequence_list

二、实现过程

这里【Python进阶者】给了一个答案,如下所示:

代码如下:

#!/usr/bin/envpython3
#-*-coding:utf-8-*-
importsys
importjieba
importjieba.analyse
importxlwt#写入Excel表的库
#reload(sys)
#sys.setdefaultencoding('utf-8')
if__name__=="__main__":
wbk=xlwt.Workbook(encoding='ascii')
sheet=wbk.add_sheet("wordCount")#Excel单元格名字
word_lst=[]
key_list=[]
forlineinopen('./《都挺好》阿耐_分词后_outputs.txt','r',encoding='utf-8'):#需要分词统计的原始目标文档
item=line.strip('\n\r').split('\t')#制表格切分
#printitem
tags=jieba.analyse.extract_tags(item[0])#jieba分词
fortintags:
word_lst.append(t)
word_dict={}
withopen("分词结果.txt",'w')aswf2:#指定生成文件的名称
foriteminword_lst:
ifitemnotinword_dict:#统计数量
word_dict[item]=1
else:
word_dict[item]+=1
orderList=list(word_dict.values())
orderList.sort(reverse=True)
#printorderList
foriinrange(len(orderList)):
forkeyinword_dict:
ifword_dict[key]==orderList[i]:
wf2.write(key+''+str(word_dict[key])+'\n')#写入txt文档
key_list.append(key)
word_dict[key]=0
foriinrange(len(key_list)):
sheet.write(i,1,label=orderList[i])
sheet.write(i,0,label=key_list[i])
wbk.save('wordCount_all_lyrics.xls')#保存为wordCount.xls文件

顺利地解决了粉丝的问题。

后来【Yif18】也给了一个方法,他是把分词结果存成df然后groupby,如下所示:

后来【甯同学】也给了一个代码,如下图所示:

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个处理词频的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

Python

最后感谢粉丝【王王雪饼】提问,感谢【Python进阶者】、【论草莓如何成为冻干莓】、【瑜亮老师】、【甯同学】、【Yif18】给出的思路和代码解析,感谢【eric】等人参与学习交流。