python程序14:写一个词云程序

我们经常在网上冲浪时候看到这样的图:

这种由汉字出现频率多少组成的图片叫做词云图,那么这样的图片是怎么生成的呢?这里就要用到wordcloud模块了。wordcloud 模块是一个 Python 库,用于生成词云。词云是一种可视化形式,其中文本中的单词按照频率和重要性排列并呈现为不同大小和颜色的单词云。wordcloud 模块提供了许多选项和参数,可用于自定义词云的外观和生成方式。我们使用该模块来生成漂亮的词云,以便更好地理解文本数据。

首先在终端下载模块:pip install numpy wordcloud mathplotlib openpyxl

下面是程序源代码,各行注释已列出:

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词频表读取成字典
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() # 显示图像

有条件的同学在IDE里实验一下吧。

发表回复