我有两个来自不同脉搏血氧仪的数据集,并用pyplot绘制,如下所示。如您所见,绿色数据表有很多异常值(垂直下降)。在我的工作中,我把这些支出定义为无效的,在我的统计分析中,它们肯定不是度量。因此,我认为我可以简单地删除它们。在
这些流氓值的特点是它们是单个(或前两个)值异常值(见下面的df)。“实际”采样值要么与前一个值相同,要么是+-1。例如,在java(伪代码)中,我会做如下操作:
for(i; i <df.length; i++)
if (df[i+1|-1].spo2 - df[i].spo2 > 1|-1)
df[i].drop
熊猫会是什么相当于我正在尝试的操作,删除与上一个/下一个值相比大于/小于1的值?在
数据框:
^{pr2}$
看看pandas.DataFrame.shift。这是一个列操作,将给定列中的所有行移到另一列的另一行:
您可以使用它来移动时间戳
^{pr2}$n
行中时间戳n+1
的spo2
旁边。然后,根据应用于该行的条件进行筛选。在当过滤pandas数据帧时,如下所示:
东风[数据框1=2&;数据框2<;3],您是:
所以您只需要在数据帧上创建一个迭代算法来生成这样的布尔数组,并使用它来过滤数据帧,如:
也可以创建一个闭包来过滤数据帧(使用数据框应用),并在闭包中保留以前的观察结果来检测突变,但这太复杂了。我会选择直截了当的解决方案。在
相关问题 更多 >
编程相关推荐