Python第三方库
第三方库安装:pip安装,自定义安装,文件安装
pip install
pip uninstall
pip list
pip show
pip download
pip search
PyInstaller库
将Python程序打包,变成可执行文件,可以在没有安装python的环境中运行
使用PyInstaller对源程序打包十分简单
PyInstaller <文件名>
执行完毕之后,源文件所在目录生成dist和build两个文件夹,最终打包程序在dist内部
通过-F对源文件生成可执行文件
PyInstaller -F
-clean 清理打包过程中临时文件
-D 生成dist目录
-F 只生成独立打包文件
-i 指定使用的图标icon文件
jieba库
中文文本中的单词不是通过空格和标点分隔,重要的分词问题
jieba库的分词原理是利用一个中文词库,将待分词的内容和分词库比对,通过图结构和动态规划的方法找到最大概率词组,还提供自定义中文单词的功能
jieba库支持三种分词模式:
准确模式:将句子最精确分开,适合文本分析
全模式:将句子中所有成词的词语扫描出来,速度快,不解决歧义
搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合做引擎
import jieba
jieba.lcut('计算机二级考试')
jieba.lcut()用于精准模式,将字符串切割为等量中文词组,返回列表
jieba.lcut(s,cut_all=True) 用于全模式,将所有的可能列出来,出现冗余
jieba.lcut_for_search(s)返回搜索引擎模式,首先执行精准模式,再进一步分切得到结果
jieba.add_word(‘aaa’)向jieba库中增加新的单词
wordcloud库
根据文本中出现的频率设计关键词云层
from wordcloud import WordCloud
txt = 'i like python'
wc = WordCloud().generate(txt)
wc.to_file('a.png')
wordcloud库与可视化
生成词云时,会默认以空格或标点为分隔符对目标文本处理,对中文文本的处理需要由用户完成,一般步骤是现将文本处理,然后空格拼接,再调用wordcloud函数
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对象创建的常用参数:
font_path:指定文字文件的完整路径
width:图片宽度,默认400
height:图片高度,默认200
mask:词云形状,默认方形图
min_font_size:最小字体,默认4
font_step:字体间隔,默认1
max_font_size:最大字体,根据高度自动调节
max_words:最大词数,默认200
stopwords:排除词
background_color
WordCloud类的常用方法:
generate(text) 由text文本生成词云
to_file(filename) 保存
人形可视化词云
from wordcloud import WordCloud
from imageio import imread
import jieba
mask = imread('kongzi.png')
with open('lunyu.txt', 'r', encoding='utf-8') as file:
text = file.read()
ls = jieba.lcut(text)
txt = ' '.join(ls)
wordcloud = WordCloud(background_color='white', width=800, height=600,font_path = 'C:/Users/Windows/fonts/simhei.ttf', max_words=200, max_font_size=80, mask=mask).generate(txt)
wordcloud.to_file('lunyuword.png')
注意:只能使用白底图片,在非白色地方填上数字
红楼梦出场人物统计
import jieba
from wordcloud import WordCloud
f = open('honglou.txt', 'r', encoding='utf-8')
txt = f.read()
f.close()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
else:
counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key = lambda x:x[1], reverse=True)
for i in range(50):
word, count = items[i]
print('{0:<10}{1:>5}'.format(word, count)) #词频统计
excludes = {'什么','一个','我们','那里','如今','你们','说道','知道','这里','起来','姑娘','出来',
'他们', '众人','奶奶','老太太','自己','太太','一面','两个','只见','没有','怎么','不是','不知','这个',
'听见','这样','进来','咱们','告诉','就是','东西','大家','老爷','只是','只得','不敢','这些'}
f = open('honglou.txt', 'r', encoding='utf-8')
txt = f.read()
f.close()
words = jieba.lcut(txt)
newt = ' '.join(words)
wordcloud = WordCloud(background_color='white',
width=800,
height=600,
font_path='msyh.ttc',
max_words=200,
max_font_size=80,
stopwords=excludes).generate(newt)
wordcloud.to_file('honglou.png')