Python计算生态概览

0x1 从数据处理到人工智能

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

数据表示 采用合适方式用程序表达数据

数据清洗 数据归一化、数据转换、异常值处理

数据统计 数据的概要理解、数量、分布、中位数等

数据可视化 直观展示数据内涵的方式

数据挖掘 从数据分析获得知识,产生数据外的价值

人工智能 数据/语言/图像/视觉等方面升读分析与决策

Python库之数据分析

Numpy

Numpy:表达N维数组的最基础库

Python接口使用、C语言实现,计算速度优异

Python数据分析及科学设计的基础库,支撑pandas等

提供直接的矩阵运算、广播函数、线性代数等功能

yCyuFg.png

www.numpy.org

Pandas

Pandas:Python数据分析高层次应用库

提供了简单易用的数据结构和数据分析工具

理解数据类型与索引的关系。操作索引即操作数据

Python最主要的数据分析功能库,基于Numpy开发

核心

Series = 索引 + 一维数据

DataFrame = 行列索引 + 二维数据

http://pandas.pydata.org

SciPy

SciPy数学科学和工程计算功能库

提供了一批数学算法及工程数据运算功能

类似Matlab,可用于傅里叶变换、信号处理等应用

Python最主要用于科学计算的功能库,基于Numpy开发

yCcmGQ.png

Python库之数据可视化

Matplotlib

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

提供了超过100种数据可视化展示效果

通过matplotlib.pyplot子库调用各可视化效果

yCg1ld.png

http://matplotlib.org

Seaborn

统计类数据可视化功能库

提供了一批高层次的统计类数据可视化展示效果

主要展示数据间分布、分类和线性关系等内容

基于Matplotlib开发,支持Numpy和Pandas

yCglSH.png

http://seaborn.pydata.org/

Mayavi

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

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

三维可视化最主要的第三方库

支持Numpy、TVTK、Traits、Envisage等第三方库

yCgD6s.png

http://docs.enthought.com/mayavi/mayavi/

Python库之文本处理

PyPDF2

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

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

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

yC2Rbt.png

NLTK

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

支持语言文本分类、标记、语法句法、语义分析等

最优秀的自然语言处理库

yCRirR.png

Python-docx

创建或更新Microsoft Word文件的第三方库

提供创建或更新.doc.docx等文件的计算功能

增加并配置段落、图片、表格、文字等,功能全面

yCWdfO.png

Python库之机器学习

Scikit-learn

机器学习方法工具集

提供一批统一化的机器学习方法功能接口

提供聚类、分类、回归、强化学习等计算功能

机器学习基本和优秀的第三方库

yCWv3F.png

TensorFlow

AlphaGo背后机器学习计算框架

谷歌公司推动的开源机器学习框架

将数据流图作为基础,图节点代表运算,边代表张量

应用机器学习方法的方式之一,支撑谷歌人工智能应用

yCf8C8.png

MXNet

基于神经网络的深度学习计算框架

提供可扩展的神经网络及深度学习计算功能

可用于自动驾驶、机器翻译、语音识别等众多领域

Python最重要的深度学习框架

yCfgKJ.png

0x2 实例 霍兰德人格分析雷达图

雷达图

Radar Chart

多特性直观展示的重要方式

霍兰德人格分析

霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系

人格分类:研究型、艺术型、社会型、企业型、传统型、现实型

职业:工程师、实验员、艺术家、推销员、记事员、社会工作者

需求用雷达库方式验证霍兰德人格分析

各职业人群结合兴趣的调研数据

雷达图

通用雷达图绘制:matplotlib库

专业的多维数据表示:numpy库

实例展示

yC4v38.png

#HollandRadarDraw
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
radar_labels = np.array(['研究型(I)','艺术型(A)','社会型(S)',\
'企业型(E)','常规型(C)','现实型(R)']) #雷达标签
nAttr = 6
data = np.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, nAttr, endpoint=False)
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[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,frac = 1.2)
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()

举一反三

目标 沉浸 熟练

找到合适的目标

思考可实现的方法

不断的练习、练习

0x3 从web解析到网络空间

python库之网络爬虫

Requests

最友好的网络爬虫功能库

提供了简单易用的类HTTP协议网络爬虫功能

支持连接池、SSL、Cookies、HTTP(S)代理等

页面级网络爬虫功能库

import requests
r = requests.get('https://api.github.com/user',\
auth=('user','pass')) #访问连接,获取信息
r.status_code #获得访问网络的状态效果
r.headers['content-type']
r.encoding
r.text #获得文本信息

http://www.python-requests.org/

Scrapy

优秀的网络爬虫框架

框架是已经拥有了基础功能,只需开发者在基础之上进行扩展开发或者额外配置

支持批量和定时的网页爬取、提供数据处理流程等

主要和优秀的基础库

yCHqEQ.png

pyspider

强大的web网页爬取系统

提供了完整的网页爬取系统构建功能

支持数据库后端、消息队列、优先级、分布式架构

yCbrPs.png

python库之web信息提取

如何解析HTML和XML的内容

Beautiful Soup

HTML和XML的解析库

提供解析HTML和XML等Web信息的功能

又名 beautifulsoup4 或 bs4,可以加载多种解析引擎

常与网络爬虫库搭配使用,如Scrapy、requests等

yFEReO.png

Re

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

提供了定义和解析正则表达式的一批通用功能

可用于各类场景,包括定点的Web信息提取

Python最主要的标准库之一,无需安装

yFVYhd.png

Python-Goose

提取文章类型Web页面的功能库

提供了对Web也米娜中文章信息/视频等元数据的提取功能

针对特定Web页面,应用覆盖面较广

Python最主要的Web信息提取库

from goose import Goose
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[:150]

https://github.com/grangier/python-goose

python库之web网站开发

Django

提供了构建Web系统的基本应用框架

MTV:模型(model)、模板(Template)、视图(Views)

Python最重要的Web应用框架,略微复杂的应用框架

yFZ8K0.png

Pyramid

规模适中的Web应用框架

提供了简单方便构建Web系统的应用框架

不大不小,规模适中,适合快速构建并熟读扩展类应用

Python产品级Web应用框架,起步简单可扩展性好

yFZBx1.png

Flask

提供了最简单构建Web系统的应用框架

特点是:简单、规模小、快速

yFZyqK.png

python库之网络应用开发

WeRoBot

微信公众号开发框架

提供了解析微信服务器消息及反馈消息的功能

建立微信机器人的重要技术手段

yFZosP.png

百度AI的开发平台接口aip

提供了访问百度Ai服务的Python功能接口

语言、人脸、OCR、NLP、知识图谱、图像搜索等领域

yFeEW9.png

MyQR

二维码生成第三方库

提供了生成二维码的系列功能

基本二维码、艺术二维码、动态二维码

yFeVzR.png

0x4 从人机交互到艺术设计

Python库之图形用户界面

PyQt5

Qt 框架 由诺基亚公司创建

提供了创建Qt5程序的Python API接口

Qt是非常成熟的跨平台桌面应用开发系统,完备GUI

推荐Python GUI开发第三方库

yFeJSA.png

wxpython

跨平台GUI开发框架

提供了赚用于Python的跨平台GUI开发框架

理解数据类型与索引的关系,操作索引即操作数据

Python最主要的数据分析功能库,基于Numpy开发

yFedw8.png

PyGObject

使用GTK+开发GUI的功能库

提供了整合GTK+、WebKitGTK+等库的功能

GTK+:跨平台的一种用户图形界面GUI框架

yFecyq.png

Python库之游戏开发

PyGame:

提供了基于SDL的简单游戏开发功能及实现引擎

理解游戏对外部输入的相应计值及角色构建和交互机制

Python游戏入门最主要的第三方库

yFeWwT.png

Panda3D

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

一个3D游戏引擎,提供Python和C++两种接口

支持很多先进特性:法线贴图、光泽贴图、卡通渲染等

yFe4kF.png

cocos2d

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

提供了基于OpenGL的游戏开发图形渲染功能

支持GPU加速,采用树形结构分层管理游戏对象类型

适用于2D专业级游戏开发

yFe7lR.png

Python库之虚拟现实

VR Zero

在树莓派上开发VR应用的Python库

提供大量与VR开发相关的功能

针对树莓派的VR开发库,支持设备小型化,配置简单化

适合初学者

yFm5Hf.png

pyovr

针对Oculus VR设备的Python开发库

基于成熟的VR设备,提供全套问答,工业级应用设备

Python + 虚拟现实领域探索的一种思路

yFmhut.png

Vizard

基于Python的通用VR开发引擎

专业企业家开发引擎

提供详细的官方文档

支持多种主流的VR硬件设备,具有一定通用性

yFmWjI.png

Python库之图形艺术

Quads

迭代的艺术

对图片进行四分迭代,形成像素风

可以生成动图或静图图像

yFmLgs.png

ascii_art

将图片转为ASCII艺术风格

输出可以是纯文本或彩色文本

以图片格式输出

yFO81J.png

turtle

海龟绘图体系

random Art

yFOJXR.png

0x5 实例 玫瑰花绘制

玫瑰花绘制

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

输入:你的想象力

输出:玫瑰花

实例


艺术之余编程

创新、思想

思想最重要

编程只是手段

全课程总结

总结

感性认识、理性学习、展望未来

主要是面向过程的讲解

第三方库

实例

python语法的三个阶段

函数式编程、面向对象编程、Pythonic编程

yFjfSg.png

Python的未来之路

无处不在

C、JS

yFjlQJ.png

yFjqYT.png