【词云图】从excel和从txt文件,绘制以句子、词为单位的词云图

从excel和从txt文件,绘制以句子、词为单位的词云图

写在最前面

经常绘制词云图,这次正好梳理一下,方便之后自己直接copy微调代码。

代码功能说明:

1、支持plt绘图的中文正常显示

2、以句为单位、和以词为单位进行词云图分析

3、支持excel的数据读取,注意excel中nan数据必须先进行处理,本文以'未提供'填充缺失数据。

4、支持txt文件的数据读取

数据说明&结论

这份数据包含了我最近发布的文章标题。

为了更好地分析这些数据,首先对数据进行清理和整理,然后进行可视化分析,并最后提出一些结论。

从txt文件,绘制以句子、词为单位的词云图

python 复制代码
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import jieba  # 导入 jieba 分词库

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体,以便支持中文
sns.set(style="whitegrid")  # 设置图表风格

# 生成词云的函数
def generate_wordcloud(text, title, use_jieba=False):
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体,以便支持中文
    if use_jieba:
        text = " ".join(jieba.cut(text))  # 使用 jieba 进行分词

    wordcloud = WordCloud(width=800, height=400, font_path='simhei.ttf', background_color='white').generate(text)
    plt.figure(figsize=(10, 5))
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.title(title, fontsize=18)
    plt.axis("off")
    plt.show()

# 读取 TXT 文件
file_path = '自我介绍.txt'  # 替换为您的 TXT 文件路径
with open(file_path, 'r', encoding='utf-8') as file:
    text = file.read()

title = '自我介绍'

# 生成词云
generate_wordcloud(text, title)
generate_wordcloud(text, title, use_jieba=True)

自我介绍


从excel,绘制以句子、词为单位的词云图

读取excel

python 复制代码
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import jieba

import pandas as pd

# Load the provided Excel file for analysis
file_path = 'score1.xlsx'
try:
    data = pd.read_excel(file_path)
except Exception as e:
    print(f"Error reading the Excel file: {e}")

# 处理数据
data.fillna('未提供', inplace=True)

# Displaying the first few rows of the dataset to understand its structure and contents
data.head()

| | 文章标题 | URL | 发布时间 | 阅读量 | 收藏量 | 点赞量 | 评论量 | 质量分 |
| 0 | 【力扣热题100】287. 寻找重复数(弗洛伊德的乌龟和兔子方法) | https://blog.csdn.net/wtyuong/article/details/... | 2023-12-08 23:39:32 | 596 | 17 | 24 | 14 | 91 |
| 1 | 2024年大学生考试/考证年历框架 | https://blog.csdn.net/wtyuong/article/details/... | 2023-12-08 23:24:47 | 368 | 11 | 12 | 2 | 90 |
| 2 | 【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + ... | https://blog.csdn.net/wtyuong/article/details/... | 2023-12-06 21:27:26 | 1936 | 39 | 60 | 104 | 97 |
| 3 | 【从0配置JAVA项目相关环境2】node.js + 前端 从配置到运行 | https://blog.csdn.net/wtyuong/article/details/... | 2023-12-06 21:26:33 | 1544 | 25 | 27 | 5 | 93 |

4 GPT-Crawler一键爬虫构建GPTs知识库 https://blog.csdn.net/wtyuong/article/details/... 2023-12-05 23:32:37 1815 30 31 29 94

绘制以句子、词为单位的词云图

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import jieba  # 导入jieba分词库

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体,以便支持中文
sns.set(style="whitegrid")  # 设置图表风格

# 生成词云的函数
def generate_wordcloud(text_series, title, use_jieba=False):
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体,以便支持中文
    text = ' '.join(text_series.astype(str))  # 将文本转换为字符串
    if use_jieba:
        text = " ".join(jieba.cut(text))  # 使用jieba进行分词

    wordcloud = WordCloud(width=800, height=400, font_path='simhei.ttf', background_color='white').generate(text)
    plt.figure(figsize=(10, 5))
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.title(title, fontsize=18)
    plt.axis("off")
    plt.show()

# 对不同的列生成词云
generate_wordcloud(data['文章标题'], '标题')
generate_wordcloud(data['文章标题'], '标题', use_jieba=True)

文章标题


相关推荐
haibindev几秒前
我让 Claude 和 Codex 同时审计 26 个模块,它们只在 10 个上达成共识
ai编程·claude·codex·工具对比
雕刻刀18 分钟前
ERROR: Failed to build ‘natten‘ when getting requirements to build wheel
开发语言·python
何双新20 分钟前
Odoo 技术演进全解析:从 Widget 到 Owl,从 Old API 到声明式 ORM
python
前端小张同学21 分钟前
有了AI大家的日常是轻松了还是更焦虑了呢?
人工智能·程序员·ai编程
程序员老刘27 分钟前
Flutter版本选择指南:3.41开始进入稳定区间 | 2026年3月
flutter·ai编程·客户端
宵时待雨30 分钟前
C++笔记归纳14:AVL树
开发语言·数据结构·c++·笔记·算法
山川行1 小时前
关于《项目C语言》专栏的总结
c语言·开发语言·数据结构·vscode·python·算法·visual studio code
星辰徐哥1 小时前
C语言游戏开发:Pygame、SDL、OpenGL深度解析
c语言·python·pygame
左左右右左右摇晃1 小时前
JDK 1.7 ConcurrentHashMap——分段锁
java·开发语言·笔记
20年编程老鸟java+ai全栈1 小时前
GSD(GET SHIT DONE)与 GStack 的区别
ai编程