[python基础] python生成wordcloud并保存
1.核心包
#jieba、pandas用来处理数据,数据源以xls格式存储的,这里用pandas进行处理
import jieba
from jieba import analyse
import pandas as pd
#scipy、wordcloud创建词云
from scipy.misc import imread
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
#matpoltlib展示、保存生成的词云图
import matplotlib.pyplot as plt
2.过程
import jieba
from jieba import analyse
import pandas as pd import sys
reload(sys)
sys.setdefaultencoding('utf-8') # 1.stopwords
def stop_words():
stop_dict = set()
with open(u'./百度停用词列表.txt', 'r')as f:
words = f.readlines()
for word in words:
stop_dict.add(word.strip().decode('utf-8'))
return stop_dict # 2.分词并去停用词
# save chinese only,remove english words,emoji
def remove_stopwords(stop_words):
source_data = pd.read_excel('./11.xls')
all_content = []
content = source_data[u'内容']
f = open('./weibo.txt', 'w')
for line in content:
cut_list = [c for c in jieba.cut(line)]
ret_set = set(cut_list) - stop_words
ret_list = list(ret_set)
f.writelines([str(line) for line in ret_list])
f.writelines('\n')
all_content.extend(ret_list)
f.close() #3.统计词频
def get_frequency_words(file):
with open(file, 'r') as f:
texts = f.read()
# 统计词频
top_words = analyse.textrank(texts, topK=400, withWeight=True)
ret_words = {}
for word in top_words:
ret_words[word[0]] = word[1]
return ret_words from scipy.misc import imread
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
import matplotlib.pyplot as plt
# 4.生成词云图并保存
def generate_word_cloud(dict):
color_mask = imread('./background.jpg')
cloud = WordCloud(
# 设置字体,不指定就会出现乱码,文件名不支持中文
font_path="./static/chinese.msyh.ttf",
# font_path=path.join(d,'simsun.ttc'),
# 设置背景色,默认为黑,可根据需要自定义为颜色
background_color='white',
# 词云形状,
mask=color_mask,
# 允许最大词汇
max_words=400,
# 最大号字体,如果不指定则为图像高度
max_font_size=150,
# 画布宽度和高度,如果设置了mask则不会生效
# 词语水平摆放的频率,默认为0.9.即竖直摆放的频率为0.1
prefer_horizontal=0.8
)
cloud.generate_from_frequencies(frequencies=dict)
cloud.to_file('word_cloud.jpg')
# plt.imshow(cloud)
# 不现实坐标轴
plt.axis('off')
# 绘制词云
# plt.figure(dpi = 600)
image_colors = ImageColorGenerator(color_mask)
# 重新上色
plt.imshow(cloud.recolor(color_func=image_colors))
# 保存图片
plt.savefig('./result2.png')
# plt.show() if __name__ == '__main__':
stop_words = stop_words()
remove_stopwords(stop_words=stop_words)
words_frequency = get_frequency_words('./weibo.txt')
generate_word_cloud(words_frequency)
[注]:(1).wordcloud.generate_from_text(text=text)可以直接由文本生成词云,但必须是英文文本。
(2).wordcloud.generate_from_frequencies(frequencies=dict)由词频字典生成词云,词频越大则显示该词size越大
[结果]:
[python基础] python生成wordcloud并保存的更多相关文章
- python词云生成-wordcloud库
python词云生成-wordcloud库 全文转载于'https://www.cnblogs.com/nickchen121/p/11208274.html#autoid-0-0-0' 一.word ...
- python基础-python解释器多版本共存-变量-常量
一.编程语言的发展史 机器语言-->汇编语言-->高级语言,学习难度及执行效率由高到低,开发效率由低到高 机器语言:二进制编程,0101 汇编语言:用英文字符来代替0101编程 高级语言: ...
- python基础--python基本知识、七大数据类型等
在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1)python应用领域 目前Python主要应用领域: 云计算: 云计算最火的语言, ...
- python基础---->python的使用(三)
今天是2017-05-03,这里记录一些python的基础使用方法.世上存在着不能流泪的悲哀,这种悲哀无法向人解释,即使解释人家也不会理解.它永远一成不变,如无风夜晚的雪花静静沉积在心底. Pytho ...
- Python基础--Python简介和入门
☞写在前面 在说Python之前,我想先说一下自己为什么要学Python,我本人之前也了解过Python,但没有深入学习.之前接触的语言都是Java,也写过一些Java自动化用例,对Java语言只能说 ...
- Python 基础-python环境变量、模块初识及字符类型
(1).模块内置模块.第三方模块.自定义模块初识模块:sys \ os一般标准库存放路径 C:\Users\Administrator\AppData\Local\Programs\Python\Py ...
- python基础===Python性能优化的20条建议
优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...
- Python基础---->python的使用(二)
学习一下python,这里对python的基础知识做一个整理.似等了一百年忽而明白,即使再见面,成熟地表演,不如不见. python的一些应用 一.类似于java中的MessageFormat用法 w ...
- python基础===Python 代码优化常见技巧
Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...
随机推荐
- CAD制作简单动画
主要用到函数说明: IMxDrawEntity::Rotate 旋转一个对象.详细说明如下: 参数 说明 [in] IMxDrawPoint* basePoint 旋转基点 [in] DOUBLE d ...
- JavaScipt30(第六个案例)(主要知识点:给数字加千分号的正则)
承接上文,这是第6个案例: 附上项目链接: https://github.com/wesbos/JavaScript30 这个主要是要实现在给定的json里匹配出搜索框里的city or state, ...
- day02python
''' 列表 定义:在[]内,可以存放多个任意类型的值,并以逗号隔开. 一般用于存放学生的爱好,课堂的周期等等... ''' students=['钱垚','李小龙','张全蛋','赵铁柱'] pri ...
- LTTng
Waiting for dig... http://frederic-wou.net/lttng/
- 洛谷——P2846 [USACO08NOV]光开关Light Switching
P2846 [USACO08NOV]光开关Light Switching 题目大意: 灯是由高科技——外星人鼠标操控的.你只要左击两个灯所连的鼠标, 这两个灯,以及之间的灯都会由暗变亮,或由亮变暗.右 ...
- java加载properties文件的六种方法总结
java加载properties文件的六种方法总结 java加载properties文件的六中基本方式实现 java加载properties文件的方式主要分为两大类:一种是通过import java. ...
- CCF201609-2 火车购票 java(100分)
试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一 ...
- spring boot 传输数组类型数据
需要在参数加上@RequestBody注解 参考资料:https://blog.csdn.net/u012129558/article/details/51768985
- MongoDB增加用户、删除用户、修改用户读写权限及只读权限(注:转载于http://www.2cto.com/database/201203/125025.html)
MongoDB 增加用户 删除用户 修改用户 读写权限 只读权限, MongoDB用户权限分配的操作是针对某个库来说的.--这句话很重要. 1. 进入ljc 数据库: use ...
- WinForm 中限制只能输入数字
在Winform(C#)中要实现限制Textbox只能输入数字,一般的做法就是在按键事件中处理,判断keychar的值.限制只能输入数字,小数点,Backspace,del这几个键.数字0~9所对应的 ...