在光伏电池与组件制造的数字化项目中,采集点表(Tag List) 是连接 OT 层(设备)与 IT 层(SCADA/MES/IoT平台)的核心数据资产。
在实际交付中,我们通常面临以下痛点:
- 数据源混乱:设备厂商提供的点位表格式各异,表头命名不统一。
- 人工校验耗时:一张包含数千个点位的采集表,依靠人工检查枚举值(如“工序名称”是否符合标准)极易出错。
- 逻辑不一致:同一台设备的数百个点位,往往因为复制粘贴错误,导致其“车间”、“产线”等属性不一致,造成入库失败。
- IoT平台不具备入库校验功能且开发周期较长,为了项目进度不被耽搁,开发此工具,辅助手工校验。
本项目提供了一套基于 Python 的桌面端工具集,用于在数据入库前进行清洗、合并与自动化校验,确保交付给开发团队的数据是标准、干净的。
本项目包含三个独立工具,覆盖数据处理的全流程:
文件:01_字典和设备名称校验
核心校验逻辑,支持 GUI 操作,输出错误日志并生成标黄的错误文件。
-
字典枚举校验:
-
基于
采集表校验字典.md动态加载规则。 -
自动检查“数据类型”、“读写权限”、“单位”等字段是否在标准白名单内。
-
特点:业务人员只需修改 Markdown 文件即可更新校验规则,无需改代码。
-
设备属性一致性校验(亮点):
-
针对同一
设备名称下的所有点位,自动检查其静态属性(如:基地、车间、工段、工序、设备子类型)是否一致。 -
场景:防止出现“同一台单晶炉,前10个点位在A车间,后10个点位被误写成B车间”的情况。
-
空值与格式清洗:自动去除全角空格、换行符等不可见字符。
文件:02_批量修改表头
解决多厂商表头命名不规范的问题(例如厂商写“设备名”,标准库要求“设备名称”)。
- 基于
列名字典.xlsx定义映射关系。 - 自动重命名:将非标列名批量替换为标准列名。
- 自动排序:按照标准模板的列顺序重新排列 Excel 列,确保入库模板一致。
文件:03_合并选中的表格
用于将分散在不同工段、不同负责人的多个 Excel 文件合并为一张总表。
- 智能 Schema 对齐:支持列名不完全一致的表格合并(取并集),自动填充缺失列。
- 数据溯源:合并后自动新增“来源文件”列,便于追踪某条脏数据出自哪个原始文件。
- 多 Sheet 处理:自动识别并合并所有 Sheet 的数据。
本工具集基于 Python 3.12 开发,使用了 tkinter 构建图形界面,方便非技术人员使用。
pip install pandas openpyxl numpy
- 校验规则:编辑
01_.../采集表校验字典.md。使用二级标题##定义字段名,列表项-定义允许的枚举值。 - 列名映射:编辑
02_.../列名字典.xlsx。在“列名映射关系”Sheet 中定义旧名与新名。
双击对应的 .py 脚本或在命令行运行:
# 运行校验工具
python 01_字典和设备名称校验/字典和设备名称校验.py
# 运行表头清洗工具
python 02_批量修改表头/批量修改表头.py
- 校验工具会在界面输出详细日志,指出具体哪一行、哪一列出错。
- 若发现错误,会生成一个新的 Excel 文件,错误单元格将自动填充为黄色背景,方便快速定位修正。
.
├── 00_批量生成图标ICO/ # GUI图标生成辅助脚本
├── 01_字典和设备名称校验/ # [核心] 校验逻辑与规则定义
│ ├── 字典和设备名称校验.py
│ └── 采集表校验字典.md # 校验规则配置文件(Markdown格式)
├── 02_批量修改表头/ # ETL清洗逻辑
│ ├── 批量修改表头.py
│ └── 列名字典.xlsx # 字段映射配置文件
├── 03_合并选中的表格/ # 数据汇聚逻辑
│ ├── combine_table.py
│ └── readme.md
└── requirements.txt # 项目依赖
- 关于一致性算法:在进行设备分组校验时,程序采用了“众数投票”机制(Mode),即以该设备下出现次数最多的属性值为基准,标记与之不符的异常项。
- 扩展性:虽然本项目基于光伏场景设计,但其“Markdown定义字典”+“Pandas校验核心”的架构是通用的,可轻松迁移至锂电、化工等其他离散或流程制造场景。