python基础第三课

文档读取,词云,分词

1.词云的生成

安装wordcloud库,imageio库
若在线pip install wordcloud库失败,选择离线安装:(解决c++环境缺失的问题)在工作目录保存wordcloud.whl文件后,打开终端 pip install [文件路径]文件名进行安装

import jieba
from wordcloud import WordCloud
text = '''词语是词和语的合称,包括单词词组及整个词汇文字组成语句文章的最小组词结构形式。新词典词语丰富,信息量大。词是由语素组成的最小的造句单位。词语有2字、3字及4字的分类   '''
txt_list = jieba.lcut(text)
txt = ' '.join(txt_list)
print(txt)
 w = WordCloud(
     background_color = 'white', #背景颜色
     font_path = 'msyh.ttc', #字体
     width = 400, #宽
     height = 300 #高
 ).generate(text)

w.to_file('词云.jpg')#保存词云

A.jpg
2.文本读取
import jieba
with open('build/novel/threekingdom.txt', 'r', encoding = 'utf-8')as f:
     print(f.read)

另一种形式

txt = open('build/novel/threekingdom.txt', 'r', encoding = 'utf-8').read()
3.生成任意形状的词云
import jieba
import imageio
from wordcloud import WordCloud
mask = imageio.imread('china.jpg')
with open('build/novel/threekingdom.txt', 'r', encoding= 'UTF-8') as f:
    data = f.read()
    # print(data)
    # print(len(data))
    word_list = jieba.lcut(data)
    word = " ".join(word_list)
    #print(word_list)
    print(len(word_list))
    w = WordCloud(
        background_color = 'white',
        font_path = 'msyh.ttc',
        width = 800,
        height = 600,
        mask = mask
        # max_words = 40,        # min_font_size = 80
        # max_font_size = 80
    ).generate(word)

    w.to_file('threekingdom.png')
threekingdom.png
4.排序

生成一个列表,然后随机随机打乱列表顺序

li = []
for i in range(10):
    li.append(i)
print('生成的li:',li)
from random import shuffle
shuffle(li)
print('打乱顺序之后的li:', li)

对列表重新进行排序
这里采用两种方法:
1.使用 list对象的sort方法

li.sort()
print('使用sort方法进行排序之后:', li)
# reverse=True倒序排序
li.sort(reverse=True)
print('使用sort方法,指定reverse进行排序之后:', li)
  1. 使用内置函数sorted
li = sorted(li)
print('使用sorted函数排序之后', li)
li = sorted(li, reverse=True)
print('使用sorted函数, reverse=True 排序之后', li)

总结: sort和sorted的区别

  1. sort仅针对列表进行排序, 无返回值,会在原来的列表基础上修改
  2. sorted 是python中单独的内置函数,可以对可迭代(iterable)对象进行排序,不局限于list, 它不改表原生的数据,重新生成一个新的队列
5.函数
  • 以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明,函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def 函数名(参数):
    function_suite
    return [表达式]

实例:

def calculatNum(num):
    sum = 0
    for i in range(1, num + 1):
        sum += i
    return sum
num = int (input('请输入任意整数:'))
print('1到{}之间的累积和为{}'.format(num, calculatNum(num)))

stu_info_list = [
    {'name': 'zhangsan', 'age': 18, 'addr': '浑南'},
    {'name': 'lisi', 'age': 50, 'addr': '浑南'},
    {'name': 'wangwu', 'age': 3, 'addr': '浑南'},
    {'name': 'zhaoliu', 'age': 35, 'addr': '浑南'},
    {'name': 'tianqi', 'age': 20, 'addr': '浑南'}

]
print('排序前', stu_info_list)
def sort_by_age(x):
    return x['age']

stu_info_list.sort(key = sort_by_age)
print('排序后', stu_info_list)
6.匿名函数

python 使用 lambda 来创建匿名函数。

  • lambda只是一个表达式
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression

实例:

sum_two_num = lambda x, y : x + y
print(sum_two_num(1, 5))#6

使用带有匿名函数的表达式进行排序

stu_info_list = [
    {'name': 'zhangsan', 'age': 18, 'addr': '浑南'},
    {'name': 'lisi', 'age': 50, 'addr': '浑南'},
    {'name': 'wangwu', 'age': 3, 'addr': '浑南'},
    {'name': 'zhaoliu', 'age': 35, 'addr': '浑南'},
    {'name': 'tianqi', 'age': 20, 'addr': '浑南'}
]
stu_info_list1 = sorted(stu_info_list, key=lambda items:items['age'], reverse = True)
print(stu_info_list1)

利用上述所学实现,实例:三国人物出现频率top10分析

  • 出现频率前20的词汇统计代码
import jieba
with open('build/novel/threekingdom.txt', 'r', encoding = 'utf-8')as f:
    data = f.read()#读取文件
    words_list = jieba.lcut(data)#分词
    #print(words_list)
    #构建一个容器,存储我们的数据
    counts = {}
    #遍历wordlist,筛选出人名
    for word in words_list:
        #print(word)
        if len(word) <= 1:
            #过滤无关词语
            continue
        else:
            #向counts内更新值
            counts[word] = counts.get(word, 0) + 1
#print(counts)
items = list(counts.items())
items.sort(key = lambda x:x[1], reverse = True)
#print(items)
for i in range(20):
    word,count = items[i]
    print('"{}"出现次数:{}'.format(word, count))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 223,567评论 6 521
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,644评论 3 401
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 170,540评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,466评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,481评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,026评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,414评论 3 426
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,376评论 0 278
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,914评论 1 322
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,967评论 3 343
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,104评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,758评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,429评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,920评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,038评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,586评论 3 380
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,129评论 2 362

推荐阅读更多精彩内容