python绘制词云图

利用python制作词云图 词云图是一种为了文本数据的视觉表示,由词汇组成类似云的彩色图形,当需要统计文本中出现词汇的规模大小时,我们可以使用此类图形。本文将介绍如何用python代码制作词云图。 阅读详情
AI摘要

本文介绍使用Python的WordCloud等库绘制词云图的方法。涵盖环境配置与数据准备,如安装依赖库、设置字体路径等;数据加载与处理,包括读取Excel数据、去重、分词并去停用词;TF - IDF关键词提取;以及词云图绘制,可生成整体和各类别产品评论词云图。

前言

本文详细介绍了如何使用Python的WordCloud等库绘制词云图,包括分词、去停用词等基本数据处理以及图片保存等操作。

具体操作步骤

一、环境配置与数据准备

1.1 安装依赖库

首先,确保已经安装了所需的库:

pip install pandas scikit-learn wordcloud matplotlib jieba openpyxl
1.2 导入模块

接着,导入我们所需要用到的库:

import pandas as pd  # 导入pandas库用于数据处理
from sklearn.feature_extraction.text import TfidfVectorizer  # 导入TfidfVectorizer用于计算TF-IDF值
from collections import Counter  # 导入Counter用于统计词频
import numpy as np  # 导入numpy库用于数值运算
from wordcloud import WordCloud, ImageColorGenerator  # 导入WordCloud用于生成词云
import matplotlib.pyplot as plt  # 导入matplotlib.pyplot用于绘图
import os  # 导入os库用于文件操作
from PIL import Image, ImageDraw, ImageFont  # 导入PIL库中的模块用于图像处理
import jieba  # 导入jieba库用于中文分词
1.3 设置字体路径

设置字体路径以便在生成词云图时能够正常显示中文:

font_path = 'simhei.ttf'  # 设置字体路径
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为SimHei
1.4 定义输出目录

定义输出目录路径,如果该目录不存在,就创建输出目录,便于保存绘制的词云图:

output_dir = 'wordcloud_images'  # 定义输出目录路径
os.makedirs(output_dir, exist_ok=True)  # 创建输出目录,如果目录已存在则忽略

二、数据加载与处理

2.1 读取Excel数据

这里需要将'韩束.xlsx' 修改为自己的文件路径。

input_file = '韩束.xlsx'  # 定义输入文件路径
df = pd.read_excel(input_file)  # 读取Excel文件到DataFrame中
2.2 去重

id是不同评论者的唯一标识,这里我们将id和comment均相同的数据视为重复的评论数据,进行去重操作:

df.drop_duplicates(subset=['id', 'comment'], inplace=True)  # 去除重复的评论
2.3 分词并去停用词

接着我们使用jieba进行中文评论分词,并导入停用词表,对分词后的数据进行去停用词操作,最后将结果用空格连接成一个字符串,并存储在新列 comment_tokenized 中。由于存在一些纯数字或纯字母等的无效评论数据,去停用词后可能评论数据为空,因此还需要过滤掉处理后为空字符串的行。jieba库的三种分词模式分别是精确模式、全模式和搜索引擎模式:

分词模式特点适用场景使用
精确模式尝试将文本精确地切分成词语,不存在冗余数据。适合文本分析和挖掘等任务。 jieba.cut(text,cut_all=False)
全模式将文本中所有可能的词语都分出来,速度非常快,但存在冗余数据。适用于一些对速度要求比较高的场景。jieba.cut(text,cut_all=True)
搜索引擎模式在精确模式的基础上,对长词再次进行切分,以提高召回率。适合搜索引擎分词。jieba.cut_for_search(text)
# 读取停用词表
with open('cn_stopwords.txt', 'r', encoding='utf-8') as f:
    stopwords = set(f.read().splitlines())  # 读取停用词并存入集合

# 分词函数
def tokenize(text):
    words = jieba.lcut(text)  # 使用jieba进行分词
    filtered_words = [word for word in words if word not in stopwords]  # 去除停用词
    return ' '.join(filtered_words)  # 将结果用空格连接

# 对评论进行分词处理
df['comment_tokenized'] = df['comment'].apply(tokenize)  # 应用分词函数到每一行评论

# 过滤掉空字符串的行
df = df[df['comment_tokenized'] != '']

三、TF-IDF关键词提取

首先定义一个函数 compute_tfidf 来计算TF-IDF值,然后对处理后的评论数据,通过调用该函数来获取每个词汇的TF-IDF得分总和。接着创建一个包含词汇和TF-IDF得分的数据框,并按TF-IDF得分进行降序排序,提取前300个重要的词汇。(如果希望词云图更加简洁,仅显示最重要的词汇,可以不断缩小‘300’这个数)

def compute_tfidf(data_chunk):
    vectorizer = TfidfVectorizer(max_features=500)  # 初始化TfidfVectorizer对象,最大特征数为500
    tfidf_matrix = vectorizer.fit_transform(data_chunk)  # 计算TF-IDF矩阵
    feature_names = vectorizer.get_feature_names_out()  # 获取特征名称(即词汇)
    sum_tfidf_scores = np.asarray(tfidf_matrix.sum(axis=0)).flatten()  # 计算每个词汇的TF-IDF得分总和
    return feature_names, sum_tfidf_scores  # 返回词汇及其对应的TF-IDF得分总和
# 直接对整个数据集进行TF-IDF计算
feature_names, sum_tfidf_scores = compute_tfidf(df['comment_tokenized'])
feature_df = pd.DataFrame({'Word': feature_names, 'TF-IDF Score': sum_tfidf_scores})  # 创建包含词汇和TF-IDF得分的数据框
feature_df = feature_df.sort_values(by='TF-IDF Score', ascending=False).reset_index(drop=True)  # 按TF-IDF得分降序排序
top_300_features = feature_df.head(300)  # 获取前300个重要词汇
word_freq_dict = dict(zip(top_300_features['Word'], top_300_features['TF-IDF Score']))  # 创建词汇和TF-IDF得分的字典

四、词云图绘制

4.1 定义生成词云图的函数

首先定义一个函数 generate_wordcloud 来生成词云图像,并保存到指定文件中。WordCloud参数及其描述如下:

参数描述
width指定词云对象生成图片的宽度,默认400像素
height指定词云对象生成图片的高度,默认200像素
min_font_size指定词云中字体的最小字号,默认4号
max_font_size指定词云中字体的最大字号,根据高度自动调节
font_step指定词云中字体字号的步进间隔,默认为1
font_path指定字体文件的路径,默认None
max_words指定词云显示的最大单词数量,默认200
stop_words指定词云的排除词列表,即不显示的单词列表
mask指定词云形状,默认为长方形,需要引用imread()函数
background_color指定词云图片的背景颜色,默认为黑色
contour_width指定词云中每个单词轮廓的宽度。
contour_color指定词云中每个单词轮廓的颜色。
def generate_wordcloud(word_freq_dict, font_path=None, title="评论词云图", filename="overall_wordcloud.png"):
    if font_path is None:
        try:
            font_path = 'simhei.ttf'  # 设置字体路径
            ImageFont.truetype(font_path)  # 检查字体是否存在
        except IOError:
            print("不存在 simhei.ttf 字体")  # 如果找不到字体,则打印提示信息
            font_path = None
    wordcloud = WordCloud(
        font_path=font_path,
        width=800,
        height=400,
        background_color='white',
        contour_width=3,
        contour_color='steelblue'
    ).generate_from_frequencies(word_freq_dict)  # 根据频率生成词云
    plt.figure(figsize=(10, 5))  # 创建一个新的图形
    plt.imshow(wordcloud, interpolation='bilinear')  # 显示词云图像
    plt.title(title)  # 设置图形标题
    plt.axis('off')  # 关闭坐标轴
    plt.savefig(os.path.join(output_dir, filename), bbox_inches='tight')  # 保存图像到文件
    plt.close()  # 关闭图形
4.2 生成整体评论词云图

调用 generate_wordcloud 函数生成整体评论词云图并保存到 wordcloud_images 目录下。

generate_wordcloud(word_freq_dict, title="评论词云图", filename="overall_wordcloud.png")  # 生成整体评论词云
4.3 生成各类别产品评论词云图

遍历所有类别,分别生成每个类别的评论词云图并保存到 wordcloud_images 目录下。首先根据“catagory”列获得所有类别的名称,然后将全部评论按照各类别进行分类合并,接着和整体评论的处理方式相同,对每个类别的评论分别计算各词汇在各类别评论的TF-IDF值,并降序排列,取前300个特征词生成相应的词云图。

# 处理每个类别
categories = df['catagory'].unique()  # 获取所有类别
for category in categories:
    category_comments = ' '.join(df[df['catagory'] == category]['comment_tokenized'])  # 合并同类别的评论
    if category_comments.strip():  # 确保有非空评论
        feature_names, sum_tfidf_scores = compute_tfidf([category_comments])  # 计算该类别的TF-IDF值
        feature_df = pd.DataFrame({'Word': feature_names, 'TF-IDF Score': sum_tfidf_scores})  # 创建包含词汇和TF-IDF得分的数据框
        feature_df = feature_df.sort_values(by='TF-IDF Score', ascending=False).reset_index(drop=True)  # 按TF-IDF得分降序排序
        top_300_features = feature_df.head(300)  # 获取前300个重要词汇
        category_word_freq_dict = dict(zip(top_300_features['Word'], top_300_features['TF-IDF Score']))  # 创建词汇和TF-IDF得分的字典
        generate_wordcloud(category_word_freq_dict, title=f"{category}类别词云图", filename=f"{category}_wordcloud.png")  # 生成类别词云

结语

如果大家觉得有帮助,请多多点赞收藏支持一下,谢谢大家。如果遇到什么问题,也非常欢迎大家私信。

使用 Python 绘制词云图的详细教程 词云图(Word Cloud)是数据可视化中常用的一种技术,通过将文字以不同的大小、颜色和方向排列,以展示文本数据中词汇的频次和重要性。对于文本分析、情感分析、关键词提取等应用,词云图都能够直观地展现信息。本文将详细介绍如何使用 Python 中的 wordcloud 库从 Excel 数据绘制词云图,帮助您快速上手词云图的生成和定制化。 阅读详情

相关推荐

Python绘制基础词云图

用python制作词云图

hu20100913的博客 6386

python制作词云图

前段时间,在上课的时候,老师发布了一个在线讨论,后面,老师把所有同学的回答结果展示了出来,不同颜色和不同大小,这样就一目了然看出了同学们回答的最多的是哪些关键词,这让我对词云图产生了兴趣,于是参考了下面博主代码,自己做了测试。2.安装相关包:打开Anaconda Powershell Prompt。上面这个链接是我获取文本内容的地方,下面是我复制下来的文本内容。1.运行工具:jupyter,无版本、环境要求。3.运行代码:记得修改文本打开路径和保存路径。

m0_51863774的博客 1万+

用Python绘制词云图

前言 词云图是数据分析中比较常见的一种可视化手段。 正好,Python下也有一款词云生成库,word_cloud:https://github.com/amueller/word_cloud 基于我之前爬取的微博数据,制作了一批词云图,由此来讲讲此模块的使用。 一、分词 1.1 制作停止词库 分词之前先准备一下停止词,因为中文中有很多的语气词啊,副词啊等,对于我们展现词频热度是无意

真新镇的涅法雷姆 2万+

python中的词云图

wordcloud 是什么?词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现词云图过滤掉大量的低频低质的文本信息使得浏览者只要一眼扫过文本就可领略文本的主旨。

m0_73282576的博客 9931

Python pyecharts绘制词云图

一、pyecharts绘制词云图WordCloud.add()方法简介 WordCloud.add()方法简介 add(name,attr,value, shape="circle", word_gap=20, word_size_range=None, rotate_step=45) name str 图例名称 attr list 属性名称 value list 属性所对应的值 shape 词云图轮廓 对应属性可选'circle', 'rect', 'roundRect', 'tria

slw213106的博客 4405

使用Python绘制词云图(自定义形状)

1.使用Python需要事先准备的包 from wordcloud import WordCloud import os from os import path import matplotlib.pyplot as plt import jieba from imageio import imread 2.准备一个词云图的背景图片 就是想把词云图生成什么样子的背景,比如下图: 3.代码如下 from wordcloud import WordCloud import os from os

Miracle.Zhao的博客 1万+

python词云图_pyecharts绘制词云图

1 词云图词云图统计一篇文章或一段文字中单词出现次数,如下所示统计的结果words,其中Python出现100次,C++出现80次.words = [ ("Python", 100), ("C++", 80), ("Java", 95), ("R", 50), ("JavaScript", 79), ("C", 65)]2 导入库使用pyecharts...

weixin_39994806的博客 1090

Python绘制词云图wordcloud

假设文本内容为如下所示: 三支决策聚类理论模型与方法研究基于三支决策的微博中文反语识别研究数据分析的三层与三支属性约简系统研究基于决策粗糙集的模糊多分类三支决策方法与应用研究三支决策空间理论研究面向复杂数据的多粒度三支决策研究三支概念格构建理论与方法三支决策不确定性度量与精准推理研究中医人体健康状态辨识三支决策问题研究直觉模糊信息下的三支决策粗糙集方法及知识获取研究在线流计算背景下的三支决策迁移...

YiBochun-Blog 1762

用Python绘制了若干张词云图,惊艳了所有人

在数据可视化图表中,词云图的应用随处可见。它通常是对输入的一段文字进行,然后以,简洁直观高效.今天我就来分享一下在Python如何绘制出来精湛的词云图。

Python数据挖掘 1万+

用Python绘制词云图——表白为我们拼过命的白衣天使

每天从各方的消息中听取医生和冠状病毒抗战的感人事迹,也有那么多的医生因为保护我们,献出了自己的生命。希望逝者安息,活者坚强,所有健在的医生和我国同胞万众一心,早日战胜病毒。静待春暖花开,万物复苏。

阿黎逸阳的博客 5278

【JESD79-5之】11 IDD, IDDQ, IPP规格参数和测试条件(IDD, IDDQ, IPP Specification Parameters and Test conditions)

【代码】【JESD79-5之】11 IDD, IDDQ, IPP规格参数和测试条件(IDD, IDDQ, IPP Specification Parameters and Test conditions)

m0_61126667的博客 4857

使用 Python的Pyecharts 绘制词云图

通过以上步骤,我们展示了如何使用 Pyecharts 绘制词云图。我们使用了 Pyecharts 内置的词云图功能,结合 Python 字典数据生成词频数据,并通过配置图表样式,最终生成了一个包含关键词和频率的美观词云图。你可以根据自己的需求修改词频数据、调整图表样式,生成适合自己需求的词云图。这种可视化方法非常适合用来展示文本数据中的重要信息。

分享人工智能领域原创文章 2077

戴维南和诺顿定理到底怎么选?一个实际维修案例讲透两种等效电路用法

本文通过工业电源模块维修案例,详细解析戴维南和诺顿定理在实际电路分析中的选择策略。针对电压敏感型故障、电流分配问题及功率传输异常,提供三大黄金法则,帮助工程师高效选择等效电路方法,提升故障排查效率。特别强调诺顿定理在电流分析中的优势。

weixin_31854867的博客 357

Python绘制词云图

1.用到的一些包,如下 import jieba import collections import re from pyecharts.charts import WordCloud from pyecharts.globals import SymbolType from pyecharts import options as opts from pyecharts.globals import ThemeType 如果在运行中提示你没有的包,可以使用下面的镜像链接在cmd窗口下安装: pip

weixin_45109684的博客 3173

MATLAB对pcap文件抓包的读取

应用范围 常用的雷达信号,无线网通信信号的格式大多为pcap、wj文件,这里记录一下MATLAB读取pcap文件的方法,具体处理过程及读取协议针对不同的雷达有不同的处理方式,在这里不做说明。 程序 clc;clear;close all; %% 文件位置 filename= 'E:\File\JOB\JOB_1\data.pcap'; fid = fopen(filename,'r'); % 打开包 tmpPack = fread(fid,1350); % 只读前1350个数 读到

诗酒趁年华的博客 3579

Nmap的介绍、安装 并进行网络扫描

Nmap概述 Nmap(Network Mapper(网络映射器))是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。 正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Cheney ' blog 2万+

python 可以用excel做词云图嘛_python绘制中文词云图

1. 明确任务最近学习过程中看到很多分析报告中都有运用到可视化的词云,也有看到五花八门的工具教程,刚好有一份《都挺好》电视剧的弹幕源数据。便决定用这份数据尝试使用python绘制词云。任务内容1. 在python中读取excel文件(《都挺好》弹幕源数据.xlsx)提取出弹幕内容2. 对弹幕内容文本进行结巴分词,设置并过滤掉停用词3. 使用wordcloud 将分词得到的词汇统计绘制词云图涉及难点...

weixin_35953861的博客 4828

ardupilot开发 --- mavlink签名加密 篇

ardupilot开发 --- mavlink签名加密

记录老板的每次pua,分享领导每天的毒鸡汤... 1236

用Python绘制了若干张词云图,超级惊艳

在数据可视化图表中,word cloud map的应用随处可见。它通常提取输入文本的词频,然后根据词频显示高频词。它简单、直观、高效。今天,让我们分享如何用Python绘制一个出色的词云。

m0_59485658的博客 6305

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7924

SAR图像去斑(Despeckling)研究的主流开源数据集

这些数据集专门用于训练监督学习去斑模型,提供了配对的含斑SAR图像和对应的无噪声参考图像(Ground Truth)。这些数据集主要用于目标检测/识别,但包含原始SAR图像,可用于。由于缺乏真实无噪声SAR图像,许多研究采用。

VectorShift的博客 128

基于Python的特定形状透明背景词云图绘制

基于Python的特定形状透明背景词云图绘制1.需求分析2.前期准备2.1文本文件准备2.2特定形状图片准备3.代码解析与实现3.1模块库的导入3.2停用词表3.3基于TF-IDF提取关键词3.4利用wordcloud绘制词云图4.附录4.1完整代码4.2提取的关键词4.3生成的词云图4.4停用词库5.致谢 1.需求分析 1.1 对包含中文的文本文件(某本科毕业论文)提前关键词并绘制词云图; 1.2 绘制的词云图不含有虚词; 1.3 词云图为透明背景的特定形状。 2.前期准备 2.1文本文件准备 将所需要绘

weixin_51261221的博客 5576

【虚幻引擎UE】UE5 四步骤实现AI漫游与对话行为(含工程源码)

【虚幻引擎UE】UE5 四步骤实现AI漫游与对话行为(含工程源码)

灵境引路人 3227

python 词频统计_用Python绘制词云图(词频统计)

用Python绘制词云图其实,想搞这个词云图的原因,是看到好多数据可视化的图表里面,好多大咖都用到了词云图,看的眼馋,所以就决定自己把它学会,因为空暇时间有限,加上本人脑子比较笨,硬是啃了将近一星期的时间才搞定。为了加深自己印象,决定写下来,话不多少,开搞!!!1、技术路线直奔主题了,这个就是简单粗暴的两个步骤,第一个就是对文本进行数据处理,做一个词频统计的工作,第二个步骤就是对这个词频...

weixin_40002009的博客 7324

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 视频语音转文本工具 ——SubtitleEdit
下一篇: python实现情感分析
分析全都队
博客等级 码龄3年 154粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值