博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 统计词频后输出结果到Excel和txt文档
阅读量:4123 次
发布时间:2019-05-25

本文共 2427 字,大约阅读时间需要 8 分钟。

分词的应用场景还是蛮多的,比如电商里面的产品用户评价,每个商品的评价数很多,由于是大量的文本,需要从这些文本找出评价的关键字,这个时候分词就能派上用场;再比如,做文本分析,热点词统计都会用到分词。

整体思路就是利用python中的jieba库,对每一行文字进行分词处理,处理之后的结果放在list(列表)中。遍历列表,重复的值就计数,留下唯一的值作为key。

引用库

import jieba                      #分词import xlwt                       #Excel库import pandas as pd               #pandas库import matplotlib as mpl          #matplotlib库由各种可视化类构成from wordcloud import WordCloud   #词云import matplotlib.pyplot as plt  #matplotlib.pyplot是绘制各类可视化图形的命令字库,相当于快捷方式

配置

mpl.rcParams["font.sans-serif"] = ['Microsoft YaHei']#配置字体plt.rcParams["axes.labelsize"] = 16   #轴域大小plt.rcParams["xtick.labelsize"] =14   #x轴字体大小plt.rcParams["ytick.labelsize"] =14   #y轴字体大小plt.rcParams["legend.fontsize"]=12    #图例字体大小plt.rcParams["figure.figsize"]=[15,9] #图形大小

如果不清楚figure、axes、xtick等概念,可以看下图

读取文件

data =pd.read_excel('/Users/song/Documents/test.xlsx')data = pd.DataFrame(data)

处理文件

word_list = []#分词结果放在word_list列表中key_list = []#对word_list列表中的分词结果,进行循环处理,去重后的值作为keyfinal = ‘'  #自定义字符串,主要用来做词云stopwords = [',','。','、','!','(',')','(',')',',','.','!','1','2',' '] # 停止词for n in range(data.shape[0]):    seg_list = list(jieba.cut(data['计划事项'][n]))    for seg in seg_list:          if seg not in stopwords:                  final = final + seg + ' '                word_list.append(seg)

统计词频写入txt

word_dict={}#定义一个字典with open(r'/Users/song/Downloads/weiyi.txt','w') as fw:    for item in word_list:        if item not in word_dict:             word_dict[item] = 1        else:            word_dict[item] += 1    orderList=list(word_dict.values())    orderList.sort(reverse=True)    for i in range(len(orderList)):        for key in word_dict:            if word_dict[key]==orderList[i]:                fw.write(key+' '+str(word_dict[key])+'\n') #写入txt文档                key_list.append(key)                word_dict[key]=0

结果

客户 1238

拜访 1055
走访 1048
市场 687
服务 558
产品 500
技术 483
展会 405

写入Excel

wbk = xlwt.Workbook() #定义一个workbook对象sheet = wbk.add_sheet("wordCount")#新建一个sheet并命名for i in range(len(key_list)):    sheet.write(i, 1, label = orderList[i])    sheet.write(i, 0, label = key_list[i])wbk.save(r'/Users/song/Downloads/wordCount.xls’)

结果

生成词云

my_wordcloud = WordCloud(font_path='/Library/Fonts/Arial Unicode.ttf',width=1000,height=600).generate(final) #font_path指定中文编码,否则不能显示中文 plt.imshow(my_wordcloud)   #显示词云plt.axis('off')            #关掉坐标轴plt.savefig(r'/Users/song/Downloads/ciyun.png') #保存生成的词云图plt.show()

结果类似下图,我隐去了真实案例生成的词云图

你可能感兴趣的文章
以端正的态度学习业务知识
查看>>
考试成绩随想
查看>>
基于多元实在论的软件设计方法
查看>>
随想-知识点
查看>>
随想-自动构建知识体系
查看>>
无关对错
查看>>
软件交互模式
查看>>
JTA、JTS各司其职,共职分布式事务
查看>>
EJB安全框架
查看>>
应用程序配置模式
查看>>
First blog in English
查看>>
English study tips
查看>>
性能问题算不算bug?
查看>>
非结构化数据存储
查看>>
dynamic query on sql
查看>>
查询速度慢
查看>>
SQL BCP命令
查看>>
经验的优势,多还是少?
查看>>
关于做事方式
查看>>
随想,在雨声中…
查看>>