如何提取传感器日志最后列浮点值并按首列传感器名称分组统计?
传感器数据分组及处理实现
核心步骤1-2实现(提取读数+按传感器分组)
你不需要用复杂的库处理格式,直接逐行解析文本、用字典做分组容器即可,代码如下:
from collections import defaultdict import numpy as np # 初始化分组容器:键为传感器名称,值为对应读数的列表 sensor_readings = defaultdict(list) # 读取文本文件,替换为你的实际文件路径 with open("sensor_log.txt", "r", encoding="utf-8") as f: for line in f: # 去除首尾空白后按「 - 」拆分字段 line = line.strip() if not line: continue sensor_name, _, reading_str = line.split(" - ") # 转换为浮点型存入对应分组 sensor_readings[sensor_name].append(float(reading_str))
运行完以上代码后,sensor_readings就已经完成了读数提取和分组,你可以直接遍历每个传感器的读数列表做后续计算。
完整流程代码(含步骤3-5)
以下是覆盖全需求的完整示例,你可以根据实际业务调整校验阈值和判断逻辑:
# 自定义校验阈值:格式为 {传感器名称: (最大允许标准差, 最小合法均值, 最大合法均值)} check_rules = { "Thermometer1": (3, 60, 80), "Thermometer2": (3, 65, 75), "Hygrometer1": (0.5, 40, 50), "Hygrometer2": (0.5, 40, 50) } for sensor, data in sensor_readings.items(): data_arr = np.array(data) mean = data_arr.mean() std = data_arr.std() # 执行校验 max_std, min_mean, max_mean = check_rules[sensor] if std > max_std or not (min_mean <= mean <= max_mean): print(f"{sensor.lower()} is not precise enough") else: print(f"{sensor.lower()} is qualified")
内容的提问来源于stack exchange,提问作者Flipscuba
相关产品推荐
相关产品推荐

