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定时检查某个进程是否已经关闭的方法
May 20 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
Python实现扣除个人税后的工资计算器示例
Mar 26 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
哪些是python中web开发框架
Jun 17 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 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
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
PHP生成随机密码类分享
2014/06/25 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
Bootstrap插件全集
2016/07/18 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
python生成器表达式和列表解析
2016/03/10 Python
图文详解WinPE下安装Python
2016/05/17 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
python事件驱动event实现详解
2018/11/21 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
人事主管岗位职责范本
2013/12/04 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
采购员岗位职责
2015/02/03 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android