有时你用 Python的Pandas 打开一个大数据集,尝试获得一些指标,整个事情只是可怕地冻结。 如果您使用大数据,您知道如果您正在使用Pandas,那么您可以等待一小段时间来获得一个简单的系列平均值,让我们甚至不会调用 apply 。这只是几百万行!当你达到数十亿美元时,你最好开始使用Spark或其他东西。
我不久前发现了这个工具:一种加速Python数据分析的方法,无需获得更好的基础设施或切换语言。如果您的数据集很大,它最终会感觉有限,但它比普通的Pandas更好地扩展,并且可能只适合您的问题
-
特别是如果您没有进行大量的重建索引。
##
什么是Dask?
Dask 是一个开源项目,它为您提供NumPy Arrays,Pandas Dataframes和常规列表的抽象,允许您使用多核处理并行运行它们。
以下是教程中的摘录:
Dask提供模仿NumPy,列表和Pandas的高级Array,Bag和DataFrame集合,但可以在不适合主内存的数据集上并行运行。Dask的高级集合是大型数据集的NumPy和Pandas的替代品。
它听起来真棒!我开始为这篇文章尝试Dask Dataframes,并对它们进行了几个基准测试。
##
阅读文档
我首先做的是阅读官方文档,看看在Dask中建议做什么而不是常规的Dataframes。以下是 官方文档 中的相关部分:
-
操纵大型数据集,即使这些数据集不适合内存
-
通过使用许多核心来加速长计算
-
使用标准Pandas操作(如groupby,join和时间序列计算)对大型数据集进行分布式计算
然后在下面,它列出了一些在使用Dask Dataframes时非常快的事情:
-
算术运算(乘以或添加到系列)
-
常见聚合(平均值,最小值,最大值,总和等)
-
调用 apply(只要它在索引中 - 也就是说,不是在groupby('y')之后'y'不是索引 - )
-
调用value_counts(),drop_duplicates()或corr()
-
使用 loc , isin 和行方式选择进行过滤