4.Python实战小项目—用Python轻松创建词云图

本文介绍了如何使用Python和WordCloud库创建词云图,包括原理、数据预处理、分词、词频统计、自定义参数以及实战演示,展示了如何通过代码批量生成上市公司业务词云图以可视化文本数据。
摘要由CSDN通过智能技术生成

一·摘要

在这里插入图片描述

词云图,又称为文本云或标签云,是一种数据可视化技术。它通过将文本数据中的词汇以视觉化的形式展示出来,帮助人们快速理解文本的主题和关键信息。在词云图中,不同的词汇会以不同的大小、颜色和字体显示,这些视觉元素通常与词汇在文本中出现的频率或重要性相关联。

词云图的基本原理是对文本进行分词处理,然后统计每个词汇的频率或权重。接着,根据这些频率或权重来调整词汇在图中的大小、颜色和位置等视觉属性。这样可以使得出现频率较高或较重要的词汇更加突出,而出现频率较低或较不重要的词汇则相对较小或较不明显。

二·个人简介

🏘️🏘️个人主页:以山河作礼
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

三·原理

词云图的原理是通过统计文本数据中词汇的频率,并将这些频率以视觉化的形式表现出来

  1. 需要对原始文本进行预处理,包括去除标点符号、停用词过滤等,以确保只保留有意义的词汇。然后,使用分词工具(如jieba库)对处理后的文本进行分词,并统计每个词出现的频率。
  2. 利用词频数据,使用特定的算法(如字体大小和颜色渐变)来生成词云图。在这一步中,可以选择不同的形状模板,使得词云图呈现出特定的外形。例如,可以使用WordCloud库来创建词云对象,并设置不同的参数来绘制不同形状、颜色和尺寸的词云图。
  3. 为了提高词云图的可读性和美观性,可以对词汇的布局、颜色和字体进行调整。这样可以使得重要的关键词更加突出,同时也增加了视觉上的吸引力。最终,将优化后的词云图以图片的形式展示出来,使得人们可以直观地看到文本数据中的重点信息。

四·流程

制作Python文本数据可视化的“词云”图的详细步骤如下:

  1. 安装必要库:需要安装wordcloud库,这是专门用于生成词云图的Python库。同时,如果处理的是中文文本,还需要安装jieba库进行中文分词。
  2. 导入库和模块:在Python脚本中导入wordcloudnumpy(用于数值计算)和jieba(用于中文分词)等库。
  3. 准备文本数据:收集并准备需要制作词云图的文本数据。如果是中文文本,使用jieba库进行分词处理,以便更好地统计词频。
  4. 文本清洗:对文本数据进行清洗,包括去除标点符号、停用词过滤等,以确保只保留有意义的词汇。
  5. 统计词频:统计清洗后文本中每个词的出现频率。这通常是通过创建一个字典来实现的,其中键是词汇,值是它们出现的次数。
  6. 生成词云图:使用wordcloud库中的WordCloud类来生成词云图。可以通过设置不同的参数来自定义词云图的形状、颜色和尺寸等。
  7. 显示或保存词云图:最后,可以将生成的词云图显示在屏幕上或者保存为图片文件,以便于进一步的分析和展示。

五·实战演示

5.1 情景回顾

为了将10家上市公司的“主要业务”词频文件批量生成词云图,我们需要导入所需的库。这些库包括wordcloud(用于生成词云图)、numpy(用于数值计算)和jieba(用于中文分词)。如果这些库尚未安装,可以使用pip install命令进行安装。

接下来,我们需要准备包含“主要业务”描述的文本数据,并进行必要的预处理,如去除标点符号、过滤停用词等。然后,我们使用jieba库对中文文本进行分词处理,以便更好地统计词频。

在完成文本清洗和分词后,我们创建一个字典来统计每个词的出现频率。这将成为生成词云图的关键数据。

有了词频数据后,我们使用wordcloud库中的WordCloud类来生成词云图。在这个过程中,我们可以设置不同的参数来自定义词云图的形状、颜色和尺寸等,使其更符合我们的需求。

最后,我们将生成的词云图显示在屏幕上或者保存为图片文件,以便于进一步的分析和展示。这样,通过查看词云图,我们就可以大致了解每家公司的主要业务是什么,同时在PPT中展示也显得更加高大上。

5.2 导入相关模块

import numpy as np # numpy数据处理库
import wordcloud # 词云库
from PIL import Image # 图像处理库,用于读取背景图片
import matplotlib.pyplot as plt # 图像展示库,以便在notebook中显示图片
from openpyxl import load_workbook #读取词频Excel文件
import os #获取词频Excel文件路径

然后获取所有的Excel词频表路径,以便后续逐一读取,并传入词云库生成词云图。再定义词频背景图,np.array(Image.open())打开图片后转为数组,存入maskImage变量。需要注意词频背景图中想要的形状的背景需要是白色的,不然无法得到想要的词云图形状。比如如下背景图片,左边的图片因为猴子的背景不是白色,做出的词云图会占满整个图片,即是一个矩形的词云图;右边的图片中,猴子的背景是白色的,做出的词云图看起来就是一只猴子的形状。

在这里插入图片描述

5.3 代码示例

然后用for循环遍历所有待处理的Excel文件,逐个打开,提取其中的词和词频,存入字典wordFreq。然后通过wordcloud.WordCloud()定义词云样式。这个函数有很多参数,具体如下。我们只需要关注常用的几个即可,其它可作为了解。

wordcloud.WordCloud(
font_path=None, 
width=400, 
height=200, 
margin=2,
ranks_only=None,
prefer_horizontal=0.9,
mask=None, scale=1, 
color_func=None,
max_words=200, 
min_font_size=4, 
stopwords=None, 
random_state=None, 
background_color='black', 
max_font_size=None, 
font_step=1, 
mode='RGB',
relative_scaling='auto',
regexp=None,
collocations=True, 
colormap=None, 
normalize_plurals=True, 
contour_width=0, 
contour_color='black', 
repeat=False,
'include_numbers=False', 
'min_word_length=0', 
'collocation_threshold=30')

这些参数的含义如下:

font_path: 字体文件的路径。
width: 生成的词云图的宽度。
height: 生成的词云图的高度。
margin: 词云图的边距。
ranks_only: 是否只使用词汇的频率排名。
prefer_horizontal: 词汇的水平显示偏好。
mask: 用于定制词云图形状的蒙版图像。
scale: 词汇的大小范围。
color_func: 自定义颜色函数。
max_words: 词云图中最大的词汇数量。
min_font_size: 词云图中最小的字体大小。
stopwords: 需要忽略的停用词列表。
random_state: 随机状态,用于控制随机性。
background_color: 词云图的背景颜色。
max_font_size: 词云图中最大的字体大小。
font_step: 字体大小的步长。
mode: 颜色模式,默认为’RGB’。
relative_scaling: 词汇大小的相对缩放方式。
regexp: 用于过滤词汇的正则表达式。
collocations: 是否启用搭配(短语)的提取。
colormap: 用于映射词汇颜色的颜色映射表。
normalize_plurals: 是否将复数形式归一化为单数形式。
contour_width: 轮廓线的宽度。
contour_color: 轮廓线的颜色。
repeat: 是否重复绘制词汇以增强视觉效果。
include_numbers: 是否包含数字。
min_word_length: 最小词汇长度。
collocation_threshold: 搭配阈值,用于确定哪些词汇可以组成搭配。

此例中,我们调用wordcloud时,设定了字体为“黑体”,使用了背景图为绘图模板,设置了最多显示词数为500,字号最大为100。然后使用generate_from_frequencies()从已有词频数据的字典中生成词云图。然后将词云图按公司名保存到指定路径(“词云图”文件夹)。最后用plt.imshow()在notebook中显示词云图。结果如下。

在这里插入图片描述

#将存好的Excel词频表读取成字典
path='词频'  #文件所在文件夹
files = [path+"\\"+i for i in os.listdir(path)] #获取文件夹下的文件名,并拼接完整路径
maskImage = np.array(Image.open('background.png')) # 定义词频背景图

for file in files:
    #将词频Excel文件读取为字典
    wb = load_workbook(file)
    ws = wb.active
    wordFreq = {}
    for i in range(2,ws.max_row+1):
        word = ws["A"+str(i)].value
        freq = ws["B"+str(i)].value
        wordFreq[word] = freq    
    
    #定义词云样式
    wc = wordcloud.WordCloud(
        font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体
        mask= maskImage, # 设置背景图
        max_words=500, # 最多显示词数
        max_font_size=100) # 字号最大值
    
    #生成词云图
    wc.generate_from_frequencies(wordFreq) # 从字典生成词云
    #保存图片到指定文件夹
    wc.to_file("词云图\\{}.png".format(file.split("\\")[1][:4]))
    #在notebook中显示词云图
    plt.imshow(wc) # 显示词云
    plt.axis('off') # 关闭坐标轴
    plt.show() # 显示图像

在这里插入图片描述

  • 32
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以山河作礼。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值