modules.contaDataProcess 模块帮助
本章节包含 modules.contaDataProcess 包中与**污染物浓度类表格数据**处理相关的模块说明,例如将 GDIM / 业务表中的浓度字符串批量转为数值型,供统计、绘图或写入下游模块使用。
ContaDataToNumeric
模块简介与适用场景
ContaDataToNumeric将TableData或TableCollection中指定列的**污染物浓度类字符串**转换为数值型(float),并输出同类型的表或表集合。支持监测数据中常见的浓度写法(如
nd、<0.01、missing等);具体转换规则见后文「转换规则说明」。无法识别的单元格值可通过
invalid_value_action、invalid_warning_type配置处理方式,详见「参数说明」与「无效值处理说明」。输入形态:单张
TableData,或 ``TableCollection``(可仅处理部分表,并保留主表 / 子表关系)。典型适用场景:
从 GDIM 读入的浓度字段仍为字符串,需在统计或绘图前统一为数值;
仅需处理部分表或部分字段时,通过
process_type、process_tables、concentration_fields精确控制范围。
端口说明
输入端口 -
InputTable:待处理的TableData或TableCollection。输出端口 -
OutputTable:与输入同类型的表或表集合;当InputTable为空时为None。
快速上手示例:单表自动识别污染物浓度字段
process_type="auto" 时,模块会自动处理字段元数据中 data_format 为 pollutantConcentration 的列。
from gdisdk.modules.contaDataProcess import ContaDataToNumeric
module = ContaDataToNumeric(mname="ContaToNumeric")
module.process_type = "auto"
module.InputTable = your_table_data
module.execute()
numeric_table = module.OutputTable.data
快速上手示例:仅处理指定字段
from gdisdk.modules.contaDataProcess import ContaDataToNumeric
module = ContaDataToNumeric(mname="ContaToNumericInclude")
module.process_type = "include"
module.concentration_fields = ["benzene", "甲苯"] # 字段内部名或字段标题
module.InputTable = your_table_data
module.execute()
numeric_table = module.OutputTable.data
快速上手示例:表集合中按表分别配置
from gdisdk.modules.contaDataProcess import ContaDataToNumeric
module = ContaDataToNumeric(mname="ContaToNumericCollection")
module.process_type = "include"
module.process_tables = ["sample", "其他表"] # 表内部名或表标题
module.concentration_fields = {
"sample": ["benzene"],
"其他表": ["value"],
}
module.InputTable = your_table_collection # TableCollection
module.execute()
numeric_collection = module.OutputTable.data
快速上手示例:自定义无效值处理
from gdisdk.modules.contaDataProcess import ContaDataToNumeric
module = ContaDataToNumeric(mname="ContaToNumericInvalid")
module.process_type = "auto"
module.invalid_value_action = "to_nan" # 无效值转为 NaN
module.invalid_warning_type = "gdi_warning" # 在 GDIM 中显示告警
module.InputTable = your_table_data
module.execute()
numeric_table = module.OutputTable.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
构造时可直接赋给 |
|
|
|
字段选择模式。 |
|
|
|
仅 ``TableCollection`` 输入时有效:指定待处理的表名或表标题列表。未指定时处理集合中的全部表;未出现在列表中的表保持原样输出。 |
|
|
|
参与 |
|
|
|
|
|
|
|
|
|
|
|
当 |
|
|
|
待处理列中出现无法识别的单元格值时的处理方式。 |
|
|
|
当 |
转换规则说明
已是数值类型的单元格会转为
float保留。可解析为普通数字的字符串会转为对应浮点数。
下列字符串(不区分大小写,除中文项外)转为
NaN:missing、unmeasured、not-measured、nm、unknown、unk、na。空字符串
""与None转为NaN,不视为无效值。下列字符串转为
detect_limit:nd、nondetect、non-detect、小于检出限。匹配
<数字的字符串(如"<0.01"、"< 0.01")转为less_than_multiplier × 数字。非字符串且非数值类型、以及无法归入以上规则的取值:视为**无效值**,按
invalid_value_action处理;需要平台可见告警时将invalid_warning_type设为"gdi_warning"。
无效值处理说明
取值 |
行为 |
是否告警 |
|---|---|---|
|
抛出 |
否 |
|
删除含无效值的整列 |
是(按 |
|
删除含无效值的整行(同一行任一待处理列无效即删整行) |
是(按 |
|
将无效单元格转为 |
是(按 |
|
将无效单元格转为 |
是(按 |
行为与错误说明
process_type="auto"依赖字段元数据data_format == "pollutantConcentration";若上游表未设置该格式,请改用include或exclude并配置concentration_fields:待转换列较少时用include显式列出;待转换列较多、仅需排除少数非浓度列时,用exclude往往更省事。concentration_fields为dict且process_type != "auto"时,键必须与输入表名/表标题匹配;不匹配的表配置会被忽略,并按missing_error_type报错或告警。TableCollection输入时,输出集合会保留原集合的主表、子表及primary_key关系;仅process_tables命中的表会做数值转换。当没有任何列需要处理时,模块返回输入表的**拷贝**,数据内容不变。
在 pipeline 中的使用方式
from gdisdk.pipeline import PipeLine
from gdisdk.modules.contaDataProcess import ContaDataToNumeric
pipe = PipeLine(app_name="ContaNumericDemo", app_title="污染物浓度转数值示例")
to_numeric = ContaDataToNumeric(mname="ContaToNumeric")
to_numeric.process_type = "auto"
to_numeric.detect_limit = 0.0
to_numeric.less_than_multiplier = 0.5
# reader.OutputTable >> to_numeric.InputTable
pipe.add_module(to_numeric)
pipe.run()
result = to_numeric.OutputTable.data
更多信息