Python 用于并行处理的Modin | Dask | Data.table | Pandas与内存不足的csv文件之间的比较

Python 用于并行处理的Modin | Dask | Data.table | Pandas与内存不足的csv文件之间的比较,python,pandas,dask,modin,Python,Pandas,Dask,Modin,Dask | Modin | Data.table的基本区别和主要用例是什么 我查看了每个库的文档,它们似乎都提供了一个类似的解决方案,用于并行/内存不足计算:dask,modin或datatable(pandas不是并行工具,也不是针对内存不足的计算) 在datatable文档(已讨论)中没有找到任何内存不足工具,因此我只关注modin和dask 简言之,modin试图成为pandasAPI的替代品,而dask的评估是惰性的。modin是一个列存储,而dask是按行划分数据帧的。dask后面的

Dask | Modin | Data.table的基本区别和主要用例是什么


我查看了每个库的文档,它们似乎都提供了一个类似的解决方案,用于并行/内存不足计算:
dask
modin
datatable
pandas
不是并行工具,也不是针对内存不足的计算)

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

简言之,
modin
试图成为
pandas
API的替代品,而
dask
的评估是惰性的。
modin
是一个列存储,而
dask
是按行划分数据帧的。
dask
后面的分发引擎是集中式的,而
modin
(称为
ray
)不是。Edit:现在
modin
也支持
dask
作为计算引擎

dask
是第一个,拥有庞大的生态系统,看起来确实有很好的文档记录,在论坛上讨论,并在视频上演示。
modin
ray
)有一些设计选择,使其在硬件错误恢复能力和高性能串行化方面更加灵活。
ray
旨在在人工智能研究中发挥最大作用,但
modin
本身具有通用性。
ray
还致力于支持实时强化学习的实时应用程序r


更多详细信息和。

我有一项处理每日股票交易数据的任务,因此偶然发现了这篇文章。我的行长约为6000万行,列长小于10行。我在
read_csv
groupby mean
中对所有3个库进行了测试。基于这个小测试,我选择了
dask
。下面是一个示例三种方法的比较:

| 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
最初在内存中有所有数据,并且是超级fa在read_csv和groupby中都使用st。但是,考虑到它与pandas不兼容,它似乎最好使用
dask
。实际上,我来自R,我非常熟悉R的data.table,所以我在python中应用它的语法没有问题。如果python中的
datatable
可以无缝连接到pandas(就像在R中使用data.frame一样)那么这就是我的选择。

您分配给了多少内核?可能是
modin
由于是列存储而没有帮助,而
dask
是按行分区的吗?您是否也将pandas本身的计算时间作为基线?也对modin结果感到惊讶已经有一段时间了,但我的记忆是,我我没有分发内核,所以我应该使用默认设置。这是一个小测试,所以我想我只是记录了墙时间,没有深入挖掘。我想最后我的选择是使用默认的pandas read_csv,尽管加载速度很慢。我想我没有选择dask,因为经过多次调整代码后,出现了错误等等第四,对于其他数据操作来说,它并没有我预期的那么快。所以我不知道这些软件包是否在改进或有任何其他建议?vaex好吗?我没有尝试过这个,但总有一天我肯定会开始另一轮搜索和测试…赛昂提供了一个具有完全分布式执行的数据帧API。对于是usecase.github.com/cylonda/cylon,免责声明,我支持cylon项目。