莫丁的比较 |达斯克 |数据表 |用于并行处理和内存不足 csv 文件的熊猫



Dask 的根本区别和主要用例是什么 |莫丁 |数据表。

我检查了每个库的文档,它们似乎都为熊猫的限制提供了"类似"的解决方案

我正在尝试决定学习并行/内存不足计算的三种工具:daskmodindatatable(pandas不是并行工具,也不是针对内存不足计算)。

datatable文档中没有找到任何内存不足的工具(此处讨论),因此我只关注modindask

简而言之,modin试图成为pandasAPI的直接替代品,而dask则被懒惰地评估。modin是列存储,而dask是按行对数据框进行分区。dask背后的分配引擎是集中的,而modin的分发引擎(称为ray)则不是。编辑:现在modin也支持dask作为计算引擎。

dask是第一个,拥有庞大的生态系统,看起来非常有据可查,在论坛上讨论并在视频中演示。modin(ray)有一些设计选择,使其在硬件错误和高性能序列化方面的弹性方面更加灵活。ray旨在对人工智能研究最有用,但modin本身是普遍用途的。ray还针对实时应用程序,以更好地支持实时强化学习。

更多细节在这里和这里。

我有一个处理每日股票交易数据的任务,并遇到了这篇文章。我的行长度约为 6000 万,列的长度低于 10。我在read_csvgroupby mean中测试了所有 3 个库。基于这个小测试,我的选择是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有效,至少对于我的数据而言。dask persist告诉dask您的数据可以放入内存中,因此 dask 需要一些时间来放入所有内容而不是延迟加载。datatable最初将所有数据都保存在内存中,并且在 read_csv 和 GroupBy 中都非常快。但是,鉴于它与熊猫不兼容,似乎最好使用dask.实际上我来自R,我非常熟悉R的data.table,所以我在python中应用它的语法没有问题。如果python中的datatable可以无缝连接到pandas(就像R中的data.frame一样),那么这将是我的选择。

最新更新