You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python统计CSV某列达阈值前行数 计算设备故障周期

Python统计设备故障前运行周期

统计规则

  • 故障判定标准:监测值≥5时判定设备触发故障
  • 数据读取范围:读取CSV文件第一列的监测数值
  • 计数逻辑:自动跳过开头所有≥5的初始数据,从首次出现小于5的监测值的位置开始逐行计数,直到碰到第一个≥5的监测值时停止,累计的行数就是故障前运行周期数。

示例计算说明:
给定示例数据前4行第一列值为68、25、15、5,均≥5,直接跳过;从第5行值2(<5)开始计数,到第11行值5.01(≥5)停止,覆盖第5到第11行共7行,统计结果为7个周期。

实现代码

代码用Python内置csv模块实现,无需安装第三方依赖,自动兼容空行、格式异常行等常见脏数据场景:

import csv

def count_pre_fault_cycles(csv_path: str, threshold: float = 5) -> int | str:
    """
    统计设备故障前的有效运行周期
    :param csv_path: 待读取的CSV文件路径
    :param threshold: 故障判定阈值,默认值为5
    :return: 故障前运行周期数,边界场景返回对应提示文本
    """
    cycle_count = 0
    start_flag = False  # 标记是否已找到首个小于阈值的起始计数点

    with open(csv_path, 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        for row in reader:
            # 跳过空行
            if not row:
                continue
            # 解析第一列数值,跳过格式错误的行
            try:
                current_val = float(row[0].strip())
            except (IndexError, ValueError):
                continue
            
            # 未到起始计数点的逻辑
            if not start_flag:
                if current_val < threshold:
                    start_flag = True
                    cycle_count += 1
                continue
            
            # 已开始计数的逻辑
            cycle_count += 1
            if current_val >= threshold:
                return cycle_count
    
    # 遍历完文件的边界场景处理
    if start_flag:
        return f"遍历至文件末尾未触发故障,累计有效运行周期{cycle_count}个"
    else:
        return "数据中无小于阈值的有效起始点,无法完成统计"

# 调用示例
if __name__ == "__main__":
    res = count_pre_fault_cycles("device_monitor.csv")
    print(f"故障前运行周期统计结果:{res}")

边界场景适配

  • 初始数据全部高于/等于阈值:自动向后遍历直到找到第一个小于阈值的点才开始计数,符合需求兼容要求
  • 文件无有效数值、全是高于阈值的数据:返回明确提示,不会抛出无意义的错误
  • 从起始点到文件末尾都没有触发故障:返回累计的有效运行周期数
  • 自动跳过空行、第一列非数值的异常行,适配日常导出的不规范CSV文件

内容的提问来源于stack exchange,提问作者ecc98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:18:21