如何用Python绘制词云?
如果希望能够看懂代码,那么需要具备:
1. 了解Python语言的语法结构
2. 了解Python语言的标准包、第三方包的区别
3. Python代码基本是英文,意思一定程度上代表了它要做的事,懂英文,有代码感觉
如果希望能够拿来做练习,那么需要具备:
1. 你的电脑已经安装了Python
2. 你对于Python已经入门,需要拿例子做练习
3. 你能够熟练使用Python带的pip安装各种第三方包
4. 安装了顺手的代码编辑器,能够方便码代码
5. 下载扶摇小说txt文件
示例环境
电脑系统:Window10
Python版本:Python3.7(Python2和Python3差别会比较大,很多语句经过淘汰变更,所以尽量使用新版本)
代码编辑器:Sublime Text3
实例正文
以下为代码实例(代码最好是手动敲,既能熟练代码,又能培养感情):
#作用:读取文本数据
import codece
#中文分词
import jieba
#科学计算
import numpy as np
#数据分析包
import numpy as pd
#数据可视化包
import matlotlib.pyplot as pit
#词云包,绘制词云
from wordcloud import WordCloud
#imread用来读取图片数据
from imageio import imread
#系统包,用来输出代码格式,与绘制词云无关,可忽略
import sys
#读取文本数据,放在content中
file=codes.open("D:\\扶摇.txt",'r','utf-8')
content=file.read
file.close
#对读取的文本数据进行中文分词,如果有分词词库,可以载入到jieba中,提高分词的准确度
#jieba.load_userdict('D:/扶摇词库.txt');
segments=
segs=jieba.cut(content)
#去除一个字的词
for seg in segs:
if len(seg)>1:
segments.append(seg);
#将分词结果保存在pandas的DataFrame中
segments_df=pd.DataFrame({'segment':segments})
#移除停用词,停用词是指在信息检索中,为节省存储空间和提高搜索效率;在处理自然语言数据(或文本)之前或之后会自动过滤掉的某些字或词
#移除日常停用词,停用词可以从网上搜索下载,也可以自己花时间和精力制作
#参数说明:
#index_col=False:用作行索引的列编号或者列名,如果文件不规则,行尾有分隔符,则可以设定index_co1=False
#quoting=3:控制csv中的引号常量
#sep="\t" :指定分隔符。如果不指定参数,则会尝试使用逗号分隔
#停用问读取为一个DataFrame数据,给数据指定一个名称'stopword'
stopwords_rc=pd.read_csv( "D: /python_work/wordcloud/ chineseStoplords.txt",encoding='utf-8',
names= [' stopword'], index col=False, quoting=3, sep="\t")
segments_df=segments_df[~segments_df.segment.isin(stopwords_rc.stopword)]
#使用pandas对词频进行统计
#使用groupby函数(行操作)进行分组,使用agg函数(列操作)计算每组数量,得到一个Series数据
segments_stat=segments._df.groupby(by=['segment'])['segment'].agg({"计数":np.size})
#根据计数列降序排序,如果segments stat是DataFrame数据,使用sort函数
segments_stat=segments_stat.reset_index.sort values("计数",ascending=False)
#以下是打印系统编玛,与绘制词云无关
#sys_type=sys.getfilesystemencoding
#print(sys.stdout.encoding)
#print(sys_type)
#读取图片,绘画词云:设置背景颜色、字体路径、图片,必须设置字体,否则图片上显示的全是矩形
fy_img=imread("D:/python_work/ wordcloud/fuyao.jpg")
fuyao_wordcloud=WordCloud(background_coLor="white",
font_path='D:/python_work/wordcloud/PingFang Regular.ttf',mosk=fy_img)
#facecolor设置坐标系的背景色,w是白色;edgecolor设置坐标轴边的颜色
plt.figure(num=None,facecolor='w',edgecolor='blue')
#取前1000个词,遍历取出数据,不算索引
segments_stat=segments_stat.head(1000).itertuples(index=False)
#将map数据显性转化为字典,根据词频绘制词云,fit_words参数为字典
word_frequence={x[0]:x[1] for x in segments_stat}
fuyao_wordcloud=fuyao_wordcloud.fit_words(word_frequence)
#不显示坐标轴
plt.axis('off')
plt.imshow(fuyao_wordcloud)
plt.show
这里需要注意的是,图片需要是白色背景,方便代码识别。这个图片是用PS去掉背景的,看着稍微糙一些。
例子中使用WordCloud的fitwords函数,根据词频绘制图片,取排名前1000个词,效果图如下:
其他的词,大家也可以分析一番,像“眼神”、“目光”、“微笑”、“轻轻”等词很容易让人再次联想到剧中的浪漫情节,bulabula…
我的感触
在做这个实例的时候,是找的网络上的示例看着做的,但是代码并非直接拿过来就可以使用,在本地会出现不同的错误,网络上的示例代码本身也有小部分缺失,这时候需要根据bug的提示错误一边某度一边根据代码感觉进行更改试验调试,最终出来结果。
代码的神奇之处还在于:同样的代码换了个环境可能就出现不知名问题,所以要有耐心、怀着期待完成你自己的作品。
好了,实例到这里,那么此时本人对于Python的认识是怎么样的呢?真的是一部分人所说的“数据分析从入门到放弃”吗?
其实这是因人而异的,看你的目标和方法、希望掌握的程度了:
1. Python入门还算比较容易,入门之后的深钻就需要下大功夫了。
2. Pyhton很受欢迎,除了自带的标准库之外,还有众多第三方包,适用于不同场景,如果只是做数据分析的话,抓住其中的重点来看:numpy、pandas、matplotlib,其他的包用到的时候某度就好了。
3. 语言功能很强大,本次实例中除去注释之后,真正用的语句并不多,一个包提供的函数就能够实现酷炫能力。
4. Python学习的重难点是:第三方包众多、函数众多、不同函数参数不同,各个函数的作用与用法都需要琢磨理解,根据自己的需求找到使用的函数。
5. 学习Pyhton要有好的心态,有目标地学,入门、掌握学习方法、根据实际场景运用。
对于数据分析,Python只是一个很重要的工具,有些情况下需要掌握,但数据分析最重要的还是思路和业务使用,根据用途使用工具,不能剑走偏锋,只是掌握了工具而没有思路理论支持的话,很容易就从产品经理学成数据分析师了。
- 点赞
- 收藏
- 关注作者
评论(0)