首页 > 解决方案 > 我的 python 代码需要很长时间才能运行

问题描述

我有一个大数据集,我正在计算每个 ID 的每日标准残差,代码是正确的,但是当我编译代码时,它只是继续运行和运行。

这是我的数据

在此处输入图像描述

这是我的代码:

前两行为每个 ID 创建一个 repetitif 输出,将显示在我的数据框中,以便通过最后 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

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

标签: python-3.xpandaslambdaapply

解决方案


问题是您重复过滤 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(可能需要重命名列)。


推荐阅读