Python案例实操2-词云生成

Python案例实操2-词云生成


案例2:根据案例1爬取到的豆瓣电影Top250数据,将电影的一句话概述信息,生成一个词云图片

显示效果如图所示:
在这里插入图片描述

使用到的技术模块

  • wordcloud 词云处理
  • jieba 分词
  • matplotlib 绘图, 数据可视化
  • PIL.Image 图片处理
  • numpy 矩阵运算
  • sqlite3 数据库连接
  1. 准备词云所需的文字,从moive表中查找所有电影的一句话描述,拼接成字符串
conn = sqlite3.connect("movie.db")
cur = conn.cursor()
sql = "select desc from movie"
data = cur.execute(sql)
text = ""
for item in data:
    text = text + item[0]
cur.close()
conn.close()
  1. 使用jieba分词
# 分词
cut = jieba.cut(text)
str = " ".join(cut)
print("分词个数:", len(str))
  1. 中文分词里,不能直接使用wordcloud中的STOPWRODS,需要单独配置中文停用词,可以从网上复制下载
# 设置中文停用词 从文件中读取屏蔽词
stopwords = set()
content = [line.strip() for line in open(r'static/txt/stopwords.txt', 'r', encoding="utf-8").readlines()]
stopwords.update(content)
  1. 设置词云的遮罩图片
# 设置遮罩图片
img = Image.open(r'./static/assets/img/tree.jpg')  # 打开遮罩图片,图片背景为白色
img_arr = np.array(img)  # 将图片转为数组格式

遮罩图片可以随意,注意背景为白色即可在这里插入图片描述

  1. 封装词云
# 封装词云
wc = WordCloud(
    background_color="white",
    mask=img_arr,
    font_path="simkai.ttf",  # 字体 C:\Windows\Fonts
    stopwords=stopwords  # 过滤停用词
)
wc.generate_from_text(str)
  1. 绘制图片
# 绘制图片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis("off")  # 是否显示坐标轴
# plt.show()  # 显示生成的词云图片
# 输出词云图片到文件 默认dpi为400
plt.savefig(r'./static/assets/img/word.jpg', dpi=450)
  1. 运行程序,生成jpg图片,大功告成.
  2. 附上完整代码 test_wordcloud.py
import jieba  # 分词
import matplotlib.pyplot as plt  # 绘图, 数据可视化
from wordcloud import WordCloud  # 词云
from PIL import Image  # 图片处理
import numpy as np  # 矩阵运算
import sqlite3

# 准备词云所需的文字
conn = sqlite3.connect("movie.db")
cur = conn.cursor()
sql = "select desc from movie"
data = cur.execute(sql)
text = ""
for item in data:
    text = text + item[0]
cur.close()
conn.close()

# 分词
cut = jieba.cut(text)
str = " ".join(cut)
print("分词个数:", len(str))

# 设置中文停用词 从文件中读取屏蔽词
stopwords = set()
content = [line.strip() for line in open(r'static/txt/stopwords.txt', 'r', encoding="utf-8").readlines()]
stopwords.update(content)

# 设置遮罩图片
img = Image.open(r'./static/assets/img/tree.jpg')  # 打开遮罩图片,图片背景为白色
img_arr = np.array(img)  # 将图片转为数组格式

# 封装词云
wc = WordCloud(
    background_color="white",
    mask=img_arr,
    font_path="simkai.ttf",  # 字体 C:\Windows\Fonts
    stopwords=stopwords  # 过滤停用词
)
wc.generate_from_text(str)

# 绘制图片
fig = plt.figure(1)	# 创建画布
plt.imshow(wc)
plt.axis("off")  # 是否显示坐标轴
# plt.show()  # 显示生成的词云图片
# 输出词云图片到文件 默认dpi为400
plt.savefig(r'./static/assets/img/word.jpg', dpi=450)

本案例数据是案例1中通过网络爬虫获取到的数据

Python案例实操1-网络爬虫

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值