北京理工大学-嵩天python语言程序设计-9-Python计算生态概览

第九章 Python计算生态概览
9.1从数据处理到人工智能
9.2实例15霍兰德人格分析雷达图
9.3从web分析到网络空间
9.4从人机交互到艺术设计
9.5实例16:玫瑰花绘制

方法论
-概览Python计算生态,看见更大的世界

实践能力
-初步编写带有计算生态的复杂程序

9.1从数据处理到人工智能

  • 9.1.1 Python库之数据处理
  • 9.1.2 Python库之数据可视化
  • 9.1.3 Python库之文本处理
  • 9.1.4 Python库之机器学习

数据表示->数据清洗->数据统计->数据可视化->数据挖掘->人工智能

  • 数据表示:采用合适方式使用程序表达数据
  • 数据清洗:数据归一化、数据转化、异常值处理
  • 数据统计:数据的该要理解,数量、分布、中位数等
  • 数据可视化:直观展示数据内涵的方式
  • 数据挖掘:从数据分析获得只是、产生数据外的价值
  • 人工智能:数据/语言/图像视觉等方面深度分析与决策

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第1张图片

9.1.1 Python库之数据处理
Numpy:表达N维数组的最基础库

特点

  • Python 接口使用,C语言实现,计算速度优异
  • Python数据分析及科学计算的基础库,支撑Pandas等
  • 提供直接的矩阵算法、广播函数、线性代数等功能
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第2张图片
    Pandas:Python数据分析高层次应用库
  • 提供了简单易用的数据结构和数据分析工具
  • 理解数据类型与索引的关系,操作索引即操作数据
  • Python最主要的数据分析功能库,基于Numpy开发

特点
Pandas数据提供2个核心数据结构

  • Series=索引+一维数据
  • DataFrame=行列索引+二维数据

也提供了一个数学、科学和工程计算功能库
SciPy:数学、科学和工程计算功能库

  • 提供了一批数学算法及工程数据运算功能
  • 类似Matlab,可用于傅里叶变换、信号处理等应用
  • Python最主要的科学计算功能库,基于Numpy开发

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第3张图片
9.1.2 Python库之数据可视化

Matplotlib:高质量的二维数据可视化功能库

  • 提供了超过100种数据可视化展示效果
  • 提供maltplotlib.pyplot子库调用各可视化效果
  • Python最主要的数据可视化功能库,基于Numpy开发

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第4张图片

Seaborn:统计类数据可视化功能库

  • 提供了一批高层次的统计类数据可视化展示效果
  • 主要展示数据间的分布、分类和线性关系等内容
  • 基于Matplotlib开发,支持Numpy和Pandas

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第5张图片

Mayavi:三维科学数据可视化功能库

  • 提供了一批简单易用的3D科学数据可视化展示效果

  • 目前版本时Mayavi2、三维可视化最主要的第三方库

  • 支持Numpy、TVTK、Traits、Envisage
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第6张图片
    9.1.3 Python库之文本处理
    PyPDF2:用来处理PDF文件的工具集
    http://mstamy2.github.io/PyPDF2

  • 提供了一批处理PDF文件的计算共功能

  • 支持获取信息、分割/整合文件、加密解密等

  • 完全Python语言实现,不需要额外依赖,功能稳定

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第7张图片

from PyPDF2 import PdfFileReader, PdfFileMerger
merger = PdfFileMerger()
input1 = open("document1.pdf", "rb")
input2 = open("document2.pdf", "rb")
merger.append(fileobj = input1, pages = (0,3))
merger.merge(position = 2, fileobj = input2, pages = (0,1))
output = open("document-output.pdf", "wb")
merger.write(output)

NLTK:自然语言文本处理第三方库

  • 提供了一批简单易用的自然语言文本处理功能
  • 支持语言文本分类、标记、语法句意、语义分析等
  • 最优秀的Python自然语言处理库

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第8张图片

Python-docx:创建或更新Microsoft Word 文件的第三方库

  • 提供创建或更新doc,docx等文件的计算功能
  • 增加并配置段落、图片、表格、文字、功能全面
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第9张图片
from docx import Document
document = Document()
document.add_heading('Document Title', 0)
p = document.add_paragraph('A plain paragraph having some ')
document.add_page_break()
document.save('demo.docx')

9.1.4 Python库之机器学习
Scikit-learn:机器学习方法工具集

  • 提供一批统一化的机器学习方法功能接口
  • 提供聚类、分类、回归、强化学习等计算功能
  • 机器学习最基本且最优秀的Python第三方库
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第10张图片

TensorFlow:AlphaGO背后的机器学习计算框架

  • 谷歌公司推动的开源机器学习框架
  • 将数据流图作为基础,图节点代表运算,边代表张量
  • 应用机器学习方法的一种方式,支撑谷歌人工智能应用

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第11张图片

MXNet:基于神经网络的深度学习计算架构

  • 提供可扩展的神经网络及深度学习计算功能
  • 可用于自动驾驶、机器翻译、语言识别等众多领域
  • Python最重要的深度学习计算框架
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第12张图片

单元小结
Numpy、Pandas、SciPy
Matplotlib、Seaborn、Mayavi
PyPDF2、NLTK、python-docx
Scikit-learn、TensorFlow、MXNet

小花絮
小议"函数式编程"
"函数式编程"用函数将程序组织起来,貌似很流行,为何不早学呢?

  • 第一,函数式编程主要源于C语言,Python不是C,这说法不流行
  • 第二,不要纠结于名字,关键在于按照"控制流"编程的过程式编程思维
  • 第三,Python编程中函数不必须,因此更灵活,更探寻本质。如果您学过其他编程语言,不要被束缚,从本质上看待Python才更有趣!

9.2实例15:霍兰德人格分析雷达图
9.2.1霍兰德人格分析雷达图,问题分析
雷达图
北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第13张图片
霍兰德人格分析

  • 霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系
  • 人格分类:研究型、艺术型、社会型、企业型、传统型、现实性
  • 职业:工程师、实验员、艺术家、推销员、记事员、社会工作者

霍兰德人格分析雷达图

  • 需求:雷达图方式验证霍兰德人格分析
  • 输入:各职业人群结合兴趣的调研数据
  • 输出:雷达图
  • 通用雷达图绘制:matplotlib库 - 专业的多维数据表示: numpy库 - 输出:雷达图
import numpy as ny
import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family']='SimHei'
radar_labels=ny.array(['研究型(I)','艺术型(A)','社会型(S)','企业型(E)','常规型(C)','现实型(R)'])
data=ny.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
              [0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
              [0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
              [0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
              [0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
              [0.34, 0.31, 0.38, 0.40, 0.92, 0.28]])
data_labels = ('艺术家', '实验员', '工程师', '推销员', '社会工作者', '记事员')
angles = np.linspace(0, 2 * np.pi, 6, endpoint=False)
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]]))
radar_labels = np.concatenate((radar_labels, [radar_labels[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles, data, 'o-', linewidth=1, alpha=0.2)
plt.fill(angles, data, alpha=0.25)
plt.thetagrids(angles * 180 / np.pi, radar_labels)
plt.figtext(0.52, 0.95, '霍兰德人格分析', ha='center', size=20)
legend = plt.legend(data_labels, loc=(0.94, 0.80), labelspacing=0.1)
plt.setp(legend.get_texts(), fontsize='large')
plt.grid(True)
plt.savefig('holland_radar.jpg')
plt.show()

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第14张图片
9.2.3 "霍兰德人格分析雷达图"举一反三
目标 + 沉浸 + 熟练

  • 编程的目标感:寻找感兴趣的目标,寻(wa)觅(jue)之
  • 编程的沉浸感:寻找可实现的方法,思(zuo)考(mo)之
  • 编程的熟练度:练习、练习、再练习,熟练之

9.3 从Web解析到网络空间
9.3.1 Python库之网络爬虫
9.3.2 Python库之Web信息提取
9.3.3 Python库之Web网站开发
9.3.4 Python库之网络应用开发

9.3.1 Python库之网络爬虫
Requests: 最友好的网络爬虫功能库

  • 提供了简单易用的类HTTP协议网络爬虫功能
  • 支持连接池、SSL、Cookies、HTTP(S)代理等
  • Python最主要的页面级网络爬虫功能库
    http://www.python-requests.org/
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第15张图片

Scrapy: 优秀的网络爬虫框架

  • 提供了构建网络爬虫系统的框架功能,功能半成品
  • 支持批量和定时网页爬取、提供数据处理流程等
  • Python最主要且最专业的网络爬虫框架
    https://scrapy.org
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第16张图片

pyspider: 强大的Web页面爬取系统

  • 提供了完整的网页爬取系统构建功能
  • 支持数据库后端、消息队列、优先级、分布式架构等
  • Python重要的网络爬虫类第三方库
    http://docs.pyspider.org

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第17张图片

9.3.2 Python库之Web信息提取
Beautiful Soup: HTML和XML的解析库

  • 提供了解析HTML和XML等Web信息的功能
  • 又名beautifulsoup4或bs4,可以加载多种解析引擎
  • 常与网络爬虫库搭配使用,如Scrapy、requests等
    https://www.crummy.com/software/BeautifulSoup/bs4

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第18张图片

Re: 正则表达式解析和处理功能库

  • 提供了定义和解析正则表达式的一批通用功能
  • 可用于各类场景,包括定点的Web信息提取
  • Python最主要的标准库之一,无需安装
    https://docs.python.org/3.6/library/re.html

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第19张图片

Python-Goose: 提取文章类型Web页面的功能库

  • 提供了对Web页面中文章信息/视频等元数据的提取功能
  • 针对特定类型Web页面,应用覆盖面较广
  • Python最主要的Web信息提取库
    https://github.com/grangier/python-goose
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第20张图片
    我的python 时python3
    因此下载的也是goose3

在Anaconda命令行安装Goose3
pip install goose3 
然后在python编译器使用

from goose3 import Goose
from goose3.text import StopWordsChinese
from goose3 import Goose
from goose3.text import StopWordsChinese

url = 'http://www.elmundo.es/elmundo/2012/10/28/espana/1351388909.html'
g = Goose({'use_meta_language': False, 'target_language':'es'})
article = g.extract(url=url)
article.cleaned_text

9.3.3 Python库之Web网站开发
Django: 最流行的Web应用框架

  • 提供了构建Web系统的基本应用框架
  • MTV模式:模型(model)、模板(Template)、视图(Views)
  • Python最重要的Web应用框架,略微复杂的应用框架
    https://www.djangoproject.com

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第21张图片

Pyramid: 规模适中的Web应用框架

  • 提供了简单方便构建Web系统的应用框架
  • 不大不小,规模适中,适合快速构建并适度扩展类应用
  • Python产品级Web应用框架,起步简单可扩展性好
    https://trypyramid.com/

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第22张图片

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
    return Response('Hello World!')
if __name__ == '__main__':
    with Configurator() as config:
        config.add_route('hello', '/')
        config.add_view(hello_world, route_name='hello')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 6543, app)
    server.serve_forever()

Flask: Web应用开发微框架

  • 提供了最简单构建Web系统的应用框架
  • 特点是:简单、规模小、快速
  • Django > Pyramid > Flask
    http://flask.pocoo.org

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第23张图片

from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello_word():
    return"Hello,world!"

9.3.4 Python库之网络应用开发
WeRoBot: 微信公众号开发框架

  • 提供了解析微信服务器消息及反馈消息的功能
  • 建立微信机器人的重要技术手段
    https://github.com/offu/WeRoBot
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第24张图片

aip: 百度AI开放平台接口

  • 提供了访问百度AI服务的Python功能接口
  • 语音、人脸、OCR、NLP、知识图谱、图像搜索等领域
  • Python百度AI应用的最主要方式
    https://github.com/Baidu-AIP/python-sdk
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第25张图片

MyQR: 二维码生成第三方库

  • 提供了生成二维码的系列功能
  • 基本二维码、艺术二维码和动态二维码
    https://github.com/sylnsfar/qrcode
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第26张图片

单元小结
从Web解析到网络空间

  • Requests、Scrapy、pyspider
  • Beautiful Soup、Re、Python-Goose
  • Django、Pyramid、Flask
  • WeRobot、aip、MyQR

9.4 从人机交互到艺术设计
9.4.1 Python库之图形用户界面
9.4.2 Python库之游戏开发
9.4.3 Python库之虚拟现实
9.4.4 Python库之图形艺术

9.4.1 Python库之图形用户界面
PyQt5: Qt开发框架的Python接口

  • 提供了创建Qt5程序的Python API接口
  • Qt是非常成熟的跨平台桌面应用开发系统,完备GUI
  • 推荐的Python GUI开发第三方库
    https://www.riverbankcomputing.com/software/pyqt

wxPython: 跨平台GUI开发框架

  • 提供了专用于Python的跨平台GUI开发框架
  • 理解数据类型与索引的关系,操作索引即操作数据
  • Python最主要的数据分析功能库,基于Numpy开发
    https://www.wxpython.org

PyGObject: 使用GTK+开发GUI的功能库

  • 提供了整合GTK+、WebKitGTK+等库的功能
  • GTK+:跨平台的一种用户图形界面GUI框架
  • 实例:Anaconda采用该库构建GUI
    https://pygobject.readthedocs.io

9.4.2 Python库之游戏开发
PyGame: 简单的游戏开发功能库

  • 提供了基于SDL的简单游戏开发功能及实现引擎
  • 理解游戏对外部输入的响应机制及角色构建和交互机制
  • Python游戏入门最主要的第三方库
    http://www.pygame.org
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第27张图片

Panda3D: 开源、跨平台的3D渲染和游戏开发库

  • 一个3D游戏引擎,提供Python和C++两种接口
  • 支持很多先进特性:法线贴图、光泽贴图、卡通渲染等
  • 由迪士尼和卡尼基梅隆大学共同开发
    http://www.panda3d.org
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第28张图片

cocos2d: 构建2D游戏和图形界面交互式应用的框架

  • 提供了基于OpenGL的游戏开发图形渲染功能
  • 支持GPU加速,采用树形结构分层管理游戏对象类型
  • 适用于2D专业级游戏开发
    http://python.cocos2d.org/

9.4.3 Python库之虚拟现实
VR Zerot: 在树莓派上开发VR应用的Python库

  • 提供大量与VR开发相关的功能
  • 针对树莓派的VR开发库,支持设备小型化,配置简单化
  • 非常适合初学者实践VR开发及应用
    https://github.com/WayneKeenan/python-vrzero

pyovr: Oculus Rift的Python开发接口

  • 针对Oculus VR设备的Python开发库
  • 基于成熟的VR设备,提供全套文档,工业级应用设备
  • Python+虚拟现实领域探索的一种思路
    https://github.com/cmbruns/pyovr

Vizard: 基于Python的通用VR开发引擎

  • 专业的企业级虚拟现实开发引擎
  • 提供详细的官方文档
  • 支持多种主流的VR硬件设备,具有一定通用性
    http://www.worldviz.com/vizard-virtual-reality-software
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第29张图片

9.4.4 Python库之图形艺术
Quads: 迭代的艺术

  • 对图片进行四分迭代,形成像素风
  • 可以生成动图或静图图像
  • 简单易用,具有很高展示度
    https://github.com/fogleman/Quads
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第30张图片

ascii_art: ASCII艺术库

  • 将普通图片转为ASCII艺术风格
  • 输出可以是纯文本或彩色文本
  • 可采用图片格式输出
    https://github.com/jontonsoup4/ascii_art
    北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第31张图片

turtle: 海龟绘图体系
北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第32张图片

单元小结
从人机交互到艺术设计

  • PyQt5、wxPython、PyGObject
  • PyGame、Panda3D、cocos2d
  • VR Zero、pyovr、Vizard
  • Quads、ascii_art、turtle

小花絮
https://python123.io

这是一段不超过20行的小代码
虽短却小有创意,请实践之
这是别人的精彩,你的呢?

9.5 实例16: 玫瑰花绘制

9.5.1 "玫瑰花绘制"问题分析

  • 需求:用Python绘制一朵玫瑰花,献给所思所念

  • 输入:你的想象力!

  • 输出:玫瑰花

  • 绘制机理:turtle基本图形绘制

  • 绘制思想:因人而异

  • 思想有多大、世界就有多大

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第33张图片

9.5.2 "玫瑰花绘制"实例展示

import turtle

# 设置初始位置
turtle.penup()  # 提起画笔
turtle.left(90)  # 逆时针旋转九十度
turtle.fd(200)  # 向前移动一段距离 fd=forward
turtle.pendown()  # 放下画笔移动画笔开始绘制
turtle.right(90)   # 顺时针旋转九十度

# 花蕊
turtle.fillcolor("red")  # 填充颜色
turtle.begin_fill()  # 开始填充
turtle.circle(10, 180)  # 画一圆,10是半径,180是弧度
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()  # 结束填充

# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)  # urtle.setheading(angle) 或 turtle.seth(angle):改变行进方向 angle:行进方向的绝对角度,可以为负值
turtle.circle(80, 98)
turtle.circle(-90, 40)

# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)

# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()

turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)

# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()

turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)

# 设置成画完不会自动退出
turtle.done()

北京理工大学-嵩天python语言程序设计-9-Python计算生态概览_第34张图片

9.5.3 "玫瑰花绘制"举一反三
艺术之于编程,设计之于编程

  • 艺术:思想优先,编程是手段
  • 设计:想法和编程同等重要
  • 工程:编程优先,思想次之

编程不重要,思想才重要!

  • 认识自己:明确自己的目标,有自己的思想(想法) - 方式方法:编程只是手段,熟练之,未雨绸缪为思想服务
  • 为谁编程:将自身发展与祖国发展相结合,创造真正价值

好吧,算是跟着嵩老师基本走了一遍Python基础,将得非常细致,还能跟着上手操作一些,非常良心的课程,并且不啰嗦,全是干货,继续再接再厉吧,接触一些其他的操作,包括图形展示和爬虫,巩固基础。非常赞!!!!

你可能感兴趣的:(Python,学习之旅,学习充电,python,数据挖掘,数据分析)