第九章 Python计算生态概览
9.1从数据处理到人工智能
9.2实例15霍兰德人格分析雷达图
9.3从web分析到网络空间
9.4从人机交互到艺术设计
9.5实例16:玫瑰花绘制
方法论
-概览Python计算生态,看见更大的世界
实践能力
-初步编写带有计算生态的复杂程序
9.1从数据处理到人工智能
数据表示->数据清洗->数据统计->数据可视化->数据挖掘->人工智能
9.1.1 Python库之数据处理
Numpy:表达N维数组的最基础库
特点
特点
Pandas数据提供2个核心数据结构
也提供了一个数学、科学和工程计算功能库
SciPy:数学、科学和工程计算功能库
Matplotlib:高质量的二维数据可视化功能库
Seaborn:统计类数据可视化功能库
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-docx:创建或更新Microsoft Word 文件的第三方库
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:机器学习方法工具集
TensorFlow:AlphaGO背后的机器学习计算框架
MXNet:基于神经网络的深度学习计算架构
单元小结
Numpy、Pandas、SciPy
Matplotlib、Seaborn、Mayavi
PyPDF2、NLTK、python-docx
Scikit-learn、TensorFlow、MXNet
小花絮
小议"函数式编程"
"函数式编程"用函数将程序组织起来,貌似很流行,为何不早学呢?
9.2实例15:霍兰德人格分析雷达图
9.2.1霍兰德人格分析雷达图,问题分析
雷达图
霍兰德人格分析
霍兰德人格分析雷达图
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()
9.2.3 "霍兰德人格分析雷达图"举一反三
目标 + 沉浸 + 熟练
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: 最友好的网络爬虫功能库
Scrapy: 优秀的网络爬虫框架
pyspider: 强大的Web页面爬取系统
9.3.2 Python库之Web信息提取
Beautiful Soup: HTML和XML的解析库
Re: 正则表达式解析和处理功能库
Python-Goose: 提取文章类型Web页面的功能库
在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应用框架
Pyramid: 规模适中的Web应用框架
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应用开发微框架
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello_word():
return"Hello,world!"
9.3.4 Python库之网络应用开发
WeRoBot: 微信公众号开发框架
aip: 百度AI开放平台接口
MyQR: 二维码生成第三方库
单元小结
从Web解析到网络空间
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接口
wxPython: 跨平台GUI开发框架
PyGObject: 使用GTK+开发GUI的功能库
9.4.2 Python库之游戏开发
PyGame: 简单的游戏开发功能库
Panda3D: 开源、跨平台的3D渲染和游戏开发库
cocos2d: 构建2D游戏和图形界面交互式应用的框架
9.4.3 Python库之虚拟现实
VR Zerot: 在树莓派上开发VR应用的Python库
pyovr: Oculus Rift的Python开发接口
Vizard: 基于Python的通用VR开发引擎
9.4.4 Python库之图形艺术
Quads: 迭代的艺术
ascii_art: ASCII艺术库
单元小结
从人机交互到艺术设计
小花絮
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基础,将得非常细致,还能跟着上手操作一些,非常良心的课程,并且不啰嗦,全是干货,继续再接再厉吧,接触一些其他的操作,包括图形展示和爬虫,巩固基础。非常赞!!!!