pandas 数据框相对于常规关系数据库的优势
数据挖掘
熊猫
数据库
2021-09-26 03:22:33
4个回答
我认为你问题的前提有问题。Pandas 不像 RDBMS 那样是“数据存储”。Pandas 是一个 Python 库,用于处理适合内存的数据。缺点:
- Pandas 不会持久化数据。它甚至有一个名为 TO_SQL 的(慢)函数,可以将你的 pandas 数据帧保存到 RDBMS 表中。
- Pandas 只会处理适合内存的结果,这很容易填充。您可以使用 dask 来解决这个问题,或者您可以处理 RDBMS 中的数据(它使用各种技巧,如临时空间)来操作超过 RAM 的数据。
来自熊猫(主页)
Python 数据分析库¶
pandas 是一个开源的、BSD 许可的库,为 Python 编程语言提供高性能、易于使用的数据结构和数据分析工具。
虽然 pandas 当然可以通过 SQL 或其他几种数据存储方法访问数据,但其主要目的是让使用 Python 进行数据分析时更容易。
为此,pandas 提供了各种可用的方法,这些方法允许进行一些可以与 SQL 进行比较的关系代数运算。
Pandas 还提供对NumPy的轻松访问,其中
是使用 Python 进行科学计算的基础包。它包含以下内容:
- 强大的 N 维数组对象
- 复杂的(广播)功能
- 用于集成 C/C++ 和 Fortran 代码的工具
- 有用的线性代数、傅里叶变换和随机数功能
除了接受的答案:
关系数据库有大量的每行开销字节(例如:this question),用于记账,区分空值和非空值,确保ACID等标准。每次读/写一列时,不仅会读取表示该列值的几个字节,而且还会访问并可能更新这些簿记字节。
相比之下,pandas(也称为 R data.table)更像是内存中的列存储。一列只是一个值数组,您可以使用快速的 numpy 矢量化操作/列出仅访问您真正需要的值的操作。对于具有很少原始列的表,对于许多数据科学用例来说,关系数据库的速度会慢很多倍。
Pandas 是一种内存数据存储工具。这使您可以非常快速地对大量数据进行非常快速的计算。
SQL(通常)持久存储数据并且是一个数据库。也可以运行内存中的 SQL 数据库,它可能比使用 pandas 更快,例如 SQLite。