【发布时间】:2016-11-04 17:07:41
【问题描述】:
python 新手。使用 IPython。
我想对带有滚动窗口的 pandas 数据框进行一些计算。流程如下:
def calculate_avg_ret_t(return_matrix, rolling_window, t):
ret_t = return_matrix.iloc[ np.arange((t-rolling_window+1),t+1,1), ]
avg_ret_t = ret_t.mean().mean() # much more complicated in reality
return avg_ret_t
return_matrix = pd.DataFrame( np.random.randn(10000, 10000) )
rolling_window = 21
avg_ret_ts = []
for t in np.arange(rolling_window-1,10001,1):
%time avg_ret_t = calculate_avg_ret_t(return_matrix, rolling_window, t)
avg_ret_ts.append(avg_ret_t)
在每个 for 循环中执行的实际函数要复杂得多且耗时得多,因此需要并行化。这个过程可以并行化吗?如果可以,最用户友好的模块是什么?
我意识到潜在的问题是函数必须在每个循环中调用巨大的输入return_matrix。我是否应该首先将该矩阵转换为R-list 类对象,具体取决于rolling_window?
【问题讨论】:
标签: python dataframe parallel-processing ipython