第1章 准备工作
本章知识小结:
- 1、结构化数据 (表格型数据、多维数组矩阵、键位列关联的SQL表、均匀或非均匀的时间序列)
- 2、全局解释器锁GIL(防止解释器同时执行多个Python指令)
- 3、numpy、pandas、matplotlib、scipy、scikit-learn、statsmodels
- 4、处理\处置\ 规整 (munge\munging\wrangling)
- 5、伪代码:用一种类是代码的形式描述算法或过程
- 6、语法糖:并不增加新特性,但便利于代码编写的编程语法
《利用Python进行数据分析》随书资料
关注点 结构化数据 (表格型数据、多维数组矩阵、键位列关联的SQL表、均匀或非均匀的时间序列)等等
为什么要用Python做数据分析? 能整合别的语言比如C++,简单已用有成熟框架
什么时候不用Python? 高并发、多线程应用,尤其是多CPU绑定线程时——Python中的全局解释器锁GIL(防止解释器同时执行多个Python指令)
1、重要的Python库
1.1 Numpy
Numerical Python 是 数值计算的基石。
提供多种数据结构、算法及大部分设计Python数值计算所需的接口,还包括:
- 快速、高效的多维数组对象ndarry
- 基于元素的数组计算或树组件数学操作的函数
- 用于读写硬盘中基于数组的数据集的工具
- 线性代数操作、傅里叶变换以及随机数生成
- 成熟的C语言API,允许Python拓展和本地的C或C++代码访问Numpy的数据结构和计算设施
1.2 pandas
pandas提供了高级数据结构和函数,这些数据结构和函数的设计使用利用结构化、表格化数据的工作快速、简单、有表现力。
pands对象DataFrame,它是用于实现表格化、面向列、使用行列标签的数据结构;pands对象Series,一种一维标签数组对象。
pands将表格和关系型数据库的灵活数据操作能力与Numpy的高性能数据计算理念相结合,提供复杂的索引函数,使得数据的重组、切块、切片、聚合、子集选择更简单
1.3 matplotlib
制图、二维数据可视化(最安全的选择)
1.4 Ipython 与 Jupyter
Ipython是一个可交互的Python解释器
Jupyter是一个适合多种语言的交互式工具(支持40余种语言)
1.5 SciPy
科学计算领域针对不同标准问题域的包集合,和Numpy一起通公路一个合理、完整、成熟的计算基础。例如:
- scipy.integrate 数值积分例程和微分方程求解器
- scipy.linalg 线性代数例程和基于numpy.linalg的矩阵分解
- scipy.optimize 函数优化器(最小化器)和求根算法
- scipy.sparse 系数矩阵和稀疏线性系统求解器
- scipy.special SPECFUN包装器,在Fortran语言下实现通用数据函数的包,例如gamma
- scipy.stats 标准的连续喝离散概率分布(密度函数、采样器、连续分布函数)、各类统计测试、各类描述性测试
1.6 scikit-learn
重点在预测,机器学习包,有以下模块:
- 分类:SVM、最近邻、随机森林、逻辑回归等
- 回归:Lasso、岭回归等
- 聚类:k-means、谱聚类等
- 降维:PAC、特征选择、矩阵分解等
- 模型选择:网格搜索、交叉验证、指标矩阵
- 预处理:特征提取、正态化
scikit-learn与pandas、statsmodels、IPython一起使Python成了高效的数据科学编程语言
1.7 statsmodels
重点在统计推理,提供不确定性评价和p值参数
统计分析包,利用R语言实现各类分析模型。
Nathaniel Smith开发了Patsy项目,为R语言公式系统所驱动的statsmodels包提供公式、模型规范框架。
与scikit-learn相比,statsmodels包含经典的通计算、经济学算法,模型如下:
- 回归模型:线性回归、通用线性模型、鲁棒线性模型、线性混合效应模型等
- 方差分析(ANOVA)
- 时间序列分析:AR、ARMA、ARIMA、VAR等模型
- 非参数方法:核密度估计、核回归
- 统计模型结果可视化
2、集成开发环境
3、导入约定
1 | import numpy as np |
4、术语
处理 munge
处置 munging
规整 wrangling
伪代码:用一种类是代码的形式描述算法或过程
语法糖:并不增加新特性,但便利于代码编写的编程语法