python利用多种方式来统计词频(单词个数)


Posted in Python onMay 27, 2019

python的思维就是让我们用尽可能少的代码来解决问题。对于词频的统计,就代码层面而言,实现的方式也是有很多种的。之所以单独谈到统计词频这个问题,是因为它在统计和数据挖掘方面经常会用到,尤其是处理分类问题上。故在此做个简单的记录。

统计的材料如下:

document = [
  'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes',
 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the',
 'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into',
 'my', 'eyes', "you're", 'under']

直接使用dict来进行统计(遍历+循环)

word_count = {}
for word in document:
  if word in word_count:
    word_count[word] += 1
 else:
    word_count[word] = 1

更优雅的实现方式

#假如字典中不存在给定的键,则返回参数中提供的默认值;反之,则返回字典中保存的值。
for word in document:
  previous_count = word_count.get(word, 0)
  word_count[word] = previous_count + 1
#可以合并成一行
for word in document:
 word_count[word] = word_count.setdefault(word, 0) + 1

使用defalutdict来实现

# 使用collections中的defalutdict来实现,defalutdict是一种值可以默认设置的dict
from collections import defaultdict
word_count = defaultdict(int)
for word in document:
  word_count[word] += 1

使用Counter

word_counter = Counter(document)

Counter既然是一个计数器,那么它本身也就具有很多统计的方法。例如,最常见的词频统计的排序,可以获得前n个最高的词频。

# 返回前n个最高词频,以字典的形式
word_counter.most_common(n)

显然,使用defalutdict和Counter代码最简洁,更能符合python开发之道。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详尽讲述用Python的Django框架测试驱动开发的教程
Apr 22 Python
简单介绍Python的Django框架加载模版的方式
Jul 20 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Python读取mat文件,并保存为pickle格式的方法
Oct 23 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
Python中调用其他程序的方式详解
Aug 06 Python
python3 map函数和filter函数详解
Aug 26 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
在python中求分布函数相关的包实例
Apr 15 Python
浅谈Python类的单继承相关知识
May 12 Python
numpy中的ndarray方法和属性详解
May 27 #Python
numpy.linspace函数具体使用详解
May 27 #Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 #Python
Django框架设置cookies与获取cookies操作详解
May 27 #Python
numpy下的flatten()函数用法详解
May 27 #Python
详解numpy的argmax的具体使用
May 27 #Python
numpy.random模块用法总结
May 27 #Python
You might like
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
深入理解Javascript中的循环优化
2013/11/09 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
关于ES6尾调用优化的使用
2020/09/11 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
python实现决策树分类算法
2017/12/21 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
高三毕业生自我鉴定
2013/12/20 职场文书
名人演讲稿范文
2013/12/28 职场文书
计划生育宣传标语
2014/06/21 职场文书
班级活动总结格式
2014/08/30 职场文书
垂直极限观后感
2015/06/08 职场文书
婚宴来宾致辞
2015/07/28 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server