NumPy,是Numerical Python的缩写,是Python的一种开源的数值计算扩展,也是Python数值计算的基石。它提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。Numpy还包括以下内容:
·快速、高效的多维数组对象ndarray
·基于元素的数组计算或数组键数学操作函数
·用于读写硬盘中基于数组的数据集的工具
·线性代数操作、傅里叶变换以及随机数的生成
除了Numpy赋予Python的快速处理数组处理能力外,Numpy的另一个主要用途是在算法和库之间作为数据传递的数据容器。对于数值数据,Numpy数组能够比Python内建数据结构更为之高效地储存和操作数据。
pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。pandas将表格和关系型数据库(例如SQL)的灵活数据操作能力与Numpy的高性能数组计算理念结合。它提供复杂的索引函数,使得数据重组、切块、切片、聚合、子集选择更为简单。
matplotlib是最流行的用于制图及其它二维数据可视化的Python库。它由Jhon.D.Hunter创建,目前由一个大型开发者者团队维护。matpiotlib被设计为适合出版的制图工具,对于Python的编程者来说也有其它的可视化库,但matplotlib依然使用最为广泛,并且与生态系统其它库良好整合。
IPython项目尽管本身不提供任何计算或数据分析工具,它的设计侧重于在交互计算和软件开发两方面将生产力最大化。它使用一种执行-探索工作流来代替其它语言中典型的编辑-编译-运行工作流。它还提供针对操作系统命令行和文件系统的易用接口。由于数据分析编码工作包含大量的探索、试验、试错和遍历,IPython可以使你更快速地完成工作。
2014年,Fernando和IPython团队发布了Jupyter项目。Jupyter项目旨在设计一个适用于更多语言的交互式计算工具。IPython web notebook 则成为 Jupyter notebook,可以支持超过40种编程语言,IPython系统目前可以作为一个内核(一种编程语言模式)用于在Jupyter中使用Python。
IPython自身已成为Jupyter开源项目中的一个组件,后者提供交互性,探索性的高效环境。IPython最古老、最简单的“模式”就是一个加强版的Python命令行,用于提高编写、测试、调试Python代码的速度。IPython命令行和Jupyter notebook对于数据探索和可视化非常有用。
Jupyter notebook系统允许怒使用Markdown和HTML创建包含代码和文本的富文档。其他编程语言也针对Jupyter实现了内核,允许你在Jupyter中使用多种语言而不仅仅是Python。
scikit-learn(以前称为scikits.learn,也称为sklearn)是针对Python 编程语言的免费软件机器学习库,其中包括以下子模块:
·分类:svm、最近邻、随机森林、逻辑回归等
·回归:Lasso、玲回归等
·聚类:k-means、谱聚类等
·降维:PCA、特征选择、矩阵分解等
·模型选择:网络搜索、交叉验证、指标矩阵
·预处理:特征提取、正态化
scikit-learn与pandas、IPython一起使Python成了高效的数据科学编程语言。
statsmodels是一个统计分析包。与scikit-learn相比,statsmodels包含经典的(高频词汇)统计学、经济算法学。它所包含的模型如下:
·回归模型:线性回归、通用线性模型、鲁棒线性模型、线性混合效应模型等
·方差分析(ANOVA)
·时间序列分析:AR、ARMA、ARIMA、VAR等模型
·非参数方法:核密度估计、核回归
·统计模型结果可视化
statsmodel更专注于推理,提供不确定性评价和p值参数。相反,scikit-learn更专注于预测。