熊猫数据框相对于常规关系数据库的优势


13

在数据科学中,许多人似乎正在使用pandas数据框作为数据存储。与普通的关系数据库(MySQL)相比,大熊猫有什么特征使其成为高级数据存储,而MySQL通常用于存储其他编程领域的数据?

虽然熊猫确实提供了一些有用的数据探索功能,但是您不能使用SQL,并且会丢失查询优化或访问限制等功能。


5
pandas不是数据存储区。关闭计算机,您的数据框将不存在。熊猫是为了回忆。这意味着如果它不适合内存,它将无法正常工作。但是它有一个叫做Spark的哥哥,所以这没什么大不了的。老大哥实际上确实支持SQL和查询优化。另请参阅pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Emre

Answers:


8

我认为您的问题的前提有问题。熊猫不是RDBMS那样的“数据存储”。Pandas是一个Python库,用于处理适合内存的数据。缺点:

  • 熊猫不会保留数据。它甚至具有一个称为TO_SQL的(慢速)函数,该函数会将您的熊猫数据帧持久保存到RDBMS表中。
  • 熊猫将仅处理适合内存的结果,该结果易于填充。您可以使用dask解决此问题,也可以处理RDBMS中的数据(它使用各种技巧,例如临时空间)来处理超出RAM的数据。

2

从熊猫(主页

Python数据分析库

pandas是BSD许可的开源库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具。

虽然熊猫当然可以通过SQL或其他几种数据存储方法访问数据,但其主要目的是使使用Python进行数据分析时变得更加容易。

为此,熊猫提供了多种可用的方法,这些方法允许将一些关系代数运算与SQL进行比较。

此外,Pandas还提供了对NumPy的轻松访问,

是使用Python进行科学计算的基本软件包。它包含以下内容:

  • 强大的N维数组对象
  • 复杂的(广播)功能
  • 集成C / C ++和Fortran代码的工具
  • 有用的线性代数,傅立叶变换和随机数功能

2

除了可接受的答案:

关系数据库具有大量的每行开销字节(示例:此问题),用于簿记,从不为空中区分出空值,从而确保了诸如ACID之类的标准。每次读/写一列,不仅会读取代表该列值的几个字节,而且还将访问并可能更新这些簿记字节。

相反,熊猫(也称为R data.table)更像是一个内存中的列存储。一列只是一组值,您可以使用快速的numpy向量化操作/列表忧虑,仅访问您真正需要的值。只是对于具有很少原始列的表而言,在许多数据科学用例中,关系数据库的运行速度要慢许多倍。


2

Pandas是一种内存数据存储工具。这使您可以非常快速地对大量数据进行快速计算。

SQL(通常)永久存储数据,是一个数据库。还可以运行内存中的SQL数据库,该数据库可能比使用熊猫(如SQLite)更快。


0

SQL允许您持久化并执行许多不同的关系事务,并且始终可以随时将其用于多种不同的用途。本质上是真理或去处的一个来源。肯定有头顶。但是,某些分析可能非常复杂,并且需要大量基于集合的操作,这些操作甚至可以很快地将很小的数据集变成很大的数据集。我有超过2000个查询的数据处理,它们在不到5分钟的时间内处理了TB,并且可以为预测模型最后记录数十亿条记录,而python和numpy在10倍时间内作为关系数据存储为数据集的分数很小,并且将其提供给表示层。

另外一点,如果在云中执行此操作,请确保您有一个可以扩展其内存的动态实例。使用SQL,就可以拥有足够的磁盘和足够的计算能力来及时完成它。

我看到他们可以协同工作的许多方式。Pandas旨在完成许多数据科学工作。RDB旨在完成某些数据科学工作。平衡使用两者。

这是完成正确工作的正确工具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.