我的python代码需要很长时间才能运行



我有一个大的数据集,我每天都在计算每个ID的残差标准偏差,代码是正确的,但当我编译代码时,它只是不断运行

这是我的数据

在此处输入图像描述

这是我的代码:

前两行为每个ID创建一个repeatf输出,它将显示在我的数据帧中,以便通过最后3个代码。

C['mean'] = C.apply(lambda x: C[(C.ID == x.ID)].residual.mean(), axis=1)
C['size']=C.apply(lambda x: C[(C.ID == x.ID)].residual.count(), axis=1)

C['diff2']=(C['residual']-C['Mean'])**2
C['var']=C['diff2']/(B['size']-1)
C['stddev'] = C['var']** 0.5

我的问题是如何提高代码的效率?

问题是您要重复过滤DataFrame,搜索ID与当前行匹配的所有记录。此外,你要做两次:一次是平均值,一次是大小。

在这种情况下,您应该在ID上使用groupby((,并聚合残差。

如果我理解你的最终目标是计算每个ID的标准偏差,那么试试这样的方法:

import numpy as np
D = C.groupby("ID")["residual"].agg([np.mean, np.size, np.var, np.std]).reset_index()

D应该是具有计算统计信息的DataFrame(可能需要重命名列(。

最新更新