第1章 准备工作

以下内容主要学习自《利用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库

第1章 准备工作_第1张图片
重要的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更专注于预测。

数据分析的流程

尽管会有不同的工作目的,但数据分析工作大体上分为以下几个部分:

  1. 与外部世界交互:读写各种格式的文件以及数据存储;
  2. 准备:对数据进行清洗、处理、联合、正态化、重组、切片、切块;
  3. 转换:将数学或统计操作应用到数据集的分组上,以产生新的数据集;
  4. 建模和计算:将数据加入到统计模型、机器学习算法和其它计算模型中;
  5. 演示:创建动态或静态的可视化图形,或文字概述。

你可能感兴趣的:(第1章 准备工作)