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——词频统计相关推荐

  1. python词频统计(word ——> excel,含去重)

    word资料处理 -------> 存入excel 精简地从word文档读取资料,分析后传入excel文档. 不是txt!因为我的电脑是mac,针对txt的乱码问题解决不了. 主要操作的思维导图 ...

  2. python 词频统计,分词笔记

    Python的中文分词库有很多,常见的有: jieba(结巴分词) THULAC(清华大学自然语言处理与社会人文计算实验室) pkuseg(北京大学语言计算与机器学习研究组) SnowNLP pynl ...

  3. python词频统计代码_python统计词频

    一.程序分析 (1)将文件读入缓冲区(dst指文本文件存放路径,设置成形参,也可以不设,具体到函数里设置) def process_file(dst): # 读文件到缓冲区try: # 打开文件 tx ...

  4. python词频统计完整步骤_Python中文文本分词、词频统计、词云绘制

    本文主要从中文文本分词.词频统计.词云绘制方面介绍Python中文文本分词的使用.会使用到的中文文本处理包包括:wordcloud,jieba,re(正则表达式),collections. 1 准备工 ...

  5. python词频统计GUI(thinter)

    本文介绍利用python实现了简单的词频统计程序,其中涉及了简单的正则表达式的使用和python可视化模块tkinter的使用.完成了选择任意的文件,然后统计其中的单词的出现频度并以列表的形式展现出来 ...

  6. python词频统计西游记_实例10-文本词频统计.pdf

    Python语言程序设计 实例10: 文本词频统计 嵩 天 北京理工大学 "文本词频统计"问题分析 CC BY-NC-SA 4.0 嵩天 问题分析 文本词频统计 - 需求 :一篇文 ...

  7. python词频统计时、文件放哪里_初学python,词频统计小实验

    最近突然对python感兴趣,就学了起来.我可怜的计算机基础只有VB,而且学的时候这门课还特别水,仅仅了解了语法,考试基本上是背题过的. 现在自学python还是比较吃力.今天捣鼓了一下午,搞出了一个 ...

  8. python词频统计实验报告_Python实验报告八

    安徽工程大学Python程序设计 班级:物流191 姓名:汤振宇 学号:319050108 成绩: 日期:2020/06/04 指导老师:修宇 [实验目的] : 掌握读写文本文件或 CSV 文件,进而 ...

  9. python词频统计完整步骤_python实现词频统计(wordcount)函数

    作为字典(key-value)的经典应用题目,单词统计几乎出现在每一种语言键值对学习后的必练题目,主要需求: 写一个函数wordcount统计一篇文章的每个单词出现的次数(词频统计).统计完成后,对该 ...

  10. Python词频统计之密信约定进攻时间

    问题 假设你是小蔡,你和小徐同学一起穿越到了抗战时期,分别成为了八路军华北根据地A地和B地的联络员.此时,两地的八路军部队准备发动协同进攻,给予日寇重重一击.由于某些原因无法亲自送信,为了约定进攻时间 ...

最新文章

  1. PTA基础编程题目集-6-13 折半查找
  2. cv2.resize
  3. “全能”选手—Django 1.10文档中文版Part2
  4. 事务(Transaction)
  5. 【深度学习】pytorch-tensorflow-anaconda笔记
  6. 亚马逊手机端测评软件/PC端测评软件各有什么优缺点?
  7. Wireshark软件的安装,进行数据包的捕获【Wireshark安装使用】
  8. DirectShow学习
  9. 四、WebApp 基础可视组件(IVX 快速开发教程)
  10. oracle 删除时间段的,oracle SQL如何从日期中删除时间
  11. 2013阿里技术嘉年华:阿里数据同步前世今生
  12. mysql ndb 命令_Mysql入门基础命令
  13. oracle还原数据库及遇到的问题
  14. 【动态规划】P1057 传球游戏
  15. 【转】Java程序员最常用的8个Java日志框架
  16. MySQL字符串的拼接方法
  17. 计算机软件故障及其处理方法,计算机常见软件故障及其解决方法
  18. 数据的力量 |《2021—2022中国大数据行业发展报告》发布
  19. 3.6计算机网络(网络层概述 电路交换 报文交换 分组交换)
  20. linux免采集卡直播ps4,PS4游戏直播采集卡使用教程详解

热门文章

  1. solidworks图纸模板添加_如何建立符合国标的SolidWorks工程图模板
  2. EXCEL VBA 入门与实用例子
  3. 泛联新安EDA系列——国内自主研发,首款集成双国军标的HDL代码缺陷管理平台VHawk
  4. linux下删除服务
  5. 资源 | NJUPT-Yellow-Page 南邮黄页
  6. stm32车牌识别_道路千万条,方案这一条,带你深入了解车牌号识别系统
  7. SAP ABAP 教程大全之 01 面向初学者的 SAP ABAP介绍(含hello world 源码)
  8. hrm系统源码php,开源HRM源码系统下载
  9. 数据质量评价体系(附思维导图)
  10. zend studio php 运行,Zend Studio使用教程:使用PHP 7进行开发(一)