[特殊字符] Python 批量生成词云:读取词频 Excel + 自定义背景 + Excel to.png 流程解析

本文展示如何用 Python 从之前生成的词频 Excel 文件中读取词频数据,结合 wordcloud 和背景图,批量生成直观美观的词云图。适用于文本分析、内容展示、报告可视化等场景。


📂 第一步:读取所有 Excel 词频文件

python 复制代码
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 作为词云背景形状。


📈 第二步:逐文件读取词频并生成词云

python 复制代码
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 图生成词云并保存

python 复制代码
    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_colorcontour_width 增加外轮廓;

    • 控制词云尺寸、scale 参数提升清晰度;

    • 自定义停词集排除无用词。

更多实用案例,代码,素材如下:

自取链接:https://pan.quark.cn/s/a46f30accea2


🔧 拓展建议

  • 🎨 自定义颜色对特定主题关键词加亮;

  • 💾 批量处理大量文本并生成词云合集;

  • 📊 结合 wordcloud.to_image() 和 GUI 打包;

  • 📘 不仅限词频表,还可以直接用原文生成更灵活多彩的词云。


通过这套流程,你已掌握从 Excel 到词云图的全链路自动化方法!如果你还想支持 PDF 特征提取词云、生成 html 可嵌入图像,或集成到报表系统里,欢迎继续告诉我,我可以为你定制更深入的文章或脚本。

相关推荐
冷雨夜中漫步8 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴8 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再8 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
喵手10 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_9449347310 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy10 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威12 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ12 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha12 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy12 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法