QC15_TimeChangeRange 最大变化范围检验Skill
功能概述
本skill用于检查时间序列数据在特定时间窗口内是否出现了异常剧烈的波动。具体来说,计算滑动窗口内(指定连续次数)的最大值与最小值之差,如果差值超出预设的阈值,则标记为异常数据。
触发条件
当用户请求以下任务时,应使用此skill:
- 最大变化范围检验
- 变化范围检验
- 时间序列波动检验
- 窗口变化检测
- 检查数据变化幅度是否过大
- 时间窗口内异常波动检测
处理逻辑
- 读取输入的被检验数据
- 解析变化范围检验条件(字段名、阈值、窗口大小)
- 按时间字段排序
- 对每个指定字段,计算滑动窗口内的最大值和最小值
- 如果窗口内最大值-最小值 >= 阈值,标记为异常
- 为异常数据添加质控标识
- 输出处理后的数据文件
支持的文件格式
- CSV (.csv)
- TSV (.tsv)
- Excel (.xls, .xlsx)
- SPSS (.sav)
使用方法
步骤1:获取用户输入输出路径及参数
向用户确认:
- 输入文件路径
- 输出文件路径
- 变化范围检验条件(格式:字段名,阈值,窗口大小)
- 时间字段名
- 时间格式
- 质控标识(默认:最大变化范围检验异常)
- 质控标识字段名(默认:QC0000)
步骤2:执行最大变化范围检验脚本
在 scripts/ 目录下找到 QC15_TimeChangeRange.py,使用Python执行:
python scripts/QC15_TimeChangeRange.py \
--input_path <输入文件> \
--output_path <输出文件> \
--conditions "<检验条件>" \
--time_field <时间字段> \
--time_format "<时间格式>" \
--qc_mark "<质控标识>" \
--mark_field_name <质控字段名>
步骤3:返回结果
告知用户处理完成。
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
--input_path |
是 | 输入文件路径 |
--output_path |
是 | 输出文件路径 |
--conditions |
是 | 检验条件,格式:字段名,阈值,窗口大小(如:Do_ppm,1,3)多行用换行分隔 |
--time_field |
是 | 时间字段名(用于排序判断连续性) |
--time_format |
是 | 时间格式(如:%Y-%m-%d %H:%M:%S) |
--qc_mark |
否 | 质控标识,默认"最大变化范围检验异常" |
--mark_field_name |
否 | 质控标识字段名,默认QC0000 |
检验条件格式
每行格式:字段名,阈值,窗口大小
示例:
Do_ppm,1,3
Temp_C,2,4
pH,4,5
表示:
- Do_ppm字段在3个连续时间点内最大值-最小值>=1则标记异常
- Temp_C字段在4个连续时间点内最大值-最小值>=2则标记异常
- pH字段在5个连续时间点内最大值-最小值>=4则标记异常
时间格式示例
| 格式 | 示例 |
|---|---|
| %Y-%m-%d | 2024-01-15 |
| %Y-%m-%d %H:%M:%S | 2024-01-15 14:30:00 |
| %Y/%m/%d | 2024/01/15 |
输出示例
[OK] Using encoding GB2312 successfully read CSV file
Reading input data: /path/to/input.csv
Writing output data: /path/to/output.csv
Processing completed!
质控标识格式示例:最大变化范围检验异常(Do_ppm) 表示Do_ppm字段在指定时间窗口内变化幅度过大
注意事项
- 检验条件格式:字段名,阈值,窗口大小,每行一个字段
- 阈值:窗口内最大值-最小值的最小允许差值
- 窗口大小:连续时间点的数量(用于计算滑动窗口)
- 数据按时间字段排序后进行检查
- 质控标识格式:质控标识(异常字段1,异常字段2,...)
- 与原有质控标识用分号拼接