学习python的第二天

主要内容

今天主要是学习如何制作词云,如何提取文档中出场最多的人物名

python如何读取文件

下面是具体实例展示

#读取文件 内置函数open
#file='文件的路径'使用相对路径即可,
#.当前文件夹   /代表文件夹之间的分割
#mode='r' 只读的方式
f = open(file='./threekingdom.txt',mode='r',encoding='UTF-8')
words = f.read()
print(words)
#打印文本
#关闭流
f.close()
print(len(words))
#计算文档字节长度

import的使用

#from 模块名字 import name1,name2...
from random import  randint
#等效于
import random
random randint
# import turtle
# from turtle import done

如何绘制词云

首先要学会安装第三方库文件
可以在“terminal”下直接安装,或者进入该网站https://www.lfd.uci.edu/~gohlke/pythonlibs/
选择wordcloud文件下载到本地进行安装

这里需要提醒的是:python中大小写敏感,英文大小写不同起到不同的作用
下面进行词云绘制的具体实例展示:

#词云绘制
from wordcloud import WordCloud
#如何绘制简单词云
#举例英文词云
txt = 'I like python , python is the best project language in the world'
wc = WordCloud().generate(txt)#类
wc.to_file('python.png')

三国小说词云绘制

import jieba
from wordcloud import WordCloud
import imageio
#1.读取小说
#使用with 上下文管理器进行本地文件读取
mask = imageio.imread('china.jpg')
with open('threekingdom.txt','r',encoding='UTF-8') as f:
    #与之前方法相比不需要关闭流
    words = f.read()
    # print(words)
#2.对小说字符串进行分词
words_list = jieba.lcut(words)
print(words_list)
#把返回的分词列表转化成字符串
words_text = ' '.join(words_list)
print(words_text)
#3.使用wordcloud进行绘制
WordCloud(
    background_color = 'white',
    width = 800,
    height = 600,
    font_path = 'MSYH.TTC',
    mask = mask
).generate(words_text).to_file('三国词云.png')

python的排序

li = []
for i in range(10):
    li.append(i)
print(li)
from random import shuffle
shuffle(li)
#第一种排序
print("顺序打乱后",li)
li.sort(reverse=True)
print("排序后列表",li)
  • 字典排序
stu_info = [
    {'name':'zhangsan', 'age':33},
    {'name':'lisi', 'age':8},
    {'name':'wangwu', 'age':66},
    {'name':'tianqi', 'age':17},
]

print(stu_info)
# def 函数名():
#     函数体
def sort_by_age(dict_info):
    return dict_info['age']
#
# 按照年龄进行倒序排序
# key是接受一个函数名  用于指定 按照什么进行排序
#
stu_info.sort(key=sort_by_age,reverse=True)
print('排序后', stu_info)
  • 按照名字倒序排列
stu_info = [
    {'name':'zhangsan', 'age':33},
    {'name':'lisi', 'age':8},
    {'name':'wangwu', 'age':66},
    {'name':'tianqi', 'age':17},
]

print(stu_info)
def sort_by_name(dict_info):
    return dict_info['name']


stu_info.sort(key=sort_by_name,reverse=True)
print('按照名字排序后', stu_info)

python交换和声明变量

具体实例:

#交换两个变量
a = 100
b = 10
a,b = b,a
print('a=',a)
print('b=',b)
 #一次声明多个变量
c,d,e =  100,[90,33],'hehe'
print(c)
print(d)
print()

三国出场前十人物名字词云绘制

#1.读取文件
import  jieba
from wordcloud import WordCloud

with open('threekingdom.txt','r',encoding='UTF-8') as f:
    words = f.read()
    print(words)
    word_list = jieba.lcut(words)
    excluss = {'将军','却说','丞相','二人','孔明曰','刘备','玄德曰','云长'}
    #print(len(word_list))
    #定义一个字典{'夏侯渊':788,'不来':55}
    counts = {}
    for word in word_list:
        if len(word) ==1:
            continue
        else:
            #往字典里添加元素
            # counts[word] = 取出字典中原来计数 + 1
            # counts[word] = count[word] + 1
            counts[word] = counts.get(word,0) + 1
    # print(counts)
    counts['孔明'] = counts['孔明曰'] + counts['孔明']
    counts['玄德'] = counts['玄德曰'] + counts['玄德'] + counts['刘备']
    counts['关公'] = counts['关公'] + counts['云长']
    #删除靠前与人名无关的词汇
    for word in excluss:
        del counts[word]
    #将counts转换为列表
    items = list(counts.items())
    print(items)

    def sort_by_count(x):
        return x [1]
    items.sort(key=sort_by_count,reverse=True)
    # print(items)
    #显示计数前20的词语
    role_list = []
    for i in range(10):
        #拆包 序列解包
        role_name,count = items[i]
        print(role_name,count)
        #给读代码的人看,下划线代表并没有使用临时变量
        for _ in range(count):
            role_list.append(role_name)
    print(role_list)
    text = ' '.join(role_list)
    WordCloud(
        background_color='white',
        width=800,
        height=600,
        font_path='MSYH.TTC',
        collocations=False
    ).generate(text).to_file('三国人物.png')

pass的站位

def 函数名():
    print('haha')
    pass #站位 不读取里面的内容

1~num之间的累加和

def caculate_num(num):
    result = 0
    for i in range(num+1):
        result += i
    return result
sum_num = caculate_num(100)
print(sum_num)

函数和方法

函数与方法:没区别
函数是针对于面向过程
方法是面向对象

匿名函数

格式:lambda 参数1,参数2,.....:表达式
缺点是不能反复调用
具体实例:

#做平方和加和
pf = lambda n:n*n
add =lambda x,y:x+y
print(pf(7))
print(add(3,4))

sorted和.sort的区别

  1. .sort()是列表特有的方法,sorted()适用于任何可迭代对象
  2. .sort()是在原来的列表上进行修改,sorted()是返回一个新的列表
  3. 调用形式不一样

列表推导式

#生成一个[0,1,2,···,9]
li = []
for i in range(20):
   li.append(i)
print(li)
  • 筛选出所有的偶数
new_li = []
for i in li:
    if i %2 ==0:
        new_li.append(i)
print(new_li)
#等价
li3 = [i for i in range(20) if i%2==0]
print(li3)
  • 生成正负随机列表
from random import randint
li5 = []
for _ in range(10):
    li5.append(randint(-20,20))
print(li5)
  • 使用列表推导式生成Li5
li5 = [randint(-20,20) for _ in range(10)]
print(li5)
  • 筛选所有大于零的数
res_list = [x for x in li5 if x > 0]
print(res_list)
  • 语法
    [表达式for 临时变量 in可迭代对象 筛选条件]
li2 = [i for i in range(10)]
print(li2)

切片 python中的特色

具体案例如下:

name = 'abcdefg'
print(name[0:3])#左闭右开 获取abc
#获取a c e g
print(name[0:8:2])#起始值终止值可以省略
print(name[::2])
#name进行反转  gfedcba
print(name[::-1])
#获取 f d b
print(name[-2::-2])

字符串输出

i = 3
grade = '十五'
print('这是我们上课的第{}天,我的修炼等级为{}级别'.format(i))

对分析的数据进行可视化展示

from matplotlib import pyplot as plt
#绘制条形图
import string
print(string.ascii_uppercase)
x = ['厂商{}'.format(i) for i in string.ascii_uppercase[:5]]
print(x)
from random import randint
y = [randint(200,300) for _ in range(5)]
print(y)
plt.bar(x,y)
plt.show()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容