如何创建标记识别gazeAngleVelocity由正转零、零转正的fixation起止时刻?
如何标记凝视数据中Fixation的开始与结束?
在数据分析中需实现如下逻辑:当
gazeAngleVelocity从大于0变为0时,为fixation的开始;当gazeAngleVelocity从0变为大于0时,为fixation的结束。需针对这两种情况创建标记,请问应使用什么命令实现?
Python Pandas 实现
核心思路是对比当前行与上一行的gazeAngleVelocity值,检测状态切换:
- 先生成上一行的速度列:
df['prev_gaze_vel'] = df['gazeAngleVelocity'].shift(1)
- 标记Fixation开始(从速度>0变为0):
df['fixation_start'] = (df['gazeAngleVelocity'] == 0) & (df['prev_gaze_vel'] > 0)
- 标记Fixation结束(从速度0变为>0):
df['fixation_end'] = (df['gazeAngleVelocity'] > 0) & (df['prev_gaze_vel'] == 0)
如果要处理第一行的空值(prev_gaze_vel初始为NaN),可以用fillna()设定初始状态,比如假设初始速度为0:
df['prev_gaze_vel'] = df['gazeAngleVelocity'].shift(1).fillna(0)
R 语言实现
用dplyr的lag()函数获取上一行数据,逻辑和Pandas一致:
library(dplyr) df <- df %>% mutate(prev_gaze_vel = lag(gazeAngleVelocity, default = 0), fixation_start = (gazeAngleVelocity == 0) & (prev_gaze_vel > 0), fixation_end = (gazeAngleVelocity > 0) & (prev_gaze_vel == 0))
通用逻辑说明
不管用什么数据分析工具,核心都是检测时序数据的状态切换:通过当前观测值与前一观测值的对比,判断是否触发了“从运动到静止”或“从静止到运动”的条件,进而生成对应的标记列。
内容的提问来源于stack exchange,提问作者fafa
相关产品推荐
相关产品推荐

