【发布时间】:2021-01-01 23:57:13
【问题描述】:
我试图通过分组来填补数据中的空白,然后使用之前数据点的趋势来预测缺失值是什么。
df
Group Week Value
B 1 5
B 2 6
B 3 NaN
B 4 NaN
B 5 NaN
B 6 8
B 7 8
B 8 7
B 9 6
B 10 NaN
图形如下所示: Initial df plot
一旦所需功能发生,数据框将如下所示:
Group Week Value
B 1 5
B 2 6
B 3 7
B 4 8
B 5 9
B 6 8
B 7 8
B 8 7
B 9 6
B 10 5.5
找到这些 NaN 值的先前点的趋势在此处以图形方式显示: NaN values calculated
这个例子中的前三个 NaN 值是通过简单地绘制值 5 和 6 找到的,找到线性方程 (y = mx + c) 并将 x 作为周来计算 y。对所有 NaN 值都将执行相同的过程
我尝试过插值 (df = df.groupby('Group').apply(lambda group: group.interpolate(method='index')) 但这显然会查看下一个有效数据点并将其包含在计算中,我试图避免这种情况
可能值得注意的是,我使用的数据框有 200,000 行和 4,000 个组!
【问题讨论】:
-
@lrobertd 你为什么不根据你的要求对数据点进行分组。
-
欢迎来到 StackOverflow!如果我已经解决了您的问题,请确保通过单击我的答案旁边的复选标记接受作为解决方案。谢谢!请参阅以下链接以获取有关如何执行此操作的帮助:meta.stackexchange.com/questions/5234/…
-
错误是什么?始终在评论中包含错误消息或添加到您的问题并在评论中引用它。谢谢!
-
@DavidErickson spline 出错,因为某些组仅包含 1 个值 - 我知道 spline 无法对其进行操作。有没有我可以按照以下 sudo 代码实现的东西: if group size = 1 then 'linear' else 'spline'
-
嗨@lrobertd 查看我的更新答案。请通过单击答案旁边的复选标记来接受解决原始问题的解决方案。如果您需要更多帮助并参考 ois 问题,您可以随时打开一个新的 StackOverflow 问题。
标签: python pandas dataframe interpolation extrapolation