如何在RapidMiner中将数据集0值替换为缺失值或NaN值
RapidMiner中将0值替换为NaN/缺失值的操作方法
你之前用到的Replace missing values、Replace all missings算子都是用于将缺失值替换为其他指定值的,方向和你的需求相反;Map算子没生效大概率是因为没匹配对目标属性的数据类型,可参考以下两种方案实现需求:
方案1:使用Replace算子(最简单的批量替换方案)
- 先确认待处理0值的属性类型:如果是数值型属性,匹配目标为数值0;如果是名义/字符串型属性,匹配目标为字符串
"0" - 拖入
Replace算子到流程中,和上游数据集连接 - 在算子参数面板完成配置:
- 属性过滤:选择需要处理的属性范围,可以指定单个属性、多个属性,也可以直接筛选所有数值型属性
- 替换值:输入对应类型的0(数值/字符串)
- 替换为:直接选择「缺失值」(部分版本显示为NaN)
- 运行流程即可完成替换,后续可通过
Statistics算子查看缺失值计数验证结果。
方案2:使用Generate Attributes算子(支持自定义规则)
如果需要设置更灵活的替换条件,比如仅当某列符合其他关联条件时才替换0,可以用这个方案:
- 拖入
Generate Attributes算子连接上游数据集 - 编辑属性生成规则,若要修改原列col1,规则写为:
if(col1 == 0, NaN, col1) - 若需要批量处理多列,可以嵌套
Loop Attributes算子实现:
外层添加
Loop Attributes算子,筛选所有需要处理的属性;内层放入Generate Attributes算子,通过宏变量调用当前循环的属性,规则写为if(%{loop_attribute} == 0, NaN, %{loop_attribute}),运行后即可批量完成所有选中列的0值替换。
常见问题排查
如果替换后还是没生效,先检查属性数据类型是否和你填写的替换值匹配,比如数值型属性填字符串"0"是无法匹配到的,需要先做类型转换再执行替换。
内容的提问来源于stack exchange,提问作者Julio Orrego
相关产品推荐
相关产品推荐

