Mar*_*ath 11
我正在尝试决定学习三种并行/内存不足计算的工具:dask,modin或datatable(pandas不是并行工具,也不是针对内存不足计算的)。
在datatable文档中没有找到任何内存不足的工具(在此处讨论),因此我只关注modin和dask。
简而言之modin就是试图成为pandasAPI 的替代品,而dask被懒惰地评估。modin是一个列存储,而dask按行对数据帧进行分区。背后的分发引擎dask是集中式的,而modin(称为ray)的则不是。编辑:现在也modin支持dask作为计算引擎。
dask是第一个,拥有庞大的生态系统,看起来非常有据可查,在论坛中讨论并在视频中进行了演示。modin( ray) 有一些设计选择,使其在硬件错误的弹性和高性能序列化方面更加灵活。ray旨在在人工智能研究中最有用,但modin本身是通用的。ray还旨在实时应用程序以更好地支持实时强化学习。
我的任务是处理每日股票交易数据,并发现了这篇文章。我的行长度约为 6000 万,列长度低于 10。我对read_csv和中的所有 3 个库进行了测试groupby mean。根据这个小测试,我的选择是dask。下面是三者的比较:
| library | `read_csv` time | `groupby` time |
|--------------|-----------------|----------------|
| modin | 175s | 150s |
| dask | 0s (lazy load) | 27s |
| dask persist | 26s | 1s |
| datatable | 8s | 6s |
Run Code Online (Sandbox Code Playgroud)
至少对于我的数据来说,这似乎modin不如dask目前那么有效。dask persist告诉dask您的数据可以放入内存,因此 dask 需要一些时间才能将所有内容放入而不是延迟加载。datatable最初所有数据都在内存中,并且在 read_csv 和 groupby 中都非常快。然而,考虑到它与 pandas 不兼容,似乎最好使用dask. 事实上,我来自 R,我非常熟悉 R 的 data.table,所以我在 python 中应用它的语法没有问题。如果datatablePython可以无缝连接到pandas(就像R中的data.frame那样)那么这将是我的选择。
| 归档时间: |
|
| 查看次数: |
4129 次 |
| 最近记录: |