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

下图是他的代码:

1# 统计词频 2from collections import Counter 3 4wordcount = Counter(all_words) 5word_count = wordcount.most_common(30) 6 7frequence_list = [] 8for i in range(len(word_count)): 9 frequence_list.append(word_count[i][0]) 10frequence_list 11
二、实现过程
这里【Python进阶者】给了一个答案,如下所示:

代码如下:
1#!/usr/bin/env python3 2# -*- coding:utf-8 -*- 3 4import sys 5import jieba 6import jieba.analyse 7import xlwt # 写入Excel表的库 8 9# reload(sys) 10# sys.setdefaultencoding('utf-8') 11 12if __name__ == "__main__": 13 wbk = xlwt.Workbook(encoding='ascii') 14 sheet = wbk.add_sheet("wordCount") # Excel单元格名字 15 word_lst = [] 16 key_list = [] 17 for line in open('./《都挺好》阿耐_分词后_outputs.txt', 'r', encoding='utf-8'): # 需要分词统计的原始目标文档 18 19 item = line.strip('\n\r').split('\t') # 制表格切分 20 # print item 21 tags = jieba.analyse.extract_tags(item[0]) # jieba分词 22 for t in tags: 23 word_lst.append(t) 24 25 word_dict = {} 26 with open("分词结果.txt", 'w') as wf2: # 指定生成文件的名称 27 for item in word_lst: 28 if item not in word_dict: # 统计数量 29 word_dict[item] = 1 30 else: 31 word_dict[item] += 1 32 33 orderList = list(word_dict.values()) 34 orderList.sort(reverse=True) 35 # print orderList 36 for i in range(len(orderList)): 37 for key in word_dict: 38 if word_dict[key] == orderList[i]: 39 wf2.write(key + ' ' + str(word_dict[key]) + '\n') # 写入txt文档 40 key_list.append(key) 41 word_dict[key] = 0 42 43 for i in range(len(key_list)): 44 sheet.write(i, 1, label=orderList[i]) 45 sheet.write(i, 0, label=key_list[i]) 46 wbk.save('wordCount_all_lyrics.xls') # 保存为 wordCount.xls文件 47
顺利地解决了粉丝的问题。

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

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

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

三、总结
大家好,我是皮皮。这篇文章主要盘点了一个Python处理词频的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【王王雪饼】提问,感谢【Python进阶者】、【论草莓如何成为冻干莓】、【瑜亮老师】、【甯同学】、【Yif18】给出的思路和代码解析,感谢【eric】等人参与学习交流。
