大家好,我是皮皮。
一、前言
前几天在Python最强白银交流群【王王雪饼】问了一个Python处理词频的问题,这里拿出来给大家分享下。
下图是他的代码:
# 统计词频
from collections import Counter
wordcount = Counter(all_words)
word_count = wordcount.most_common(30)
frequence_list = []
for i in range(len(word_count)):
frequence_list.append(word_count[i][0])
frequence_list
二、实现过程
这里【Python进阶者】给了一个答案,如下所示:
代码如下:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import sys
import jieba
import jieba.analyse
import xlwt # 写入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 = []
for line in open('./《都挺好》阿耐_分词后_outputs.txt', 'r', encoding='utf-8'): # 需要分词统计的原始目标文档
item = line.strip('\n\r').split('\t') # 制表格切分
# print item
tags = jieba.analyse.extract_tags(item[0]) # jieba分词
for t in tags:
word_lst.append(t)
word_dict = {}
with open("分词结果.txt", 'w') as wf2: # 指定生成文件的名称
for item in word_lst:
if item not in word_dict: # 统计数量
word_dict[item] = 1
else:
word_dict[item] += 1
orderList = list(word_dict.values())
orderList.sort(reverse=True)
# print orderList
for i in range(len(orderList)):
for key in word_dict:
if word_dict[key] == orderList[i]:
wf2.write(key + ' ' + str(word_dict[key]) + '\n') # 写入txt文档
key_list.append(key)
word_dict[key] = 0
for i in range(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】等人参与学习交流。