在完成 基本功教程1 之后:
多多教Python:Python 基本功: 1. Hello worldzhuanlan.zhihu.com你已经成功完成了第一个 Python 应用程序,并且运用了三种不同的创作工具。
接下来,我们先来从宏观的角度了解一下 Python 宇宙,让你了解 Python 为什么能够在各种场景展现强悍的实力。
思维殿堂 Mind Palace
如果你看过电视剧<神探夏洛克>, 第四季中,夏洛克运用了一个技能叫: 思维殿堂
简单来说,就是把海量的数据,包括整本的书本,专业知识,实时新闻,朋友圈,全部以时间序列的方式存入脑子里,并且通过某种特殊结构来保持记忆的清晰,可以随时翻阅过去查看资料。
那真的普通人可以做到吗?我说也许可以,但是你不需要这么去做,因为你有 Python 库。
Python 库 (Libraries)
Python 库是把一整套代码集合起来,包装成一个你随时可以调用的工具包,来完成某一个或者某一个特定领域的事情。例如当你需要去做一些复杂运算的时候,你可以通过调用库来直接实现,而不是去重复造车。
Never re-invent the wheels
In [1]: import numpy as np
In [2]: np.complex(100, 2)
Out[2]: (100+2j)
这里我从 Anaconda 进入 Jupyter Notebook 里来调用库,但是事实上你可以从任意一个创作软件这么做,这里我通过 Import 来调用一个库叫 Numpy。当你执行这两段代码的时候,有可能 Python 会报错说找不到 numpy, 那是因为你没有安装这个库。库原本是某一批人,或者组织写好的现成代码,他们会发布在网上让你使用 (软件的开源协议), 软件创作工具例如 Anaconda,PyCharm 会帮助你在库的管理选项里安装:
库自己也会更新,因为库的背后有一个社区或者一个组织不停的更新其功能,当然你也可以自己去贡献代码,例如 Numpy 的库:
NumPy - NumPynumpy.org在 Python 中,如果你已经安装了你想要的库,在代码里直接 import 就可以。一般打开一个 Python 的文件,你会发现前几行都是调用库:
import
这里解释一下,第一个库 datetime 是 Python 自带的时间日期功能库,第二行也是 Python 自带的高级容器库,而第二行的语法 from ... import ... 是指从一个大的高级容器库 collections 里提取 一个小的库 (正确来讲是一个类型,但是之后在讨论数据类型的时候再更改) namedtuple, 这样做的好处是你不需要在一个程序中引入大量的不必要资源,引起资源冲突或者浪费内存。而 import ... as ... 语句是在调用库的时候添加一个库的别名,这样之后调用起来比较方便,不用打全名。
之后的5个库都是在 Python 宇宙中比较有名的工具库,第一个是 Pandas, 是从美国的一家量化基金公司 AQR Capital 开源出来的 (我的上家),目的是解决在金融投资领域的复杂数据处理问题,和优化运算速度。之后的三个 numpy, scipy 和 sklearn 都是很流行的复杂运算,科学建模和机器学习库,一般在一个金融领域或者数据科学的 Python 程序里都会出现这几个库,而且这几个库是相互依赖的, 当你安装或者使用一个库时需要另外一个库同时安装。所以我建议直接把这些库一起安全好。
第四个是 Matplotlib, 是一个数据可视化工具。用过 Matlab 或者 RStudio 的都知道,软件里都会有自带的画图功能,可以把函数或者数据结果直接以图像的方式展现出来,matplotlib 就帮你完成了这些功能。当然还有更高级的 plotly 库,就可以完成数据交互,数据Dashboard 和 流数据等,会在之后的教程中展现出来。
最后一个是 Python 训练神经网络的时候调用的库,你会发现小到保存数据,大到神经网络,在 Python 宇宙里调用都只是一行代码而已,所以前几节基础课虽然代码含量很少,但是你能实现的功能已经非常多样了。
这里上几个库的链接:
Python Data Analysis Librarypandas.pydata.orgscikit-learn: machine learning in Pythonscikit-learn.orgMatplotlibmatplotlib.orgTensorFlowtensorflow.google.cnFlaskpalletsprojects.com如何学习库
就像教程开头所说的,库相当于一个思维殿堂,信息量是海量的。除非你要建立自己的思维殿堂,否则你没必要先去每一个库去学一遍,再想着之后如何使用。
学习库最好的方法就是先确定你的需求,你想要完成什么,然后去发现相应的库,再去想办法通过调用库的资源去实现。
我在这里整理一个列表,Python 已有的库可以帮你实现的包括:
- 科学运算: Numpy, Pandas, Scipy, Statsmodel ...
- 机器学习: Sklearn ...
- 神经网络: Keras, Tensorflow, Torch ...
- 数据可视化: Matplotlib, plotly ...
- 数据爬虫: Curl, Scrapy
- 建立网站: Django, Flask ...
- 云部署: AWS, Alibaba Cloud ...
- 平台 API: 各大平台的 Python API 几乎都有
当然还有很多其他的,更新更全的库,因为我这里只列举一些比较常用的,而且会在接下来教程中平凡用到的。你已经可以发现你可以完成的事情已经爆发式增长了,比方说你要建立一个全自动的数据流网页:
Flask (网站后台) ---> Numpy + Pandas + Scrapy (获得,处理数据) ---> Plotly (数据可视化)
如果你要走的更远,在云 (AWS, Alibaba Cloud) 上部署一个 Siri 的微服务器 (Flask),就可以直接通过 iPhone 的 快捷应用远程指挥你的网站后台,来给你实时推送流数据。
在之后的教程中,我们会一整遍走过这个流程,随后每个人 (不一定要计算机专业的学生) 都可以利用 Python 来完成一些人工无法完成的事情。