美文网首页
Pyhton学习笔记(二)

Pyhton学习笔记(二)

作者: Maverick_7910 | 来源:发表于2019-01-06 14:44 被阅读0次

    欢迎关注零壹研究所 【微信号: Research_LAB】

    从词云图开始第一个Python实例 

    一、引言


    词云图其实是一种词频统计的可视化,可以塑造成各种形状,显得很新奇,被广泛应用于各种场合。那么如何制作一个词云图呢?用Excel显然无法快速实现(如果给一个高达几百万字的文本文档的话,统计词频工作量就很可怕了),而利用Python只需要几分钟就可以搞定。

    (词云图,图源网络)

    二、步骤解析

    在词云图的制作中,主要分为对文本的解析(主要是分词)、词频统计、制图。

    分词,就是把文本分割成单个词汇。计算机实际上不能识别自然语言,比如“李雷喜欢韩梅梅”,如果不分词,这对于计算机来说就是一串字符,没有特定含义。经过分词,可以被识别为“李雷”、“喜欢”和“韩梅梅”三个词语这里假定分词包能够识别李雷之类的词语)

    分词后才能进行词频统计。比如可以统计“李雷”出现了多少次,“喜欢”出现了多少次,这样可以统计出各个词语出现的频次。

    制图。词频统计好以后,就可以根据各自的频次制作词云图(用词语在图中的大小来表示词语出现的频率)。

    三、准备工作

    准备工作之jieba、matplotlib、wordcloud的安装。

    包可以理解为一种封装好的标准化的程序,跟函数类似。包某种程度上是函数的集合,利用包我们可以大大减少开发工作量,只要调用别人已经封装好的标准包,我们就可以快速完成开发任务。

    不像C语言,一个诸如1873892748989*18972428948之类的大数运算都需要设计数组去实现(当然,C语言在执行速度上领先Python)。

    那么,要调用包的话就要先安装包。安装包的主要方式:

    全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba

    半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install

    手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录

    这里推荐用easy_install jieba安装。

      

    上一篇推送介绍环境变量的时候提到Python.exe,easy_install跟Python一样,也是一个exe可执行文件,不同的是easy_install是Python中专用于安装包的,一般在安装Pyhton的时候已经自动安装好了,并且easy_instal.exe所在的路径也添加到环境变量了(意味着在任何地方打开Powershell,输入easy_install都可以被计算机搜索到并且执行)。

    如图,注意观察路径,Pyhton.exe在C:\Users\mcc\AppData\Local\Programs\Python\Python37-32,Easy_install.exe则在其下一级目录中(C:\Users\mcc\AppData\Local\Programs\Python\Python37-32\Scripts):

    即上一目录中的Scripts文件夹下。如果不能执行Easy_install.exe,按照上一篇推送中的办法查看环境变量,将这个路径添加到环境变量中去。

    这里推荐用easy_stall的原因是,由于pip方法中,pip是最新版本的话,存在冲突,如果用pip会出错,只有把pip降级到9.0.3才可以正常用。

    可以在Powershell(按住Shift+右键打开)中执行:

    python -m pip install --upgrade pip==9.0.3

    实现对pip的降级,这样就可以用pip安装。降级后在Pycharm中也可以手动搜索安装,File—Settings—Project:XXX—Project Interpreter中,点击右上角绿色加号,在弹出来的上方搜索框输入包的名字,左下角install pkg,会显示(installing)等待下载安装完,会弹出安装成功的字样。

    用easy_stall安装的详细步骤是:在任意位置打开Powershell,输入:

    easy_stall jieba

    等待进度条走完。

    如上,根据上述方法安装完毕剩下的matplotlib(画图的包)和wordcloud(词云图统计词频的包):

    easy_stall matplotlib
    easy_stall wordcloud

    至此,准备工作完毕。

    四、词云图制作

    在Python中,首先就是导入相应的包:

    import jieba
    from wordcloud import WordCloud #注意py文件名不能跟wordcloud重复,否则会出错!!
    import matplotlib.pyplot as plt

    然后,准备好我们要制作词云图的文档,这里用斗破苍穹.txt演示:

    这里有1600余万字节,每个汉字两个字节计算就有800余万字(因此人工统计词频不可想象)。

    f = open(r'D:\Desktop\Python Learning Notes\input files\斗破苍穹前5章.txt','rb').read()#读取二进制文件用rb(读取错误'gbk' codec can't decode的时候使用)

    上述代码表示打开并且读取该文档到变量f(关于路径、字符串、文档编码等较为复杂,后续整理后详述)。

    cut_text = jieba.cut(f)#分词
    text = "/".join(cut_text)

    上述代码时分词,用斜杠/分隔开。

    wordcloud = WordCloud(font_path="C:\\Windows\\Fonts\\simfang.ttf", background_color="white").generate(text)
    plt.figure("词云图") #指定所绘图名称
    plt.imshow(wordcloud)# 以图片的形式显示词云
    plt.axis("off") #关闭图像坐标系
    plt.savefig(r"D:\Desktop\ciyuntu.png",dpi=200) #用反斜杠的话会报错
    plt.show()

    上述代码就是具体制作词云图的步骤,每一步骤后续都有注释。

    在Python中,用“#”来注释,“#”后面的字符不会被python解释器解释。其它语言解释符号:

    C语言、java、JavaScript和Stata等

    1//(C语言以及学术研究中常用的Stata等注释字符:
    2//注释内容
    3/*注释内容*/

    注意,执行后该词云图保存路径为:

    D:\Desktop\ciyuntu.png

    这是我的桌面路径。

    因此添加了:

    1plt.show()

    这个语句保证在执行后可以立即看到词云图效果。

    五、效果图

    这就是这斗破苍穹这部小说800万字的词频效果。

    显然,一些语句中常用的连接词词频最高,也符合预期。更进一步可以通过剔除等操作实现更加精准、更加符合预设目标的词云图制作。

    当然,这是最基础的词云图,用于创建第一个Python实例比较合适。更丰富的,还可以变换形状,按照特定形状排列词汇、透明度设置等等,这里不再详述。

    最后附上词云图的完整代码:

     1#!/usr/bin/env python 
    2# -*- coding: utf-8 -*-
    3import jieba
    4from wordcloud import WordCloud #注意py文件名不能跟wordcloud重复,否则会出错!!
    5import matplotlib.pyplot as plt
    6
    7f = open(r'D:\Desktop\Python Learning Notes\input files\斗破苍穹.txt','rb').read()#一般用r,读取二进制文件或者gbk编码的文档时用rb(读取错误'gbk' codec can't decode的时候使用)
    8cut_text = jieba.cut(f)#分词
    9text = "/".join(cut_text)
    10wordcloud = WordCloud(font_path="C:\\Windows\\Fonts\\simfang.ttf", background_color="white").generate(text)
    11plt.figure("词云图") #指定所绘图名称
    12plt.imshow(wordcloud)# 以图片的形式显示词云
    13plt.axis("off") #关闭图像坐标系
    14plt.savefig(r"D:\Desktop\ciyuntu.png",dpi=200) #用反斜杠的话会报错
    15plt.show()

    相关文章

      网友评论

          本文标题:Pyhton学习笔记(二)

          本文链接:https://www.haomeiwen.com/subject/jbssrqtx.html