问题描述
Group X Y
1 0.5 8
1 0.7 9
2 0.1 2
这个数据框延续了许多行,其中包含许多由数字表示的不同组。对于每个组,我希望获取所有 (x,y) 点,并为其拟合指数曲线。
我考虑过遍历每个组,过滤数据框,将 x 和 y 拉入列表,并使用 numpy 来拟合每个组的点。但是我担心由于数据帧的大小,这会很慢。有没有更有效的方法来做到这一点?
提前致谢。
解决方法
你会喜欢这个函数的,它为我节省了大量时间,pandas df groupby 函数和 groupby.apply 链接上有很好的例子。
如果数据框太大而无法放入内存,可以查看Dask
在一天结束时,如果您想在组上运行回归,如果它太慢,您将不得不按组分开,您可以使用 groupby.to_frame 为每个组创建不同的数据框,然后多进程每组或使用 dask 分配配件。
,您可以按照其他人的建议使用 groupby 和 groupby.apply。如果您担心性能,请尝试使用您的代码 Bodo。 Bodo Community Edition 允许您在最多 4 个内核上免费使用它。它可以通过顺序和并行优化自动加速 Pandas 代码。