第九章 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库之机器学习

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

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

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

特点

  • Python 接口使用,C语言实现,计算速度优异
  • Python数据分析及科学计算的基础库,支撑Pandas等
  • 提供直接的矩阵算法、广播函数、线性代数等功能

    Pandas:Python数据分析高层次应用库
  • 提供了简单易用的数据结构和数据分析工具
  • 理解数据类型与索引的关系,操作索引即操作数据
  • Python最主要的数据分析功能库,基于Numpy开发

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

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

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

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


9.1.2 Python库之数据可视化

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

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

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

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

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

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

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

  • 支持Numpy、TVTK、Traits、Envisage

    9.1.3 Python库之文本处理
    PyPDF2:用来处理PDF文件的工具集
    http://mstamy2.github.io/PyPDF2

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

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

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

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-docx:创建或更新Microsoft Word 文件的第三方库

  • 提供创建或更新doc,docx等文件的计算功能
  • 增加并配置段落、图片、表格、文字、功能全面
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第三方库

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

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

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

  • 提供可扩展的神经网络及深度学习计算功能
  • 可用于自动驾驶、机器翻译、语言识别等众多领域
  • Python最重要的深度学习计算框架

单元小结
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霍兰德人格分析雷达图,问题分析
雷达图

霍兰德人格分析

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

霍兰德人格分析雷达图

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


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/

Scrapy: 优秀的网络爬虫框架

  • 提供了构建网络爬虫系统的框架功能,功能半成品
  • 支持批量和定时网页爬取、提供数据处理流程等
  • Python最主要且最专业的网络爬虫框架
    https://scrapy.org

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

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

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

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

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

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

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

  • 提供了对Web页面中文章信息/视频等元数据的提取功能
  • 针对特定类型Web页面,应用覆盖面较广
  • Python最主要的Web信息提取库
    https://github.com/grangier/python-goose

    我的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 StopWordsChineseurl = '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

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

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

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

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

aip: 百度AI开放平台接口

  • 提供了访问百度AI服务的Python功能接口
  • 语音、人脸、OCR、NLP、知识图谱、图像搜索等领域
  • Python百度AI应用的最主要方式
    https://github.com/Baidu-AIP/python-sdk

MyQR: 二维码生成第三方库

  • 提供了生成二维码的系列功能
  • 基本二维码、艺术二维码和动态二维码
    https://github.com/sylnsfar/qrcode

单元小结
从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

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

  • 一个3D游戏引擎,提供Python和C++两种接口
  • 支持很多先进特性:法线贴图、光泽贴图、卡通渲染等
  • 由迪士尼和卡尼基梅隆大学共同开发
    http://www.panda3d.org

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

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

  • 对图片进行四分迭代,形成像素风
  • 可以生成动图或静图图像
  • 简单易用,具有很高展示度
    https://github.com/fogleman/Quads

ascii_art: ASCII艺术库

  • 将普通图片转为ASCII艺术风格
  • 输出可以是纯文本或彩色文本
  • 可采用图片格式输出
    https://github.com/jontonsoup4/ascii_art

turtle: 海龟绘图体系

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

  • 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基本图形绘制

  • 绘制思想:因人而异

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

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()

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

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

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

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

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

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

  1. python语言程序设计教程-Python语言程序设计(视频教程)

    -- 为什么要学习计算机编程? -- 因为编程是件很有趣的事儿,能启迪思维,还有诗和远方... Python语言,由Guido van Rossum大牛在1990年发明,它是当今世界最受欢迎的计算机编 ...

  2. python语言程序设计——python3的33个保留字

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. python3的33个保留字 黑色字符是在python基础语法体系中出现的,红色的是不常用的 字符 含义 True 真 ...

  3. 《计算机二级Python语言程序设计考试》第3章:基本数据类型

    注明:本系列课程专为全国计算机等级考试二级 Python 语言程序设计考试服务 目录 考纲考点 知识导图 1.数字类型 数字类型 整数类型 浮点数类型 复数类型 2.数字类型的运算 数值运算操作符 3 ...

  4. python限制输入类型_《计算机二级Python语言程序设计考试》第3章:基本数据类型...

    考纲考点数字类型:整数类型.浮点数类型和复数类型 数字类型的运算:数值运算操作符.数值运算函数 字符串类型及格式化:索引.切片.基本的format()格式化方法 字符串类型的操作:字符串操作符.处理函 ...

  5. 北京理工大学python系列课程-北理工《Python语言程序设计》荣获中国最美慕课一等奖...

    历经两个月的激烈角逐,在2018年11月1日举办的"中国大学慕课精彩100评选"活动中,北京理工大学计算机学院<Python语言程序设计>在参评的百所高校申报的1850 ...

  6. python北京理工大学推荐的书-Python语言程序设计

    Q1:Python语言.C语言.Java语言.VB语言--到底哪种适合作为入门编程语言呢? A1: Python是最好的程序设计入门语言.也是最先进的程序设计语言. 如果只想学一门程序设计语言,请学P ...

  7. 【python】北京理工大学Python语言程序设计Python图形基本绘制【二】

    @[python]北京理工大学Python语言程序设计Python图形基本绘制[二] 内容 深入理解python语言 turtle库的运用 turtle库分析 深入理解python 1946年第一台计 ...

  8. 北京理工大学 python专题课程-Python语言程序设计

    Q1:Python语言.C语言.Java语言.VB语言--到底哪种适合作为入门编程语言呢? A1: 如果您是计算机.软件工程.信息类专业学生,毋庸置疑,入门编程语言请学习C语言:如果您是其他专业学生, ...

  9. 【Python】《Python语言程序设计》(嵩天 、黄天羽 、礼欣)测验单项选择题答案与解析合辑

    [Python]<Python语言程序设计>(嵩天 .黄天羽 .礼欣)测验单项选择题答案与解析合辑 测验1:Python基本语法元素(第1周) 测验2:Python基本图形绘制(第2周) ...

最新文章

  1. java并发编程实战:第十六章----Java内存模型
  2. LLC 逻辑链路控制
  3. Vista下的Asp.net Mvc安装
  4. ZZ: How to remove 'Open in Windows Explorer' from the 'Actions Menu'
  5. NHibernate重要概念的解释和说明
  6. python3 yield 大文件_详解Python3中yield生成器的用法
  7. shell 判断字符串是否存在包含关系
  8. Sentinel服务熔断Ribbon环境预说_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0048
  9. 区块链学者Michael Goldstein:比特币可以防止能源浪费
  10. 云计算、雾计算、边缘计算、移动边缘计算和自动驾驶的关系
  11. Oracle WebLogic Server 12c: Node Manager配置与使用
  12. 武魂java_jdk及tomcat的安装
  13. JSP中如何把一个页面的信息传递到另一个页面来
  14. 学java应该学什么
  15. TP-LINK无线网卡安装方法
  16. windows10如何安装hyper-v
  17. 饥荒服务器票据哪里是最新的,饥荒TGP版洞穴服务器搭建图文教程
  18. vmware如果已在BIOS/固件设置中禁用IntelVT-x,或主机自更改此设置后从未重新启动,则IntelVT-x
  19. 谈谈php里的IOC控制反转,DI依赖注入
  20. (一)购买阿里云的云服务器ECS

热门文章

  1. 安卓手机Recovery概述和原理分析
  2. filterConfig
  3. NVIDIA TensorRT (python win10)安装成功分享
  4. 怎么快速学习英语的诀窍
  5. 在家也可以享受购物体验?AR+Scene 帮您实现商品3D展示和虚拟试戴
  6. vSphere Client连接主机提示远程服务器响应时间过长
  7. nuxt使用element ui设置成英文
  8. Failover feature ‘ANSYS electronics_desktop‘ is not available. No valid FLEXlm servers specified.解决方
  9. SVN the working copy needs to be upgraded svn 解决办法
  10. java打印数组的连续非空子集_求一个字符串数组所有非空子集