小编use*_*953的帖子

如何删除数据中的急剧跳跃?

我有一些我打算分析的皮肤温度数据(以1Hz收集).

然而,传感器并不总是与皮肤接触.因此,我有一个挑战,即在保留实际皮肤温度数据的同时去除这些非皮肤温度数据.我有大约100个要分析的文件,所以我需要自动化.

我知道已经有类似的帖子,但是我无法用它来解决我的问题.

我的数据大致如下:

df =

timeStamp                 Temp
2018-05-04 10:08:00       28.63
         .                  . 
         .                  .
2018-05-04 21:00:00       31.63
Run Code Online (Sandbox Code Playgroud)

我采取的第一步是简单地应用最小阈值 - 这已经摆脱了大部分非皮肤数据.然而,我留下了急剧的跳跃,传感器被移除或连接:

基本阈值过滤数据

为了消除这些跳跃,我正在考虑采用一种方法,我使用temp的一阶微分,然后使用另一组阈值来摆脱我不感兴趣的数据.

例如

df_diff = df.diff(60) # period of about 60 makes jumps stick out

filter_index = np.nonzero((df.Temp <-1) | (df.Temp>0.5)) # when diff is less than -1 and greater than 0.5, most likely data jumps.
Run Code Online (Sandbox Code Playgroud)

差异数据

但是,我发现自己被困在这里.主要问题是:

1)我不知道如何使用此索引列表删除df中的非皮肤数据.怎么做到这一点?

更小的问题是2)我认为我仍然会在边缘附近的数据跳跃中留下一些残留的假象(例如,更严格的阈值将开始消除好的数据).是否有更好的过滤策略或者摆脱这些文物的方法?

*按照建议编辑我还计算了二阶差异,但说实话,我认为第一阶差异将允许更严格的阈值(见下文):

在此输入图像描述

*编辑2:链接到样本数据

python filtering dataframe python-3.x pandas

7
推荐指数
1
解决办法
1003
查看次数

标签 统计

dataframe ×1

filtering ×1

pandas ×1

python ×1

python-3.x ×1