我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Python】生成词云图太简单了|拿来就用能的词云图代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Python】生成词云图太简单了|拿来就用能的词云图代码

1 词云简介

词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们一起来学习一下Python生成词云的常用库「wordcloud」

wordcloud是第三方库,需要提前下载安装。

安装: pip install wordcloud

 wordcloud 对象有很多参数设定,设定不同的参数,可以绘制不同形状、颜色和尺寸的词云图。


2 WordCloud对象常用参数 

参数说明
font_path设置字体,指定字体文件的路径
width生成图片宽度,默认400像素
height生成图片高度,默认200像素
mask词云形状,默认使用矩形
min_font_size词云中最小的字体字号,默认4号
font_step字号步进间隔,默认1
max_font_size词云中最大的字体字号,默认根据高度自动调节
max_words词云显示的最大词数,默认200
stopwords设置停用词(需要屏蔽的词),停用词不在词云中显示,默认使用内置的STOPWORDS
background_color图片背景颜色,默认黑色

3 WordCloud常用方法 

方法功能
generate(text)加载词云文本
to_file(filename)输出词云文件

 wordcloud默认是为了英文文本来做词云的,如果需要制作中文文本词云,就需要先对中文进行分词。这里就需要用到中文分词库「jieba」


4 jieba 分词库

jieba 是优秀的中文分词库,需要安装。它的原理是利用一个中文词库,确定中文字符之间的关联概率,汉字间概率大的组成词组,形成分词结果,除了分词,还可以添加自定义词组。

安装:pip install jieba

jieba有三种分词模式,这里我们只学习它的精确模式,把文本精确地切分开,不存在冗余单词。

使用jieba.lcut(s),返回列表型分词结果。当然,也可以使用jieba.add_word(w)向jieba库中增加词语。


5 使用wordcloud生成词云的步骤

  • 读取文件,分词整理,生成词云文本
  • 配置wordcloud对象参数,加载词云文本
  • 计算词频,输出词云文件

6 词云案例

        --- 爬取最近很火的一部电影《芭比》的影评数据,生成词云图。 

1)生成文本文件 

        获取豆瓣电影网站10页短评数据,保存到文本中。

代码如下:

import requestsfrom lxml import etreeimport timeimport random# 通过观察url翻页的规律,使用for循环得到10个链接,保存到urls列表中urls = ['https://movie.douban.com/subject/4058939/comments?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for        i in range(0, 200, 20)]# print(urls)headers = {    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}# 初始化用于保存短评的列表comments_list = []# 使用for循环遍历获取每个页面的数据,保存到comments_list列表中for url in urls:    resp = requests.get(url=url, headers=headers).text    html = etree.HTML(resp)    data_list = html.xpath('//div[@id="comments"]/div[@class="comment-item "]')    # page_list用于保存同一页面内的所有评论    page_list = []    for data in data_list:        comment = data.xpath('./div[2]/p/span/text()')[0]        page_list.append(comment)    # print(page_list)    comments_list.extend(page_list)    # 让程序随机睡眠0~3秒,避免速度过快被反爬    time.sleep(random.randint(0, 3))print("共获取电影《芭比》的短评条数:", len(comments_list))with open('movie_comments.txt', 'w', encoding='utf-8') as f:    # 将列表中的数据逐条写入到文本文件中    for comment in comments_list:        f.write(comment + "\n")

 2)生成基本的词云

        读取第一步中的文本文件,生成词云图。

 代码如下:

import jiebaimport wordcloud# 读取文本with open("movie_comments.txt", encoding="utf-8") as f:    s = f.read()# print(s)# 生成分词列表list_s = jieba.lcut(s)# print(ls)# 用空格连接成字符串文本text = ' '.join(list_s)# print(text)# 将不需要显示的词整理好后,放入stopwords中stopwords = ["是", "的", "了", "啊"]# 创建词云对象wc = wordcloud.WordCloud(font_path="msyh.ttc",                         width=1000,                         height=700,                         background_color='white',                         max_words=100,                         stopwords=stopwords)# msyh.ttc是电脑本地字体,也可以写成绝对路径,字体也可以根据需求换其他字体文件wc.generate(text)   # 加载词云文本wc.to_file("芭比comments.png")  # 保存词云图文件

词云图效果如下:

 3)添加蒙版图片的词云图

可以将有白色背景的图片作为蒙版图片,而有图案的地方会被词云填充。

添加蒙版图片需要使用PIL库和numpy库,需提前下载安装。

本案例添加蒙版图片如下:

 

 代码如下:

from wordcloud import WordCloudfrom PIL import Imageimport numpy as npimport jieba# 打开文本with open("movie_comments.txt", encoding="utf-8") as f:    s = f.read()# 中文分词text = ' '.join(jieba.cut(s))# 打开蒙版图片,生成Image对象img = Image.open("img/chicken.jpg")  # 打开遮罩图片# 生成蒙版mask = np.array(img)   # 将图片转换为数组# 整理不需要显示的词stopwords = ["的", "是", "了", "在", "也", "和", "就", "都", "这", "你", "我", "她"]# 生成WordCloud词云对象,并加载text字符串文本wc = WordCloud(font_path="msyh.ttc",               mask=mask,               width=1000,               height=800,               background_color='white',               max_words=200,               stopwords=stopwords).generate(text)# 保存词云图到文件wc.to_file("芭比comments.png")

词云图效果如下:

 

 

来源地址:https://blog.csdn.net/weixin_43498642/article/details/131988857

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Python】生成词云图太简单了|拿来就用能的词云图代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录