在.compute()
和numpy
中模仿功能的额外pandas
背后的后勤工作是什么?仅仅是为了支持某种惰性评估吗?
下面Dask documentation中的示例:
import pandas as pd import dask.dataframe as dd
df = pd.read_csv('2015-01-01.csv') df = dd.read_csv('2015-*-*.csv')
df.groupby(df.user_id).value.mean() df.groupby(df.user_id).value.mean().compute()
答案 0 :(得分:0)
是的,您的直觉在这里是正确的。默认情况下,大多数Dask集合(数组,包,数据帧,延迟的)都是惰性的。正常操作是延迟的,而调用compute实际上触发执行。
这很重要,不仅可以进行少量的光优化,而且还可以支持低内存执行。例如,如果您要致电
x = da.ones(1000000000000)
total = x.sum()
如果我们立即运行,那么有时会认为您希望计算完整的数组,如果您在一台机器上,那将是不幸的。但是,如果我们知道您只想要total.compute()
,那么我们可以在更小的内存中计算该值。