第 10 章 Python 第三方库使用整理的文章内容主要来源为高教版《计算机等级考试二级 Python》教程视频讲义,并且更正了原讲义中的错误的地方。
专栏文章索引如下:
考试大纲
第 1 章 程序设计基本方法
第 2 章 Python 语言基本语法元素
第 3 章 基本数据类型
第 4 章 程序的控制结构
第 5 章 函数和代码复用
第 6 章 组合数据类型
第 7 章 文件和数据格式化
第 8 章 Python 计算生态
第 9 章 Python 标准库概览
第 10 章 Python 第三方库使用
第 11 章 Python 第三方库纵览
1. Python 第三方库的获取和安装
1.1 pip 工具安装1.2 自定义安装1.3 文件安装1.4 pip 工具使用 2. pyinstaller 库概述3. pyinstaller 库与程序打包4. jieba 库概述5. jieba 库与中文分词6. wordcloud 库概述7. wordcloud 库与可视化词云
1. Python 第三方库的获取和安装Python 第三方库依照安装方式灵活性和难易程度有 3 个方法,这 3 个方法是:pip 工具安装、自定义安装、文件安装。
1.1 pip 工具安装最常用且最高效的 Python 第三方库安装方式是采用 pip 工具安装。pip 是 Python 官方提供并维护的在线第三方库安装工具。对于 Python3.x 版本环境,可以采用 pip3 命令代替 pip 命令专为 Python3.x 版本安装第三方库。
使用 pip 安装第三方库需要联网。
安装命令:
pip install 库名1.2 自定义安装
自定义安装指按照第三方库提供的步骤和方式安装。第三方库都有主页用于维护库的代码和文档。科学计算用的 numpy 的官方主页是 http://numpy.org.
浏览网页找到下载链接: http://scipy.org/scipylib/download.html, 进而根据提示步骤安装。
自定义安装一般适用于在 pip 中尚无登记或安装失败的第三方库。
由于 Python 某些第三方库仅提供源代码,通过 pip 下载文件后无法在 Windows 系统编译安装,会导致第三方库安装失败。在 Windows 平台下所遇到无法安装第三方库的问题大多属于这类。
1.4 pip 工具使用除了进行第三方库安装之外,pip 工具能对第三方库进行基本的维护。执行 pip –h 将列出 pip 常用的命令。
pip支持安装 (install)、下载 (download)、卸载 (uninstall)、列表 (list)、查看(show)、查找(search) 等一系列安装和维护子命令。
pip 的 uninstall 子命令可以下载一个已经安装的第三方库。
语法格式:
pip uninstall 模块名称
pip 的 list 子命令可以列出当前系统中已经安装的第三方库。
语法格式:
pip list2. pyinstaller 库概述
使用 pyinstaller 是一个十分有用的 Python 第三方库,它能够在 Windows、Linux、MacOS 等操作系统下将 Python 源文件打包、变成直接可运行的可执行文件。
通过对源文件打包,Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。Pyinstaller 需要在命令行下用 pip 工具安装。
pip install pyinstaller
pip 指令可以将 pyinstaller 库自动安装到 python 解释器目录,与 pip 或 pip3 命令路径相同,可以直接在命令行调用。
pyinstaller 针对不同操作系统打包生成的可执行文件都不同。
使用 pyinstaller 库对 python 源文件打包十分简单。
语法结构:
pyinstaller 源文件名
执行完毕后,源文件所在目录将生成 dist 和 build 两个文件夹。其中, build 目录是 pyinstaller 存储临时文件的目录,可以安全删除。最终的打包程序在 dist 内部与源文件同种目录中,目录中其他文件是可执行文件的动态链接库。
可以通过 -F 参数对 Python 源文件生成一个独立的可执行文件。
pyinstaller –F a.py
执行后在 dist 目录中出现了 a.exe 文件,没有任何依赖库,执行它即可运行程序。
使用 pyinstaller 库需要注意以下问题:
文件路径不能出现空格和英文句号(.). 源文件必须是UTF-8编码,暂时不支持其他编码类型。
pyinstaller 命令的常用参数及功能如下所示:
| 序号 | 参数 | 功能 |
|---|---|---|
| 1 | -h, --help | 查看帮助 |
| 2 | –clean | 清理打包过程中的临时文件 |
| 3 | -D,–onedir | 默认值,生成dist目录 |
| 4 | -F,–onefile | 在dist文件夹中只能生成独立的打包文件 |
| 5 | -i<图标文件名> | 指定打包程序使用的图标icon文件 |
pyinstaller 命令不需要在 Python 源文件中增加代码,只需要通过命令进行打包即可。
4. jieba 库概述由于中文文本的单词不是通过空格或者标点符号分割,中文及类似语言存在一个重要的“分词”问题。
jieba 是 Python 中一个重要的第三方中文分词函数库,能够将一段中文文本分割成中文词语的序列,jieba 可以通过 pip 指令安装。
pip install jieba -i https://mirrors.aliyun.com/pypi/simple
jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组,除了分词,jieba 还提供增加自定义中文单词的功能。
jieba 库支持三种分词模式:精确模式,将句子最精确地切分,适合文本分析;全模式,把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;搜索引擎模式,在精确模式基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
对中文分词来说,jieba只需要一行代码。(英文文本不存在分词问题)
jieba 库主要提供中文分词功能,可以辅助自定义分词词典。
jieba 库常用的分词函数及描述:
| 序号 | 函数 | 描述 |
|---|---|---|
| 1 | jieba.lcut(s) | 精确模式,返回一个列表类型 |
| 2 | jieba.lcut(s, cut_all=True) | 全模式,返回一个列表类型 |
| 3 | jieba.lcut_for_search(s) | 搜索引擎模式,返回一个列表类型 |
| 4 | jieba.add_word(w) | 向分词字典中增加新词 w |
jieba.lcut(s) 是最常用的中文分词函数,用于精确模式,即将字符串分割成等量的中文词组,返回结果是列表类型。
jieba.lcut(s,cut_all=True) 用于全模式,即将字符串的所有分词可能均列出来,返回结果是列表类型,冗余性最大。
相比于精确模式,全模式会找到所有分词可能,比如“计算机”被分词为 3 个可能词语“计算”、“计算机”、“算机”。
jieba.lcut_for_search(s) 返回搜索引擎模式,该模式首先执行精确模式,然后再对其中长词进一步切分获得最终结果。
相比精确模式,其中长词 “计算机”被再次分词成“计算”、“算机”、“计算机”三个词语,存在一定冗余。
提示:精确模式因为不产生冗余,最为常用。
搜索引擎模式更倾向于寻找短词语,这种方式具有一定冗余度,但冗余度相比全模式较少。实例中,搜索引擎模式没有产生“国计”的分词结果,因为精确模式并未产生这个词语。
3 种分词模式如何选择?看需求。
如果希望对文本精确分词,不产生冗余,只能选择 jieba.lcut(s) 函数,即精确模式。如果希望对文本分词更准确,不漏掉任何可能的分词结果,请选用全模式。如果没想好怎么用,可以使用搜索引擎模式。
jieba.add_word() 函数,用来向 jieba 词库增加新的单词。
数据展示的方式多种多样,传统的统计图尽管很”科学“,但略显古板,尤其对于文本来说,更加直观,带有一定的艺术感的展示效果需要很大。对于这类需求,词云特有的展示方式深得人心。
词云以词语为基本单元,根据其在文本中出现的频率设计不同大小以形成视觉上的不同效果:形成”关键云层“或”关键词渲染“,从而使得读者只要”一瞥“即可领略文本的主旨,这种展示方式已经成为文本展示的样板。
wordcloud 库是专门用于根据文本生成词云的 Python 第三方库,十分常用且有趣。
能够将文本转变成词云,也是一种必备能力。
pip install wordcloud -i https://mirrors.aliyun.com/pypi/simple
在生成词云时,wordcloud 默认会以空格或标点分隔符对目标文本进行分词处理,对于中文文本,分词处理需要由用户来完成,一般步骤是先将文本分词处理,然后以空格拼接,再调用 wordcloud 库函数,处理中文时还需要指定中文字体。
在生成词云时,wordcloud 默认会以空格或标点分隔符对目标文本进行分词处理。对于中文文本,分词处理需要由用户来完成。一般步骤是先将文本分词处理,然后以空格拼接,再用调用 wordcloud 库函数,处理中文时还需要指定中文字体。例如,选择了微软雅黑 (msyh.ttc, 该文件在 C:WindowsFonts 文件夹下) 作为显示效果,需要将该字体文件与代码存放在同一目录下或在字体文件名前加上完整路径。
import jieba
from wordcloud import WordCloud
txt = '程序设计语言是计算机能够理解和识别用户操作意图的一种交互体系,它按照特定规则组织计算机指令,使计算机能够自动进行处理各种运算异常'
words = jieba.lcut(txt)
newtxt = ''.join(words)
wordcloud = WordCloud(font_path='msyh.ttc').generate(newtxt)
wordcloud.to_file('词云中文案例.png')
wordcloud 库的核心是 WordCloud 类,所有的功能都封装在 WordCloud 类中,使用时需要实例化一个 WordCloud 类的对象,并调用其generate(text) 方法将 text 文本转化为词云。WordCloud 在创建时有一系列可选参数,用于配置词云图片。
WordCloud 对象创建的常用参数及功能介绍如下:
| 序号 | 参数 | 功能 |
|---|---|---|
| 1 | font_path | 指定字体文件的完整路径,默认 None |
| 2 | width | 生成图片宽度,默认为 400 像素 |
| 3 | height | 生成图片高度,默认为 200 像素 |
| 4 | mask | 词云形状,默认为 None, 即方形图 |
| 5 | min_font_size | 词云中最小的字体号,默认为 4 号 |
| 6 | font_step | 字号步进间隔,默认为 1 |
| 7 | max_font_size | 词云中最大的字体字号,默认 None, 根据高度自动调节 |
| 8 | max_words | 词云图中最大词数,默认为 200 |
| 9 | stopwords | 被排除词列表,排除词不在词云中显示 |
| 10 | backgroup_color | 图片背景色,默认黑色 |
WordCloud 类的常用方法及功能介绍如下表所示:
| 序号 | 方法 | 功能 |
|---|---|---|
| 1 | generate(text) | 由 text 文本生成词云 |
| 2 | to_file(filename) | 将词云图保存为名为 filename 的文件 |
wordcloud 可以生成任何形状的词云,为了获取形状,需要提供一张形状的图像,类似于下面这张纯背景的中国地图的图片。
可以利用这张背景图,生成一个词云图。
from wordcloud import WordCloud
import numpy as np
from PIL import Image
import jieba
mask = np.array(Image.open("ChinaMap.png"))
wcd = WordCloud(background_color="white",max_words=500,height=480,width=854,
max_font_size=100,font_path="msyh.ttc",mask=mask,
repeat=True,colormap="Reds")
# 读入文本内容
text = open("词云文本素材.txt", 'r').read()
ss = " ".join(jieba.lcut(text))
wcd.generate(ss)
wcd.to_file("词云图片.png")



