本文展示如何用 Python 从之前生成的词频 Excel 文件中读取词频数据,结合 wordcloud
和背景图,批量生成直观美观的词云图。适用于文本分析、内容展示、报告可视化等场景。
📂 第一步:读取所有 Excel 词频文件
import os
from openpyxl import load_workbook
import numpy as np
from PIL import Image
import wordcloud
import matplotlib.pyplot as plt
path = '词频'
files = [os.path.join(path, f) for f in os.listdir(path)]
maskImage = np.array(Image.open('background.png'))
利用
os.listdir()
遍历词频 Excel 文件;使用
background.png
作为词云背景形状。
📈 第二步:逐文件读取词频并生成词云
for file in files:
wb = load_workbook(file)
ws = wb.active
wordFreq = {ws[f"A{i}"].value: ws[f"B{i}"].value
for i in range(2, ws.max_row + 1)}
将每张 Excel 转为 dict[word] = freq
,为下一步骤做准备。
🖌 第三步:用 mask 图生成词云并保存
wc = wordcloud.WordCloud(
font_path='C:/Windows/Fonts/simhei.ttf',
mask=maskImage,
max_words=500,
max_font_size=100
)
wc.generate_from_frequencies(wordFreq)
basename = os.path.splitext(os.path.basename(file))[0][:4]
wc.to_file(f"词云图/{basename}.png")
plt.imshow(wc)
plt.axis('off')
plt.show()
generate_from_frequencies()
直接基于词频生成词云,是推荐方式 Kaggle+15Medium+15topcoder.com+15;传入
maskImage
时词云会按背景形状生成 GitHub+1Medium+1;font_path
设置常用中文黑体避免乱码;to_file()
将结果保存为 PNG,同时用matplotlib
展示。
🖼️ 结果展示区
✅ 小结与注意事项
使用
generate_from_frequencies()
避免文本分词误差 holisticseo.digital;mask 图需确保背景为白色(RGB 255),否则可能形状识别失败 Stack Overflow;
可以优化方式包括:
使用
ImageColorGenerator
从背景图提取配色 GitHub+7peritract.github.io+7Stack Overflow+7;添加
contour_color
与contour_width
增加外轮廓;控制词云尺寸、
scale
参数提升清晰度;自定义停词集排除无用词。
更多实用案例,代码,素材如下:
自取链接:https://pan.quark.cn/s/a46f30accea2
🔧 拓展建议
🎨 自定义颜色对特定主题关键词加亮;
💾 批量处理大量文本并生成词云合集;
📊 结合
wordcloud.to_image()
和 GUI 打包;📘 不仅限词频表,还可以直接用原文生成更灵活多彩的词云。
通过这套流程,你已掌握从 Excel 到词云图的全链路自动化方法!如果你还想支持 PDF 特征提取词云、生成 html 可嵌入图像,或集成到报表系统里,欢迎继续告诉我,我可以为你定制更深入的文章或脚本。