Dask 的根本区别和主要用例是什么?莫丁 | 数据表
我检查了每个库的文档,它们似乎都为熊猫限制提供了一个“类似”的解决方案
我正在尝试决定从这三个工具中学习哪个工具来进行并行/内存不足计算:dask
,modin
或datatable
(pandas
不是并行工具,也不针对内存不足计算)。
没有在datatable
文档中找到任何内存不足的工具(在此处讨论),因此我只关注modin
和dask
.
简而言之modin
,它试图成为pandas
API 的替代品,而dask
被懒惰地评估。modin
是列存储,而dask
按行对数据帧进行分区。后面的分发引擎dask
是中心化的,而modin
(称为ray
)的不是。编辑:现在也modin
支持dask
作为计算引擎。
dask
是第一个,拥有庞大的生态系统,看起来非常有据可查,在论坛上讨论并在视频中展示。modin
( ray
) 有一些设计选择,使其在硬件错误的弹性和高性能序列化方面更加灵活。ray
旨在在 AI 研究中最有用,但modin
其本身具有普遍用途。ray
还针对实时应用程序,以更好地支持实时强化学习。
我的任务是处理每日股票交易数据,并遇到了这篇文章。我的行的长度约为 6000 万,列的长度低于 10。我在read_csv
和中测试了所有 3 个库groupby mean
。基于这个小测试,我的选择是dask
. 下面是3个的对比:
| library | `read_csv` time | `groupby` time |
|--------------|-----------------|----------------|
| modin | 175s | 150s |
| dask | 0s (lazy load) | 27s |
| dask persist | 26s | 1s |
| datatable | 8s | 6s |
至少对于我的数据来说,这似乎modin
不如目前有效。告诉您的数据可以放入内存中,因此 dask 需要一些时间才能将所有内容放入而不是延迟加载。最初所有数据都在内存中,并且在 read_csv 和 groupby 中都非常快。但是,鉴于它与 pandas 的不兼容,它似乎更好地使用. 实际上我来自 R 并且我对 R 的 data.table 非常熟悉,所以我在 python 中应用它的语法没有问题。如果在 python 中可以无缝连接到 pandas(就像它在 R 中使用 data.frame 一样),那么这将是我的选择。dask
dask persist
dask
datatable
dask
datatable