python学习的第3天

三国人物top10分析

读取小说内容

with open('./novel/threekingdom.txt', 'r', encoding='utf-8') as f:
words = f.read()

分词

words_list = jieba.lcut(words)

每个词出现的次数

    for word in words_list:
            if len(word) <= 1:    #如果词的长度小于等于1不计入计算
               continue
           else:
               counts[word] = counts.get(word, 0) + 1   #词计数器,每次出现,该词+1

Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
如下图:


(Dictionary) get() 函数实例

词语过滤,删除无关词,重复词

       excludes = {"将军", "却说", "丞相", "二人", "不可", "荆州", "不能", "如此", "商议",
            "如何", "主公", "军士", "军马", "左右", "次日", "引兵", "大喜", "天下",
            "东吴", "于是", "今日", "不敢", "魏兵", "陛下", "都督", "人马", "不知",
            "孔明曰","玄德曰","刘备","云长"}
      counts['孔明'] =  counts['孔明'] +  counts['孔明曰']
      counts['玄德'] = counts['玄德'] + counts['玄德曰'] +counts['刘备']
      counts['关公'] = counts['关公'] +counts['云长']
      for word in excludes:
         del counts[word]

从counts中删掉与excludes中相同的词

匿名函数

结构
lambda x1, x2....xn: 表达式
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:


匿名函数实例

列表推导式

列表推导式书写形式:  
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
如:


列表推导式实例

列表解析

简单来说,列表解析(list comprehension)提供了一种优雅的生成列表的方法,能用一行代码代替十几行代码,而且不损失任何可读性。而且,性能还快很多很多


列表解析实例

统计图

导入

     from matplotlib import pyplot as plt
     plt.rcParams["font.sans-serif"] = ['SimHei']
     plt.rcParams['axes.unicode_minus'] = False
     import numpy as np

使用100个点 绘制 [0 , 2π]正弦曲线图
.linspace 左闭右闭区间的等差数列
x = np.linspace(0, 2*np.pi, num=100)
print(x)
y = np.sin(x)

正弦和余弦在同一坐标系下
  cosy = np.cos(x)
  plt.plot(x, y, color='g', linestyle='--',label='sin(x)')
  plt.plot(x, cosy, color='r',label='cos(x)')
  plt.xlabel('时间(s)')
  plt.ylabel('电压(V)')
  plt.title('欢迎来到python世界')
  plt.legend()   #  图例
  plt.show()

柱状图

  import string
  from random import randint
  print(string.ascii_uppercase[0:6])
  ['A', 'B', 'C'...]
  x = ['口红{}'.format(x) for x in string.ascii_uppercase[:5] ]
  y = [randint(200, 500) for _ in range(5)]
  print(x)
  print(y)
  plt.xlabel('口红品牌')
  plt.ylabel('价格(元)')
  plt.bar(x, y)
  plt.show()

饼图

  from random import randint
  import string
  counts = [randint(3500, 9000) for _ in range(6)]
  labels = ['员工{}'.format(x) for x in string.ascii_lowercase[:6] ]
  explode = [0.1,0,0, 0, 0,0]    # 距离圆心点距离
  colors = ['red', 'purple','blue', 'yellow','gray','green']
  plt.pie(counts,explode = explode,shadow=True, labels=labels, autopct = 
  '%1.1f%%',colors=colors)
   plt.legend(loc=2)
  plt.axis('equal')
  plt.show()

散点图

均值为 0 标准差为1 的正太分布数据
x = np.random.normal(0, 1, 100)
y = np.random.normal(0, 1, 100)
plt.scatter(x, y)
plt.show()

x = np.random.normal(0, 1, 1000000)
y = np.random.normal(0, 1, 1000000)

alpha透明度

plt.scatter(x, y, alpha=0.1)
plt.show()

你可能感兴趣的:(python学习的第3天)