Python——词频统计
Python——词频统计
- 问题
- 解答
- 方法1(针对英文):
- 调用内置collections库
- 手撕代码法
- 方法2(针对中文):
- 单个文件
- 多文件批量操作
- 拓展延伸(词云图)
问题
统计每个单词出现的频率
解答
方法1(针对英文):
调用内置collections库
使用collections
库的collections.Counter()方法进行词频统计
import collections
songs = 'You raise me up so I can stand on mountains You raise me up to walk on stormy seas I am strong when I am on your shoulders You raise me up To more than I can be'
word_list = songs.split() # 字符串删除空格,输出为列表形式
print(collections.Counter(word_list))
print(dict(collections.Counter(word_list))) # 转换为字典格式,统计完成
输出:
优点:
调用python内置库,很快速的一个方法进行词频统计
缺点:
大小写不分(以上实例中“To”与“to”被识别为两个单词)
手撕代码法
songs = 'You raise me up so I can stand on mountains You raise me up to walk on stormy seas I am strong when I am on your shoulders You raise me up To more than I can be'
word_list = songs.split() # 字符串删除空格,输出为列表形式d = {}
for word in word_list:word = word.lower() # 单词改为小写版if word in d:d[word] += 1else:d[word] = 1
print(d)
输出:
方法2(针对中文):
单个文件
中文不同于英文,词是由一个一个汉字组成的,而英文的词与词之间本身就有空格,所以中文的分词需要单独的库才能够实现,常用的是jieba。我们以一份入党申请书进行分词,分词前如下图所示:
通过open打文本文件,使用读模式r,为避免编码错误,指定编码类型为utf-8。读取出来是一个大字符串,将这个大字符串存入变量txt。然后调用jieba进行分词。lcut的意思是切分词后再转换成列表("l"即表示list的首字母)。将切分后的词存入列表words。
import jieba
txt = open("入党申请书.txt", "r", encoding="utf-8").read()
words = jieba.lcut(txt)
print(words)
部分输出如下图:
由上图可见,结果基本是按照我们的汉字使用习惯来区分词的,不能组成词的字则是按单独一个字符串存放的。然后我们就需要将词和对应出现的次数统计出来。此处的代码与上面 “针对英文——手撕代码” 部分的思路核心一致。然后我们根据此出现的次数,降序排序,并查看前15个词的情况。
wordsDict = {} #新建字典用于储存词及词频
for word in words:if len(word) == 1: #单个的字符不作为词放入字典(其中包括标点)continueelif word.isdigit() == True: # 剔除数字continueelif word in wordsDict:wordsDict[word] +=1 #对于重复出现的词,每出现一次,次数增加1else:wordsDict[word] =1 wordsDict_seq = sorted(wordsDict.items(),key=lambda x:x[1], reverse=True) #按字典的值降序排序
# wordsDict_seq #此行代码便于从全部中选取不需要的关键词
wordsDict_seq[:15] # 查看前15个
声明:有一些为敏感词汇,为防止被和谐我做了打码处理!
可以看到,有些词并不是我们想要的,比如“一个”、“我要”、“20”。因此需要把这些意义不大的词删除。先定义一个储存要排除的词的列表stopWords,将想排除的词放进去,一般是放出现次数较多,但意义不大的词,可根据实际需要调整。然后遍历这个字典,在检查这些词是否在目标字典wordsDict中,如果在,就将字典中这个词对应的数据删除。
stopWords = ["我们","自己","还有","从不","起到","我要","不仅","一名","各种","半点","这是","没有","一个","自己","才能","随着"]
for word in stopWords:if word in wordsDict:del wordsDict[word] #删除对应的词wordsDict_seq = sorted(wordsDict.items(),key=lambda x:x[1], reverse=True) #按字典的值降序排序
wordsDict_seq[:15]
然后将筛选后的数据转换成DataFrame,并增加列名“词”和“次数”,然后导出为Excel文件。
df = pd.DataFrame(wordsDict_seq,columns=['词','次数'])
df.to_excel("入党申请书.xlsx",index = False) #存为Excel时去掉index索引列
df.head(10)
多文件批量操作
import os
# os.getcwd() #返回当前工作目录
path = '入党申请书' #文件所在文件夹,文件夹必须放在当前工作目录中
files = [path+"\\"+i for i in os.listdir(path)] #获取文件夹下的文件名,并拼接完整路径
files
以上,先获取到所有待分析文件的路径。然后逐个进行分析。稍微修改一下上面的程序,很快分析完成。结果如下。
import jieba
import pandas as pdfor file in files:txt = open(file, "r", encoding="utf-8").read()words = jieba.lcut(txt)wordsDict = {} #新建字典用于储存词及词频for word in words:if len(word) == 1: #单个的字符不作为词放入字典continueelif word in wordsDict:wordsDict[word] +=1 #对于重复出现的词,每出现一次,次数增加1else:wordsDict[word] =1 stopWords = ["我们","自己","20","还有","从不","起到","我要","不仅","一名","各种","半点","这是","没有","一个","自己","才能","随着"]for word in stopWords:if word in wordsDict:del wordsDict[word] #删除对应的词wordsDict_seq = sorted(wordsDict.items(),key=lambda x:x[1], reverse=True) #按字典的值降序排序df = pd.DataFrame(wordsDict_seq,columns=['词','次数'])df.to_excel("词频//{}.xlsx".format(file.split("\\")[1][:-4]),index = False) #存为Excel时去掉index索引列
拓展延伸(词云图)
https://blog.csdn.net/weixin_47282404/article/details/119916124
Python——词频统计相关推荐
- python词频统计(word ——> excel,含去重)
word资料处理 -------> 存入excel 精简地从word文档读取资料,分析后传入excel文档. 不是txt!因为我的电脑是mac,针对txt的乱码问题解决不了. 主要操作的思维导图 ...
- python 词频统计,分词笔记
Python的中文分词库有很多,常见的有: jieba(结巴分词) THULAC(清华大学自然语言处理与社会人文计算实验室) pkuseg(北京大学语言计算与机器学习研究组) SnowNLP pynl ...
- python词频统计代码_python统计词频
一.程序分析 (1)将文件读入缓冲区(dst指文本文件存放路径,设置成形参,也可以不设,具体到函数里设置) def process_file(dst): # 读文件到缓冲区try: # 打开文件 tx ...
- python词频统计完整步骤_Python中文文本分词、词频统计、词云绘制
本文主要从中文文本分词.词频统计.词云绘制方面介绍Python中文文本分词的使用.会使用到的中文文本处理包包括:wordcloud,jieba,re(正则表达式),collections. 1 准备工 ...
- python词频统计GUI(thinter)
本文介绍利用python实现了简单的词频统计程序,其中涉及了简单的正则表达式的使用和python可视化模块tkinter的使用.完成了选择任意的文件,然后统计其中的单词的出现频度并以列表的形式展现出来 ...
- python词频统计西游记_实例10-文本词频统计.pdf
Python语言程序设计 实例10: 文本词频统计 嵩 天 北京理工大学 "文本词频统计"问题分析 CC BY-NC-SA 4.0 嵩天 问题分析 文本词频统计 - 需求 :一篇文 ...
- python词频统计时、文件放哪里_初学python,词频统计小实验
最近突然对python感兴趣,就学了起来.我可怜的计算机基础只有VB,而且学的时候这门课还特别水,仅仅了解了语法,考试基本上是背题过的. 现在自学python还是比较吃力.今天捣鼓了一下午,搞出了一个 ...
- python词频统计实验报告_Python实验报告八
安徽工程大学Python程序设计 班级:物流191 姓名:汤振宇 学号:319050108 成绩: 日期:2020/06/04 指导老师:修宇 [实验目的] : 掌握读写文本文件或 CSV 文件,进而 ...
- python词频统计完整步骤_python实现词频统计(wordcount)函数
作为字典(key-value)的经典应用题目,单词统计几乎出现在每一种语言键值对学习后的必练题目,主要需求: 写一个函数wordcount统计一篇文章的每个单词出现的次数(词频统计).统计完成后,对该 ...
- Python词频统计之密信约定进攻时间
问题 假设你是小蔡,你和小徐同学一起穿越到了抗战时期,分别成为了八路军华北根据地A地和B地的联络员.此时,两地的八路军部队准备发动协同进攻,给予日寇重重一击.由于某些原因无法亲自送信,为了约定进攻时间 ...
最新文章
- PTA基础编程题目集-6-13 折半查找
- cv2.resize
- “全能”选手—Django 1.10文档中文版Part2
- 事务(Transaction)
- 【深度学习】pytorch-tensorflow-anaconda笔记
- 亚马逊手机端测评软件/PC端测评软件各有什么优缺点?
- Wireshark软件的安装,进行数据包的捕获【Wireshark安装使用】
- DirectShow学习
- 四、WebApp 基础可视组件(IVX 快速开发教程)
- oracle 删除时间段的,oracle SQL如何从日期中删除时间
- 2013阿里技术嘉年华:阿里数据同步前世今生
- mysql ndb 命令_Mysql入门基础命令
- oracle还原数据库及遇到的问题
- 【动态规划】P1057 传球游戏
- 【转】Java程序员最常用的8个Java日志框架
- MySQL字符串的拼接方法
- 计算机软件故障及其处理方法,计算机常见软件故障及其解决方法
- 数据的力量 |《2021—2022中国大数据行业发展报告》发布
- 3.6计算机网络(网络层概述 电路交换 报文交换 分组交换)
- linux免采集卡直播ps4,PS4游戏直播采集卡使用教程详解
热门文章
- solidworks图纸模板添加_如何建立符合国标的SolidWorks工程图模板
- EXCEL VBA 入门与实用例子
- 泛联新安EDA系列——国内自主研发,首款集成双国军标的HDL代码缺陷管理平台VHawk
- linux下删除服务
- 资源 | NJUPT-Yellow-Page 南邮黄页
- stm32车牌识别_道路千万条,方案这一条,带你深入了解车牌号识别系统
- SAP ABAP 教程大全之 01 面向初学者的 SAP ABAP介绍(含hello world 源码)
- hrm系统源码php,开源HRM源码系统下载
- 数据质量评价体系(附思维导图)
- zend studio php 运行,Zend Studio使用教程:使用PHP 7进行开发(一)