#角色
程序员
#能力
你拥有信息提取能力,逻辑分析能力,结构化输出能力。
#任务
你需要遵照#规则,按照#输入格式的要求进行结果输出。
#任务
帮我生成一个Python脚本文件
读取电压电流-功率_合并.xlsx,电能量.xlsx,档案.xlsx表格内容,专变异常清单.xlsx并把所需数据根据#需求统计出,统计格式如#输入。
#规则
-根据电压电流-功率_合并.xlsx里数据时间,每48小时的数据保存成一个json文件,为一组数据。
-同一个电表资产号,如果涉及的数据时间超过48小时,48小时为一组;第一个分组之间段T0到T0+48h,下一个分组从T0到T0+48h后的第一个数据点开始,再继续48h,如果不足48h,以剩下时间的开始时间到结束时间为一组数据。
-电压电流-功率_合并.xlsx表里电表资产号等同于专变异常清单.xlsx中电能表资产编号等同于电能量.xlsx里的电表资产号。
-输出结果以:电表资产号-事件-异常类型.json来命名,电表资产号为专变异常清单.xlsx中的电能表资产编号,事件的位置用统计的分组时间范围代替,如1500S0006158-20230326120000-20230328120000-其他;
在判断一组数据是否包含异常事件时(异常事件指电能表资产编号在专变异常清单表格中有对应的异常名称),同一个电能表资产编号在专变异常清单中可能有多条记录,每条记录可能时间不同,需求:如果一个电能表资产编号有多个异常事件时,这个电能表资产编号在异常处理清单.xlsx中对应的时间,在那一组数据的时间范围内,那么该组数据输出结果的异常类型就为对应异常名称,如果专变异常清单中该电能表资产编号不存在异常事件,那么改组数据输出结果的异常类型就为其他,如电能表资产编号09001SF00000041703029853在异常处理清单.xlsx表中对应的时间间2023/3/30 12:00:00在20230329170000-20230331170000时间范围内,就认为这一组数据电流失流,输出结果为09001SF00000041703029853-20230329170000-20230331170000-电流失流。
-输入里的电能表编号为电表资产号。
-输入里的type为专变异常清单.xls对应的异常名称。
-输入里的EDDYDM_MC和EDDLDM_MC在#档案.xlsx表格里获取到,根据DNBZCH列名下电表资产号相同得知。
-json文件里value包括电压电流-功率_合并.xlsx表格里A电压,B电压,C电压,A电流,B电流,C电流,正有功功率,正无功功率,A正向有功功率,B正向有功功率,C正向有功功率,A正向无功功率,B正向无功功率,C正向无功功率,功率因数,A功率因数,
B功率因数,C功率因数;电能表里.xlsx里正向有功总,正向有功峰,正向有功平,正向有功谷,正向有功尖,反向有功总,反向有功峰,反向有功平,反向有功谷,反向有功尖,正向无功总,正向无功峰,正向无功平,正向无功谷,正向无功尖,反向无功总,反向无功峰,反向无功平,反向无功谷,反向无功尖。
-如果value中某些字段在Excel中不存在,会自动设为null。
--输出的json内容保存在output文件夹中。
#输入格式
{
"device_info": {
"电能表编号": "xxx",
"EDDYDM_MC": "xxx",
"EDDLDM_MC": "xxx"
},
"type":"异常类型",
"data": [
{
"timestamp": "2025-06-25T00:00:00Z",
"value": {
"A电压": null,
"B电压": null,
"C电压": null,
"A电流": null,
"B电流": null,
"C电流": null,
"正有功功率": 0.03,
"正无功功率": 0.01,
"A相有功功率": 0.01,
"B相有功功率": 0.01,
"C相有功功率": 0.01,
"A相无功功率": 0.00,
"B相无功功率": 0.01,
"C相无功功率": 0.01,
"总功率因数": 0.82,
"A相功率因数": 0.99,
"B相功率因数": 0.70,
"C相功率因数": null,
"正向有功总": 0.03,
"正向有功峰": null,
"正向有功平": null,
"正向有功谷": null,
"正向有功尖": null,
"反向有功总": null,
"反向有功峰": null,
"反向有功平": null,
"反向有功谷": null,
"反向有功尖": null,
"正向无功总": 0.01,
"正向无功峰": null,
"正向无功平": null,
"正向无功谷": null,
"正向无功尖": null,
"反向无功总": null,
"反向无功峰": null,
"反向无功平": null,
"反向无功谷": null,
"反向无功尖": null
}
}
]
}
}
}