以下内容主要学习自《利用Python进行数据分析》
第1章 准备工作
当我们说到数据时,想表达的准确含义是什么?主要的关注点是“结构化数据”,这个有意义的术语包含了众多常见的数据形式,如:
- 关系型数据库中存储的表数据
- excel文件中的工作表数据
- 由制表符、逗号分隔的文本文件
- 通过网络协议传输的xml、json数据流
- 内存中的数组(矩阵)
为何用Python进行数据分析?
在过去十年里,Python已经从一个最前沿的科学计算语言,成为数据科学、机器学习和学术/工业界通用软件开发领域最为重要的语言之一。由于Python提高了对类库的支持(如pandas、scikit-learn),使得它成为数据分析任务的一个流行选择。再综合考虑Python在通用软件工程上的总体实力,它便成为搭建数据应用的首选语言。
Python作为胶水
Python在科学计算方面的成功部分是因为它很容易整合C、C++和FORTRAN等语言的代码。大部分现代计算机环境都拥有相似的存量程序集。这些程序集使用C和FORTRAN的库进行线性代数、调优、积分、傅里叶变换等算法运算。很多公司和国家实验室都使用Python将过去数十年产生的存量程序集黏合在一起。
Python不适合的场景
由于Python是一种解释型语言,因此Python代码的运行效率会低于Java或C++等编译型语言。但因为“开发者时间通常比CPU时间更有价值”,很多人就愉快地选择了使用Python。
然而,当需要一款低延迟、高资源利用要求的应用时,为了尽可能获得最高性能,在底层语言(如C++)上花费编程时间将会更值得。
重要的Python库
重要的Python库1. Numpy
Numpy是Numerical Python的简写,是Python数值计算的基石,它提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。Numpy还包括:
- 快速、高效的多维数组对象ndarray
- 基于元素的数组计算或数组间数学操作函数
- 用于读写硬盘中基于数组的数据集的工具
- 线性代数操作、傅里叶变换以及随机数生成
- 成熟的C语言API,允许Python拓展和本地C或C++代码访问Numpy数据结构和计算设施。
2. Pandas
Pandas的名字来源是panel data,也是Python data analysis的简写短语。Pandas提供了高级数据结构和函数,使得利用结构化、表格化数据的工作快速、简单、有表现力。另外,Pandas提供强大的索引函数,使得数据的重组、切块、聚合、子集选择更为简单。由于数据操作、预处理、清洗在数据分析中是重要的工作,因此Pandas是必须掌握的技能。
3. matplotlib
matplotlib是最流行的、用于制图的数据可视化Python库。
4. SciPy
SciPy是科学计算领域针对不同标准问题域的包集合。包括:
- scipy.integrate:数值积分和微分方程求解器
- scipy.linalg:线性代数和矩阵分解
- scipy.optimize:函数优化器和求根算法
- scipy.signal:信号处理工具
- scipy.sparse:稀疏矩阵与稀疏线性求解器
- scipy.stats:连续和离散概率分布、各类统计测试、各类描述性统计
5. scikit-learn
scikit-learn诞生于2010年,目前已成为Python编程者首选的机器学习工具包。包含如下模块:
- 分类:SVM、最近邻、随机森林、逻辑回归
- 回归:Lasso、岭回归
- 聚类:k-means、谱聚类
- 降维:PCA、特征选择、矩阵分解
- 模型选择:网格搜索、交叉验证、指标矩阵
- 预处理:特征提取、正态化
6. statsmodels
statsmodels是一个统计分析包。包含如下内容:
- 归回模型:线性回归、通用线性模型、鲁棒线性模型、线性混合效应模型
- 方差分析(ANOVA)
- 时间序列分析:AR、ARMA、ARIMA、VAR
- 非参数方法:核密度估计、核回归
- 统计模型结果可视化
statsmodels更专注于统计推理,而scikit-learn更专注于预测。
数据分析的流程
尽管会有不同的工作目的,但数据分析工作大体上分为以下几个部分:
- 与外部世界交互:读写各种格式的文件以及数据存储;
- 准备:对数据进行清洗、处理、联合、正态化、重组、切片、切块;
- 转换:将数学或统计操作应用到数据集的分组上,以产生新的数据集;
- 建模和计算:将数据加入到统计模型、机器学习算法和其它计算模型中;
- 演示:创建动态或静态的可视化图形,或文字概述。
网友评论