如何在RapidMiner中处理COVID数据集的编码缺失值?
解决RapidMiner中COVID-19数据集特殊缺失值的处理方案
针对你遇到的链式Replace算子界面显示不全的问题,推荐几个更高效的批量处理特殊缺失值的方法,无需依赖链式多算子:
方法1:用Map Values + Generate Attributes 批量转换
- 处理非日期列的97/98/99缺失标记:
- 拖拽
Map Values算子到流程中,连接数据集输入。 - 在算子设置里,批量选择所有数值型/分类型列(排除
death_year)。 - 添加映射规则:将
97、98、99全部映射为missing(RapidMiner的缺失值标识)。
- 拖拽
- 处理
death_year列的特殊日期:- 拖拽
Generate Attributes算子,连接上述输出。 - 创建新属性(或覆盖原属性),输入表达式:
if(death_year == "9999-99-99", null, death_year),将无效日期转为缺失值。
- 拖拽
- 最后用
Replace Missing Values算子,根据列类型选择填充策略(数值列用中位数/均值,分类列用众数,日期列可选择删除缺失行)。
方法2:用Loop Attributes 遍历列处理
适合需要对不同列做差异化处理的场景:
- 拖拽
Loop Attributes算子,设置遍历范围为排除death_year的所有列。 - 在循环内部添加
Replace Values算子,将当前循环列的97、98、99替换为missing。 - 循环结束后,单独用
Replace Values处理death_year列,把9999-99-99替换为missing。
方法3:用Python脚本批量处理(最灵活)
如果RapidMiner的可视化算子受限,直接用脚本一次性处理所有特殊缺失值:
- 拖拽
Execute Python Script算子到流程中。 - 替换脚本内容为:
import pandas as pd # 读取RapidMiner数据集 df = rapidminer.get_dataframe() # 批量替换非death_year列的97/98/99为缺失值 non_death_columns = [col for col in df.columns if col != "death_year"] df[non_death_columns] = df[non_death_columns].replace([97, 98, 99], pd.NA) # 替换death_year列的无效日期为缺失值 df["death_year"] = df["death_year"].replace("9999-99-99", pd.NA) # 将处理后的数据集返回给RapidMiner rapidminer.set_dataframe(df)
- 运行脚本后,后续即可正常使用
Data Audit做EDA,或进行ML建模前的缺失值填充。
内容的提问来源于stack exchange,提问作者najuspy
相关产品推荐
相关产品推荐

