基于 Python 做数据分析有哪些必须了解的库

近年来,由于 Python 的库(例如 Pandas 和 scikit-learn)不断改良,使其成为数据分析任务的一个优选方案,成为了数据科学、机器学习、学界和工业界软件开发最重要的语言之一。考虑到那些还不太了解 Python 科学计算生态系统和库的读者,下面我先对各个库做一个简单的介绍。

attachments-2019-11-K240oGvR5dc57a1ee2d18.jpg

1. NumPy

NumPy(Numerical Python 的简称)是 Python 科学计算的基础包。本书大部分内容都基于 NumPy 以及构建于其上的库。它提供了以下功能(不限于此):

  • 快速高效的多维数组对象 ndarray。
  • 用于对数组执行元素级计算以及直接对数组执行数学运算的函数。
  • 用于读写硬盘上基于数组的数据集的工具。
  • 线性代数运算、傅里叶变换,以及随机数生成。
  • 成熟的 C API,用于 Python 插件和原生 C、C++、Fortran 代码访问 NumPy 的数据结构和计算工具。

除了为 Python 提供快速的数组处理能力,NumPy 在数据分析方面还有另外一个主要作用,即作为在算法和库之间传递数据的容器。对于数值型数据,NumPy 数组在存储和处理数据时要比内置的 Python 数据结构高效得多。此外,由低级语言(比如 C 和 Fortran)编写的库可以直接操作 NumPy 数组中的数据,无需进行任何数据复制工作。因此,许多 Python 的数值计算工具要么使用 NumPy 数组作为主要的数据结构,要么可以与 NumPy 进行无缝交互操作。

2. Pandas

Pandas 提供了快速便捷处理结构化数据的大量数据结构和函数。自从 2010 年出现以来,它助使 Python 成为强大而高效的数据分析环境。本书用得最多的 Pandas 对象是 DataFrame,它是一个面向列(column-oriented)的二维表结构,另一个是 Series,一个一维的标签化数组对象。

Pandas 兼具 NumPy 高性能的数组计算功能以及电子表格和关系型数据库(如 SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,能更加便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。因为数据操作、准备、清洗是数据分析最重要的技能,Pandas 是本书的重点。

作为背景,我是在 2008 年初开始开发 Pandas 的,那时我任职于 AQR Capital Management,一家量化投资管理公司,我有许多工作需求都不能用任何单一的工具解决:

  • 有标签轴的数据结构,支持自动或清晰的数据对齐。这可以防止由于数据不对齐,或处理来源不同的索引不同的数据,所造成的错误。
  • 集成时间序列功能。
  • 相同的数据结构用于处理时间序列数据和非时间序列数据。
  • 保存元数据的算术运算和压缩。
  • 灵活处理缺失数据。
  • 合并和其它流行数据库(例如基于 SQL 的数据库)的关系操作。
  • 我想只用一种工具就实现所有功能,并使用通用软件开发语言。Python 是一个不错的候选语言,但是此时没有集成的数据结构和工具来实现。我一开始就是想把 Pandas 设计为一款适用于金融和商业分析的工具,Pandas 专注于深度时间序列功能和工具,适用于时间索引化的数据。

对于使用 R 语言进行统计计算的用户,肯定不会对 DataFrame 这个名字感到陌生,因为它源自于 R 的 data.frame 对象。但与 Python 不同,data frames 是构建于 R 和它的标准库。因此,Pandas 的许多功能不属于 R 或它的扩展包。

Pandas 这个名字源于 panel data(面板数据,这是多维结构化数据集在计量经济学中的术语)以及 Python data analysis(Python 数据分析)。

3. matplotlib

matplotlib 是最流行的用于绘制图表和其它二维数据可视化的 Python 库。它最初由 John D.Hunter(JDH)创建,目前由一个庞大的开发团队维护。它非常适合创建出版物上用的图表。虽然还有其它的 Python 可视化库,matplotlib 却是使用最广泛的,并且它和其它生态工具配合也非常完美。我认为,可以使用它作为默认的可视化工具。

4. IPython 和 Jupyter

IPython 项目起初是 Fernando Pérez 在 2001 年的一个用以加强和 Python 交互的子项目。在随后的 16 年中,它成为了 Python 数据栈最重要的工具之一。虽然 IPython 本身没有提供计算和数据分析的工具,它却可以大大提高交互式计算和软件开发的生产率。IPython 鼓励“执行 - 探索”的工作流,区别于其它编程软件的“编辑 - 编译 - 运行”的工作流。它还可以方便地访问系统的 shell 和文件系统。因为大部分的数据分析代码包括探索、试错和重复,IPython 可以使工作更快。

  • 发表于 · 2019.11.08 22:24 · 阅读 · 2439

[版权声明] :本文文字、代码及图片版权归原作者所有,任何媒体、网站或个人未经本网协议授权不得采集、整理、转载或以其他方式复制发表。已经本站协议授权的媒体、网站,在使用时必须注明“稿件来源:学研谷”。

0 条评论

请先 登录 后评论
猜猜我是谁
CSUA -研究生

2
提问
55
回答
27
文章