python-3.x - 我的 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
我的问题是如何提高这段代码的效率?
解决方案
问题是您重复过滤 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(可能需要重命名列)。
推荐阅读
- python - 如何解决这个我的错误代码程序?我使用 Python 3.6
- c++ - 如何在 C++ 中检查确切的类型信息(带有 cv-ref-pointer 特征)?
- c# - 如何使用 MVP 根据用户输入填充组合框?
- c++ - eglCreateImage 与 eglCreateImageKHR
- android - 如何使启动图标充当文件夹?
- qiskit - 如何在 Qiskit 中制作迭代量子电路?
- c# - 如何从 Xamarin.Forms 中的流中获取图像的路径
- html - 复制 Accordion 以定位不同的 div
- ios - 如何快速按月对日期数组进行分组?
- android - 无论如何使用android应用程序登录twitchtv并获取令牌?