python 大批量文本分词 以及词频统计 (高效处理案例)

2024-03-10 17:32

本文主要是介绍python 大批量文本分词 以及词频统计 (高效处理案例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境:python3.6

库:jieba,xlwt,xlwings,collections

 

前两天有个需求要对一张表里的中文语句进行分词,并统计每个词语出现的次数。

表格1231.xlsx大致内容如下:

由于表格内容过大,约有100W条数据,普通读取表格的方式效率非常慢,所以这次用的方法是xlwings,

xlwings是目前看来操作excel最快速、做的比较完善的一个库,优化很好,调用方式非常灵活。对读取大表格的有很高的效率

 

以下是完整的代码:

import jieba
import xlwt, xlrd
import xlwings as xw
from collections import Counter# 定义一个空列表
all_word_list = []# 分词
def trans_CN(text):# 接收分词的字符串word_list = jieba.cut(text)# 分词后在单独个体之间加上空格result = " ".join(word_list)# 转换成listresult = result.split(" ")return result# 判断词是否为中文
def is_Chinese(word):for ch in word:if '\u4e00' <= ch <= '\u9fff':return Truereturn Falsestart_row = 2  # 处理Excel文件开始行
end_row = 1000000  # 处理Excel结束行# 指定不显示地打开Excel,读取Excel文件
app = xw.App(visible=False, add_book=False)
wb = app.books.open(r"./1231.xlsx")  # 打开Excel文件
sheet = wb.sheets[9]  # 选择第0个表单# 读取Excel表单前1000000行的数据,读取Excel表单前1000000行的数据
for row in range(start_row, end_row):print(row)row_str = str(row)# 循环中引用Excel的sheet和range的对象,读取C列的每一行的值content_text = sheet.range('C' + row_str).value# print(content_text)if not content_text:continueif not isinstance(content_text, str):continue# 长度小于4的语句 过滤if len(content_text) > 3:word_list = trans_CN(content_text)print("分词后", word_list)# 判断列表元素是否为中文,将非中文词移除for s in word_list:if not is_Chinese(s):word_list.remove(s)all_word_list += word_list# 统计列表中元素出现的频率
counter = Counter(all_word_list)
print("统计频率完成")# 将列表中的元素按照频率大小排序
result_list = sorted(counter.items(), key=lambda x: x[1], reverse=True)# 将结果写入表格
print("开始写入表格")
myWorkbook = xlwt.Workbook()
mySheet = myWorkbook.add_sheet('Sheet1', cell_overwrite_ok=True)
rows = 0
for i in result_list:mySheet.write(rows, 0, i[0])mySheet.write(rows, 1, i[1])rows += 1
myWorkbook.save('result.xls')# 保存并关闭Excel文件
wb.save()
wb.close()

运行完成后,保存为result.xls,查看结果:

A列为分词,B列为该词出现的次数

这篇关于python 大批量文本分词 以及词频统计 (高效处理案例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/794970

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的