我试图通过分组来填补数据中的空白,然后使用以前数据点的趋势来预测缺失的值
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'))
),但这显然是在寻找下一个有效的数据点,并将其包含在计算中,这是我试图避免的
可能值得注意的是,我使用的数据帧有200000行和4000组
您可以创建子组序列
g
,并将method="spline"
和order=1
传递给interpolate
:获取
g
的中间步骤如下所示这些数字基本上只是创建子组。我的方法是实现这一目标的一种方法
根据您的评论,我创建了一个
mask
m,用于计算大小为1的组。然后,我使用fillna()
组合了不同的方法:相关问题 更多 >
编程相关推荐