当前位置: 首页 > news >正文

2023.12.31 Python 词频统计

练习:使用Python中的filter、map、reduce实现词频统计

样例数据:

hello world java python
java java hadoop spark
spark python

需求分析:

1- 文件中有如上的示例数据

2- 读取文件内容。可以通过readline()

3- 将一行内容切分得到多个单个的单词。并且对单词进行过滤filter

4- 数据结构转换:将单词放到字典中,

{

"java":1

}

5-从字典中取出key对应的次数,进行累加操作

6-最终就得到结果

 

方法1: 

with open('./word_count.txt',mode='w',encoding='utf8')as f:f.write("hello world java python java java hadoop spark spark python")

import re
from collections import Counter# 读取文件
with open('./word_count.txt', 'r') as file:text = file.read()# 将文本转换为小写,并去除标点符号和特殊字符
text = re.sub(r'[^\w\s]', '', text.lower())# 使用空格分割文本为单词列表
words = text.split()
# ['hello', 'world', 'java', 'python', 'java', 'java', 'hadoop', 'spark', 'spark', 'python']
# 统计词频
word_counts = Counter(words)
print(word_counts)
# Counter({'java': 3, 'python': 2, 'spark': 2, 'hello': 1, 'world': 1, 'hadoop': 1})

方法2:


# 1- 文件中有如上的示例数据
with open('wordcount.txt',mode='r',encoding='UTF-8') as file_obj:result_dict = {}while True:# 2- 读取文件内容。可以通过readline()line = file_obj.readline()if line=='':break# 3- 将一行内容切分得到多个单个的单词。并且对单词进行过滤filterword_list = line.split()# 3.1- 过滤数据word_list = filter(lambda word:word!='world',word_list)# print(list(word_list),type(list(word_list)))# 4- 数据结构转换map:将单词作为key,单词出现的次数作为valuefor word in word_list:exist_flag = (word in result_dict.keys())if not exist_flag:# 4.1- 如果单词在字典中不存在,直接新增一对key-value(1)word_num = 1else:# 4.2- 如果单词在字典中已经存在,那么将value+=1之后更新字典的value# 5-从字典中取出key对应的次数,进行累加操作word_num += 1result_dict[word] = word_num# 6-最终就得到结果print(result_dict)

http://www.lryc.cn/news/270435.html

相关文章:

  • day12--java高级编程:网络通讯
  • MongoDB聚合:$out
  • 一次奇葩的spin_lock_irq / spin_unlock_irq使用不当导致的系统卡死分析
  • 公司创建百度百科需要哪些内容?
  • qt中信号槽第五个参数
  • 模式识别与机器学习-SVM(线性支持向量机)
  • 【并行计算】GPU,CUDA
  • 计算机网络教案——计算机网络设备章节
  • 什么是SLAM中的回环检测,如果没有回环检测会怎样
  • ubuntu 通过文件设置静态IP、DNS、网关
  • mapboxgl 中热力图的实现以及给热力图点增加鼠标移上 popup 效果
  • golang并发安全-sync.map
  • 开发第一个SpringBoot程序
  • 2023年度总结—你是你的年度MVP吗?
  • Linux基础知识学习3
  • Leetcode5-在长度2N的数组中找出重复N次的元素(961)
  • openssl的 openssl.cnf配置文件详解
  • SpringBoot集成支付宝,看这一篇就够了。
  • 数据结构程序设计——哈希表的应用(2)->哈希表解决冲突的方法
  • 微信小程序开发系列-07组件
  • JavaScript 中 Set 和 Map 的区别
  • web前端之JavaScript
  • C# 图标标注小工具-查看重复文件
  • 浅谈冯诺依曼体系和操作系统
  • Good Bye 2023
  • 多开工具对手机应用响应速度的优化与改进
  • 文件批量整理,文件归类整理,文件批量归类
  • Python+Django+Mysql+SimpleUI搭建后端用户管理系统(非常详细,每一步都清晰,列举了里面所有使用的方法属性)
  • 【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】
  • 11|代理(上):ReAct框架,推理与行动的协同