python3 词频统计计数分析+可视化词云 jieba+wordcloud 数据分析

news/2024/5/3 11:28:05/文章来源:https://blog.csdn.net/u012874140/article/details/126647341

hi, 大家好,我是宋哈哈,今天分享一个利用 python 的 jieba 库 和 wordcloud 词云库 做一个字符串的词频分析和词云可视化

编程环境:

        python 版本:3.6.8

        编辑器:pycharm 2020.1.3 专业版

        系统环境:win10 专业版


       

一、在写代码前,需要准备的是 一个做词云的图片,可以百度找,可以自己用PS设计。也可以保存我下方的图片:保存名为 bj.jpg ---> 切记重命名。

 二、在编辑器中 新建一个目录叫 “datafile”,用来保存生成好的 EXCEL 和 词云图片。

 三、新建一个 文本文档 后缀为 txt,名为 ci.txt, 用来存储被 统计的字符串。【不用在乎是否换行】

首先是导入库:如果运行报错的,请 自己安装。

#encoding:utf-8
import re # 正则表达式库
import collections # 词频统计库
import numpy as np # numpy数据处理库
import jieba # 结巴分词
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库
from matplotlib import colors
import csv
import pandas as pd

内容代码:


datalist = []excelFilename = 'H列' # 保存文件名称def wordFrequency():# 读取文件fn = open('ci.txt', 'rt', encoding='utf-8')  # 打开文件string_data = fn.read()  # 读出整个文件fn.close()  # 关闭文件# 文本预处理pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')  # 定义正则表达式匹配模式string_data = re.sub(pattern, '', string_data)  # 将符合模式的字符去除# 文本分词seg_list_exact = jieba.cut(string_data, cut_all=False)  # 精确模式分词object_list = []remove_words = [u'的', u',', u'和', u'是', u'随着', u'对于', u'对', u'等', u'能', u'都', u'。', u' ', u'、', u'中', u'在', u'了',u'通常', u'如果', u'我们', u'需要']  # 自定义去除词库for word in seg_list_exact:  # 循环读出每个分词if word not in remove_words:  # 如果不在去除词库中if len(word) > 2:  # 筛选关键词长度print(word, len(word))object_list.append(word)  # 分词追加到列表# 词频统计word_counts = collections.Counter(object_list)  # 对分词做词频统计word_counts_top = word_counts.most_common(200)  # 获取前200最高频的词for words in word_counts_top:data = [words[0], words[-1]]datalist.append(data)# 建立颜色数组,可更改颜色color_list = ['#0000FF', '#CC0033', '#333333']# 调用colormap = colors.ListedColormap(color_list)# 词频展示mask = np.array(Image.open('bj.jpg'))  # 定义词频背景wc = wordcloud.WordCloud(font_path='C:/Windows/Fonts/simhei.ttf',  # 设置字体格式mask=mask,  # 设置背景图max_words=200,  # 最多显示词数max_font_size=100,  # 字体最大值background_color='white',colormap=colormap,random_state=18)wc.generate_from_frequencies(word_counts)  # 从字典生成词云# image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案# wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案wc.to_file(f'datafile/{excelFilename}.jpg')plt.imshow(wc)  # 显示词云plt.axis('off')  # 关闭坐标轴plt.show()  # 显示图像

把统计出来的词频保存为 EXCEL 文件:


def saveExcels():df = pd.DataFrame(datalist,columns=['词语','词频次数'])df.to_excel(f'datafile/{excelFilename}.xlsx')

运行代码:

if __name__ == '__main__':wordFrequency()saveExcels()

完整代码,复制即可用:

#encoding:utf-8
import re # 正则表达式库
import collections # 词频统计库
import numpy as np # numpy数据处理库
import jieba # 结巴分词
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库
from matplotlib import colors
import csv
import pandas as pddatalist = []excelFilename = 'H列' # 保存文件名称def wordFrequency():# 读取文件fn = open('ci.txt', 'rt', encoding='utf-8')  # 打开文件string_data = fn.read()  # 读出整个文件fn.close()  # 关闭文件# 文本预处理pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')  # 定义正则表达式匹配模式string_data = re.sub(pattern, '', string_data)  # 将符合模式的字符去除# 文本分词seg_list_exact = jieba.cut(string_data, cut_all=False)  # 精确模式分词object_list = []remove_words = [u'的', u',', u'和', u'是', u'随着', u'对于', u'对', u'等', u'能', u'都', u'。', u' ', u'、', u'中', u'在', u'了',u'通常', u'如果', u'我们', u'需要']  # 自定义去除词库for word in seg_list_exact:  # 循环读出每个分词if word not in remove_words:  # 如果不在去除词库中if len(word) > 2:  # 筛选关键词长度print(word, len(word))object_list.append(word)  # 分词追加到列表# 词频统计word_counts = collections.Counter(object_list)  # 对分词做词频统计word_counts_top = word_counts.most_common(200)  # 获取前200最高频的词for words in word_counts_top:data = [words[0], words[-1]]datalist.append(data)# 建立颜色数组,可更改颜色color_list = ['#0000FF', '#CC0033', '#333333']# 调用colormap = colors.ListedColormap(color_list)# 词频展示mask = np.array(Image.open('bj.jpg'))  # 定义词频背景wc = wordcloud.WordCloud(font_path='C:/Windows/Fonts/simhei.ttf',  # 设置字体格式mask=mask,  # 设置背景图max_words=200,  # 最多显示词数max_font_size=100,  # 字体最大值background_color='white',colormap=colormap,random_state=18)wc.generate_from_frequencies(word_counts)  # 从字典生成词云# image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案# wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案wc.to_file(f'datafile/{excelFilename}.jpg')plt.imshow(wc)  # 显示词云plt.axis('off')  # 关闭坐标轴plt.show()  # 显示图像def saveExcels():df = pd.DataFrame(datalist,columns=['词语','词频次数'])df.to_excel(f'datafile/{excelFilename}.xlsx')if __name__ == '__main__':wordFrequency()saveExcels()

如果对你有用,别忘记收藏至浏览器收藏夹。感谢阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_381816.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用聚类(K-means)分析方法对骑手进行分类标签定义

什么是聚类分析 聚类分析的目标就是在相似的基础上收集数据来分类,属于无监督学习。就是通过行为数据,通过算法将相似的人群聚集在一起,形成不带标签的人群簇。再人为的对人群簇进行分析,寻找特征标签。 一、数据构建 根据骑手的…

电脑重装系统开机后运行慢怎么办

小编就给大家分享四个电脑运行慢的方法,可以选择适合自己的方法去使用,一般情况都是可以解决掉电脑开机后运行慢的问题,我们接着看看吧。 还有其它的电脑重装系统方法 工具/原料: 系统版本:windows7系统 品牌版本&a…

Leetcode题解——30. 包含min函数的栈(辅助栈思想)

题目地址:剑指 Offer 30. 包含min函数的栈 - 力扣(LeetCode) 目录 一.算法思想 二.代码实现 三.拓展思考 首先说结论,这道题虽然难度不大,但是算法思想很重要,是辅助栈应用的生动实例。 所以&#xff…

(10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】

(1)工业界推荐系统-小红书推荐场景及内部实践【业务指标、链路、ItemCF】 (2)工业界推荐系统-小红书推荐场景及内部实践【UserCF、离线特征处理】 (3)工业界推荐系统-小红书推荐场景及内部实践【矩阵补充、…

VSCode 配置 C++ 环境

开学了,后面更新速度会更慢,望周知。 接上回: https://blog.csdn.net/orangebench11/article/details/126111356 先说一下, 这个教程不是给完整json复制粘贴, 是要跟教程配置 (放心, 大部分配置都很简单)。 安装VSCode 官网: Visual Studio Code - C…

2021年研究生数模B题论文记录

2021年研究生数模B题论文记录1.常见数据处理方法:2.相关性系数选择3.聚类算法4.一种数据降维方式5.预测模型文章来源 2021年全国大学生研究生数学建模竞赛优秀论文集合,B题,文章编号:B21100130067 1.常见数据处理方法:…

Golang高性能日志库zap + lumberjack 日志切割组件详解

文章篇幅较长,可以先收藏防止迷路~ 目录zap日志库1. why zap?2. 简单使用3. 自定义logger例子4. Gin项目使用zap6. lumberjack 日志切割组件zap日志库 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中&a…

Java刷题面试系列习题(六)

文章目录前言Java题目练习⭕题目一: 统计一句话中重复单词的个数🌟代码演示💯思路解析⭕题目二: map简单应用🌟代码演示💯思路解析⭕题目三: 集合排序🌟代码演示💯思路解…

分享查题公众号制作过程

分享查题公众号制作过程 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 题库:题库后台(点击跳转&#xf…

不要再把数据可视化搞成表面工程,论数据可视化的正确逻辑

日前,我国网民规模达10.51亿的消息上了热搜,点进去看才发现是中国互联网络信息中心(CNNIC)发布了最新的《中国互联网络发展状况统计报告》,其中有很多值得思考的信息,也为未来发展指明了大的方向。就比如网…

Linux内核设计与实现 第一章 Linux内核简介

1.1Unix的历史 1969,贝尔实验室的程序员Dennis Ritchie 和Ken Thompsin等,编写Multics失败,不甘心没有交互式操作系统,设计了一个文件系统原型,这个原型最终演化成了Unix。 Unix系统设计简洁,发布时提供源代码&#x…

AviX Ergo 改善工作条件的视觉人体工程学

随着装配线的要求越来越复杂,人体工程学正成为关注的焦点。AviX Ergo 通过视频评估带来了一种全新的方法来改善工作场所的人体工程学。 AviX Ergo 将 AviX 方法对工作场所的深入分析与公认的 Borg CR-10 量表相结合,以确定工作场所的生理压力水平,同时评估心理压力。 1、BOR…

uniapp一键生成iOS通用链接

第一步:开启Associated Domains服务 登录苹果开发者中心 ,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启Associated Domains服务 开启Associated Domains服务后需要重新生成profile文…

即时零售加速布局,社区团购的优势依旧非常明显

新零售业态不断发展,线上便捷性和个性化推荐优势逐步放大,线下渠道智能化水平持续提升,线上线下渠道趋向深度融合。即时零售、无接触消费和直播带货等新消费场景加快布局并保持发展势头。随着社会环境的变化以及购物需求的旺盛刺激&#xff0…

跨越技术鸿沟,革新存储产业:华瑞指数云重磅发布下一代软件定义存储产品

2022年8月31日,由华瑞指数云(ExponTech)主办的“全自研下一代软件定义存储产品体验沙龙”在北京圆满举办。发布会现场,华瑞指数云重磅推出全自研极速分布式块存储产品WDS 。这是继2021年11月24日该公司在中国数据与存储峰会发布Wi…

Django之路由层

目录 django请求生命周期流程图 路由匹配 分组命名匹配 无名分组 有名分组 传递额外的参数给视图函数 命名URL 和 URL反向解析 命名URL URL反向解析--前端 URL反向解析---后端 无名分组反向解析 有名分组反向解析 路由分发 名称空间 django请求生命周期流程图 dj…

Tomcat的安装与优化

目录 一、安装Tomcat所需javajdk环境 ①安装jdk ②设置jdk环境变量 ③加载生效,查看版本 二、安装Tomcat ①解压 ②改名,移动位置 ③优化管理 ④启动关闭 ⑤浏览器进入本地地址,添加8080端口即可进入tomcat服务器 三、优化tomcat启动…

什么是伪共享?Java8如何使用@sun.misc.Contended避免伪共享?

什么是伪共享 缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无…

网课搜题公众号接口 大学生新手使用必备

网课搜题公众号接口 大学生新手使用必备 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后…

风控模型黑箱可解释,试下这个方法来演示

模型的开发,目前在互金领域场景中因为变量多,开发周期短,目前用得最多的就是XGB、LGB这类的机器学习模型。 比如我们之前跟大家输出的关于个人信贷反欺诈评分卡的开发内容里,我们用的就是lightgbm来建模的,相关的操作细…