Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 我的python代码运行时间很长_Python 3.x_Pandas_Lambda_Apply - Fatal编程技术网

Python 3.x 我的python代码运行时间很长

Python 3.x 我的python代码运行时间很长,python-3.x,pandas,lambda,apply,Python 3.x,Pandas,Lambda,Apply,我有一个大的数据集,我正在计算每个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.cou

我有一个大的数据集,我正在计算每个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

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

问题是您在重复过滤数据帧,搜索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应该是具有计算统计信息的数据帧(可能需要重命名列)。

您提供了5行完全没有上下文的代码。我们该如何解释为什么运行时间太长?请看和。一个数据映像和几行代码,其中包含未声明的变量类型,并且没有关于这些行在何处以及如何执行的信息,这些都不是很有用。您需要在您的帖子中提供更多信息。了解这些信息,以便了解您的代码实际上是什么doing@KenWhite当我将此代码应用于小数据时,它可以工作,但是对于大数据,它会一直运行而没有任何结果。正如我之前所说的,5行上下文之外的代码不能满足这一要求。感谢您的反馈,您的代码计算每组的平均值。我的最终目标是通过每个ID计算每日方差和std。我面临的唯一问题是计算每个组的平均值和大小,这在代码中是正确的。我只想将平均值和大小结果显示到我的数据帧中,即使它是重复的,这将有助于我计算代码的最后3行。非常感谢您,当我使用小型数据帧运行此程序时,它可以正常工作。由于日期框很大,它一直在运行,因此,通过ID将D和C连接/合并在一起。D计算每个ID的全局统计信息一次;合并将添加您感兴趣的全局统计列。也就是说,我不知道你所说的每日变化是什么意思。如果数据中有日期列,只需将其添加到groupby()。请扩展您的描述,以更准确地表示您正试图实现的目标。你每天的要求完全模棱两可。非常感谢你,先生,你救了我。日常方面是计算每个股票在时间t的特殊波动率。现在,我有了平均值和尺寸,我可以轻松地完成这项工作。非常感谢你。谢谢你的帮助。