为什么是Python
Python作为胶水语言
Python成为成功的科学计算工具的部分原因是, 它能够轻松地集成C、 C++以及Fortran代码。 大部分现代计算环境都利用了一些Fortran和C库来实现线性代数、 优选、 积分、 快速傅里叶变换以及其他诸如此类的算法。 许多企业和国家实验室也利用Python来“粘合”那些已经用了多年的遗留软件系统。
解决“两种语言”问题
很多组织通常都会用一种类似于领域特定的计算语言(如SAS和R) 对新想法做研究、 原型构建和测试, 然后再将这些想法移植到某个更大的生产系统中去(可能是用Java、 C#或C++编写的) 。人们逐渐意识到, Python不仅适用于研究和原型构建, 同时也适用于构建生产系统。 为什么一种语言就够了, 却要使用两个语言的开发环境呢?
为什么不选Python
虽然Python非常适合构建分析应用以及通用系统, 但它对不少应用场景适用性较差。
- Python是一种解释型编程语言, 因此大部分Python代码都要比用编译型语言(比如Java和C++) 编写的代码运行慢得多
- 当然,程序员的是将比CPU时间值钱,所以也有很多人会对此做取舍
- 但是,在那些延迟要求非常小或高资源利用率的应用中(例如高频交易系统)Python就相形见绌了
对于高并发、 多线程的应用程序而言(尤其是拥有许多计算密集型线程的应用程序),Python并
不是一种理想的编程语言快速高效的多维数组对象ndarray
- 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
- 用于读写硬盘上基于数组的数据集的工具
- 线性代数运算、 傅里叶变换, 以及随机数生成
除此之外,Numpy的另一个主要作用,就是作为算法和库之间传递数据的容器
pandas
本书用的最多的pandas对象是
- DataFrame,一个面向列(column-oriented)的二维表结构
- Series,一个一维的标签化数组对象
pandas这个名字源于panel data(面板数据, 这是多维结构化数据集在计量经济学中的术语) 以及Python data analysis(Python数据分析)
matplotlib
- 最流行的绘制图表和其他二维数据可视化库
最初由John D.Hunter(JDH) 创建, 目前由一个庞大的开发团队维护
SciPy
SciPy是一组专门解决科学计算中各种标准问题域的包的集合, 主要包括下面这些包:
scipy.integrate: 数值积分例程和微分方程求解器
- scipy.linalg: 扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能
- scipy.optimize: 函数优化器(最小化器) 以及根查找算法
- scipy.signal: 信号处理工具
- scipy.sparse: 稀疏矩阵和稀疏线性系统求解器
- scipy.special: SPECFUN(这是一个实现了许多常用数学函数(如伽玛函数) 的Fortran库)的包装器
- scipy.stats: 标准连续和离散概率分布(如密度函数、 采样器、 连续分布函数等) 、 各种统计
检验方法, 以及更好的描述统计法。
NumPy和SciPy结合使用, 便形成了一个相当完备和成熟的计算平台。
scikit-learn
- 分类: SVM、 近邻、 随机森林、 逻辑回归等等
- 回归: Lasso、 岭回归等等
- 聚类: k-均值、 谱聚类等等
- 降维: PCA、 特征选择、 矩阵分解等等
- 选型: 网格搜索、 交叉验证、 度量
- 预处理: 特征提取、 标准化
statsmodels
与scikit-learn比较, statsmodels包含经典统计学和经济计量学的算法
常用模块惯例
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm