Python3在win7下生成云图 学习python过程以及坑

来源:互联网 发布:哪呢儿软件下载 编辑:程序博客网 时间:2024/06/04 19:53

一、前言

本人python小白一个,最近由于朋友推荐python,于是就利用空暇时间学习了下。

主要学习资料有:编程小白的第一本 Python 入门书,写的入门很容易接口,讲解的也比较清楚。

再进一步就是:Python编程:从入门到实践,图灵社区上是收费的,由于本人下载了一本免费的《Python编程:从入门到实践》电子书,通过电子书格式转换的方式将mobi格式转成了pdf的格式。下载地址:Python编程:从入门到实践_[美] Eric Matthes.pdf,参考资料:Python编程:从入门到实践_[美] Eric Matthes_章节源码文件。

Python编程:从入门到实践讲解了2D游戏开发-打飞机游戏、利用信息数据生成热图等、Web应用。对新手来说,还不错。

下图为跟学的效果:



二、win7利用python3生成云图

这次生成云图,在网上也查了一些资料,同样的也遇到了一些问题,这里一一表来。

生成云图的信息是一位过气歌手的歌曲-管维嘉,为什么选择他,主要是因为他的歌曲不多,下载歌词快,不像别的歌手,动不动就几十首上百首,歌词就得整半天。

说明:其实一个py文件就能满足需求,这里为了便于查询,分布分别罗列步骤、代码,最后提供整体代码。(可以自定义适量加打印等操作)

第一步:准备带生成云图的歌词文件。(不赘述)

代码如下:

import os, timedef read_content(content_path):    content = ''# 初始化内容为空    print('...正在扫描文件...')    for f in os.listdir(content_path): # 使用os模块的listdir函数枚举文件夹下所有文件        time.sleep(1)        file_fullpath = os.path.join(content_path,f) # 拼接文件完整路径        if os.path.isfile(file_fullpath): # 判断是否是文件            content += open(file_fullpath,'r').read()            content += '\n'    print('...正在扫描完毕...')    return content# 读取文件夹内容content = read_content('D:/workspace_python/zfiles/guanweijia/')

第二步:分词

这个有点像java中的庖丁解牛分词。代码如下(包含第一步):

import os, timeimport jieba.analysedef read_content(content_path):    content = ''# 初始化内容为空    print('...正在扫描文件...')    for f in os.listdir(content_path): # 使用os模块的listdir函数枚举文件夹下所有文件        time.sleep(1)        file_fullpath = os.path.join(content_path,f) # 拼接文件完整路径        if os.path.isfile(file_fullpath): # 判断是否是文件            content += open(file_fullpath,'r').read()            content += '\n'    print('...正在扫描完毕...')    return content# 读取文件夹内容content = read_content('D:/workspace_python/zfiles/guanweijia/')print('...正在提取关键字...')time.sleep(2)# 这里使用jieba的textrank提取出1000个关键词及其比重result = jieba.analyse.textrank(content, topK=1000, withWeight=True)# 生成关键词比重字典keywords = dict()for i in result:    keywords[i[0]] = i[1]# print(keywords)print('...关键字提取完毕...')

第三步:生成云图

注意坑来了:

1.PIL包:所引用的PIL包目前只支持到python2.7,在python3中引用的话需要下载Pillow包,安装过程不赘述。

2.wordcloud包,这个包通过IDE工具安装是失败的,只能通过下载文件后安装。

方法如下:

首先查看自己系统支持版本信息,利用python代码可以查询:

import pip;
print(pip.pep425tags.get_supported())

返回信息(本机):[('cp35', 'cp35m', 'win_amd64'), ('cp35', 'none', 'win_amd64'), ('py3', 'none', 'win_amd64'), ('cp35', 'none', 'any'), ('cp3', 'none', 'any'), ('py35', 'none', 'any'), ('py3', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]

下载wordcloud地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

根据上面执行代码返回的信息,可以看到wordcloud‑1.3.2‑cp35‑cp35m‑win_amd64.whl是支持本机安装的。



安装成功,坑填完了,再上代码:

import os, timeimport jieba.analysefrom PIL import Image, ImageSequenceimport numpy as npimport matplotlib.pyplot as pltfrom wordcloud import WordCloud, ImageColorGeneratordef read_content(content_path):    content = ''# 初始化内容为空    print('...正在扫描文件...')    for f in os.listdir(content_path): # 使用os模块的listdir函数枚举文件夹下所有文件        time.sleep(1)        file_fullpath = os.path.join(content_path,f) # 拼接文件完整路径        if os.path.isfile(file_fullpath): # 判断是否是文件            content += open(file_fullpath,'r').read()            content += '\n'    print('...正在扫描完毕...')    return content# 读取文件夹内容content = read_content('D:/workspace_python/zfiles/guanweijia/')print('...正在提取关键字...')time.sleep(2)# 这里使用jieba的textrank提取出1000个关键词及其比重result = jieba.analyse.textrank(content, topK=1000, withWeight=True)# 生成关键词比重字典keywords = dict()for i in result:    keywords[i[0]] = i[1]# print(keywords)print('...关键字提取完毕...')#//////////////////////////////////////////////////print('...正在生成云图...')time.sleep(2)# 初始化图片image = Image.open('D:/workspace_python/zfiles/tmc.png')graph = np.array(image)# 生成云图,这里需要注意的是WordCloud默认不支持中文,所以这里需要加载中文黑体字库wc = WordCloud(font_path='./fonts/simhei.ttf',    background_color='white', max_words=1000, mask=graph)wc.generate_from_frequencies(keywords)image_color = ImageColorGenerator(graph)print('...生成云图成功...')# 显示图片plt.imshow(wc)plt.imshow(wc.recolor(color_func=image_color))plt.axis("off") # 关闭图像坐标系plt.show()

结果:




原图:




有不完善,欢迎拍砖~



阅读全文
1 0
原创粉丝点击