数据可视化实战:做词云展示

数据可视化实战:做词云展示

          • 这个词云是大数据可视化的重要方式,就是把文本中的关键词进行展示,就是很高大上![在这里插入图片描述](https://img-blog.csdnimg.cn/cover1/259956915756597403.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,image_MjAyMDA3MTUxNjIxMDEzOC5wbmc=,size_16,color_FFFFFF,t_70,image/resize,m_lfit,w_962#pic_center)
        • 资料代码在这里
        • 首先,安装本课程所需的Python第三方模块
        • 然后,简单制作词云的比如:
        • 接下来是添加了参数的词云代码:
          • 通过以下代码读入外部词云形状图片(需要先`pip install imageio`安装imageio)
      • 从外部文件读入文本
        • 中文分词
          • 首先,中文分词第三方模块是`jieba`
        • 高级词云:绘制指定形状的词云
          • 总结:创建好WordCloud类之后,就可以使用`wordcloud=generate(text)`方法生成c词云,传入的参数text代表你要分析的文本,最后使用`wordcloud.tofile("a.png")`函数,将得到的词云图像直接保存为图片格式文件。
          • 其实,也可以使用Python的可视化工具Matplotlib进行显示,方法如下:

这个词云是大数据可视化的重要方式,就是把文本中的关键词进行展示,就是很高大上在这里插入图片描述

资料代码在这里

源代码及相关素材Github库

首先,安装本课程所需的Python第三方模块

打开命令行,输入下面这行命令,回车执行即可。

pip install numpy matplotlib pillow wordcloud imageio jieba snownlp itchat -i https://pypi.tuna.tsinghua.edu.cn/simple

然后,简单制作词云的比如:

# 导入词云制作第三方库wordcloud
import wordcloud

# 创建词云对象,赋值给w,现在w就表示了一个词云对象,(WordCloud()中W和C记得要大写!)
w = wordcloud.WordCloud()#可以在`WordCloud()`括号里填入各种参数,控制词云的字体、字号、字的颜色、背景颜色等等。

# 调用词云对象的generate方法,将文本传入
w.generate('and that government of the people, by the people, for the people, shall not perish from the earth.')

# 将生成的词云保存为output1.png图片文件,保存出到当前文件夹中
w.to_file('output1.png')

运行完之后,图片这个样子,为什么没有and that, of the等等呢,因为wordcloud自动将and that by the not from等废话词组过滤掉,并且把出现次数最多的people大号显示,还有,每运行一次词云图并不一样。
wordcloud库会非常智能地按空格进行分词及词频统计,出现次数多的词就大。
数据可视化实战:做词云展示_第1张图片

接下来是添加了参数的词云代码:

import wordcloud

# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,
                        height=700,
                        background_color='white',
                        font_path='msyh.ttc')

# 调用词云对象的generate方法,将文本传入
w.generate('从明天起,做一个幸福的人。喂马、劈柴,周游世界。从明天起,关心粮食和蔬菜。我有一所房子,面朝大海,春暖花开')

# 将生成的词云保存为output2-poem.png图片文件,保存到当前文件夹中
w.to_file('output2-poem.png')

图如下:
数据可视化实战:做词云展示_第2张图片

  1. width 词云图片宽度,默认400像素,为16厘米
  2. height 词云图片高度 默认200像素,为8厘米
  3. background_color 词云图片的背景颜色,默认为黑色
  4. font_step 字号增大的步进间隔 默认1号,就是字体变大的增大间隔
  5. font_path 指定字体路径 默认None,对于中文可用font_path='msyh.ttc'即该字体路径+后缀名,注意:Win10这里的字体后缀是“ttc”,而cWin7的字体后缀是“ttf”!
  6. mini_font_size 最小字号 默认4号
  7. max_font_size 最大字号 根据高度自动调节
  8. max_words 最大词数 默认200
  9. stop_words 不显示的单词 ,如:stop_words={"python","java"}
  10. Scale 默认值1。值越大,图像密度越大越清晰
  11. prefer_horizontal:默认值0.90,浮点数类型。表示在水平如果不合适,就旋转为垂直方向,即词语水平方向排版出现的频率,默认 0.9 (所以词语垂直方向排版出现频率为 0.1 )
  12. relative_scaling:表示词频和云词图中字大小的关系参数,默认0.5。为0时,表示只考虑词排序,而不考虑词频数;为1时,表示两倍词频的词也会用两倍字号显示。
  13. mask 指定词云形状图片,默认为矩形
通过以下代码读入外部词云形状图片(需要先pip install imageio安装imageio)
import imageio
mk = imageio.imread("picture.png")
w = wordcloud.WordCloud(mask=mk)

从外部文件读入文本

import wordcloud

# 从外部.txt文件中读取大段文本,存入变量txt中
f = open('关于实施乡村振兴战略的意见.txt',encoding='utf-8')
txt = f.read()

# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,
                        height=700,
                        background_color='white',
                        font_path='msyh.ttc')

# 将txt变量传入w的generate()方法,给词云输入文字
w.generate(txt)

# 将词云图片导出到当前文件夹
w.to_file('output3-sentence.png')

图如下:

中文分词

首先,中文分词第三方模块是jieba

安装中文分词库jieba:在命令行中输入pip install jieba
精确模式(最常用,只会这个就行):每个字只用一遍,不存在冗余词汇。jieba.lcut('动力学和电磁学')

全模式:把每个字可能形成的词汇都提取出来,存在冗余。jieba.lcut('动力学和电磁学',cut_all=True)

搜索引擎模式:将全模式分词的结果从短到长排列好。jieba.lcut_for_search('动力学和电磁学')

以下命令演示了三种分词模式及结果,精确模式是最常用的。

>>> import jieba
>>> textlist1 = jieba.lcut('动力学和电磁学')
>>> textlist1
['动力学', '和', '电磁学']
>>> textlist2 = jieba.lcut('动力学和电磁学',cut_all=True)
>>> textlist2
['动力', '动力学', '力学', '和', '电磁', '电磁学', '磁学']
>>> textlist3 = jieba.lcut_for_search('动力学和电磁学')
>>> textlist3
['动力', '力学', '动力学', '和', '电磁', '磁学', '电磁学']

例子:

# 导入词云制作库wordcloud和中文分词库jieba
import jieba
import wordcloud
# 构建并配置词云对象w
w = wordcloud.WordCloud(width=1000,
                        height=700,
                        background_color='white',
                        font_path='msyh.ttc')

# 调用jieba的lcut()方法对原始文本进行中文分词,得到string
txt = '同济大学(Tongji University),简称“同济”,是中华人民共和国教育部直属,由教育部、国家海洋局和上海市共建的全国重点大学,历史悠久、声誉卓著,是国家“双一流”、“211工程”、“985工程”重点建设高校,也是收生标准最严格的中国大学之一'
txtlist = jieba.lcut(txt)
string = " ".join(txtlist)#将分开的词用空格连接

# 将string变量传入w的generate()方法,给词云输入文字
w.generate(string)

# 将词云图片导出到当前文件夹
w.to_file('output4-tongji.png')

数据可视化实战:做词云展示_第3张图片

高级词云:绘制指定形状的词云

例如:

# 导入词云制作库wordcloud和中文分词库jieba
import jieba
import wordcloud

# 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片
import imageio
mk = imageio.imread("wujiaoxing.png")
w = wordcloud.WordCloud(mask=mk)

# 构建并配置词云对象w,注意要加scale参数,提高清晰度
w = wordcloud.WordCloud(width=1000,
                        height=700,
                        background_color='white',
                        font_path='msyh.ttc',
                        mask=mk,
                        scale=15)

# 对来自外部文件的文本进行中文分词,得到string
f = open('关于实施乡村振兴战略的意见.txt',encoding='utf-8')
txt = f.read()
txtlist = jieba.lcut(txt)
string = " ".join(txtlist)

# 将string变量传入w的generate()方法,给词云输入文字
w.generate(string)

# 将词云图片导出到当前文件夹
w.to_file('output6-village.png')

运行的图片如下:

总结:创建好WordCloud类之后,就可以使用wordcloud=generate(text)方法生成c词云,传入的参数text代表你要分析的文本,最后使用wordcloud.tofile("a.png")函数,将得到的词云图像直接保存为图片格式文件。
其实,也可以使用Python的可视化工具Matplotlib进行显示,方法如下:
	import matplotlib.pypliot as plt
    plt.imshow(wordcloud)
    plt.axis("off")#因为不需要显示X轴和Y轴的坐标,所以要将坐标轴关闭
    plt.show()

你可能感兴趣的:(可视化,python,大数据)