如何基于Sklearn LOF筛选结果保存去异常值的完整Pandas数据集
移除异常值并保存过滤后的DataFrame
核心操作步骤
假设你已经将LocalOutlierFactor的异常识别结果添加到了原DataFrame中(比如新增一列outlier_label,值为"BAD"的行对应异常数据),按以下两步完成需求:
过滤异常行
用Pandas布尔索引筛选出非异常的行:# 假设原DataFrame名为df,异常标记列是outlier_label filtered_df = df[df['outlier_label'] != 'BAD']如果你的LOF模型直接返回的是
-1(代表异常)和1(代表正常)的预测数组(比如执行了lof_pred = lof.fit_predict(df[['power', 'pid']])),可以先将结果转为标记列再过滤:# 先给原DataFrame添加异常标记列 df['outlier_label'] = ['BAD' if x == -1 else 'GOOD' for x in lof_pred] # 过滤掉异常行 filtered_df = df[df['outlier_label'] != 'BAD']保存为CSV文件
使用to_csv()方法保存过滤后的完整DataFrame,建议设置index=False避免保存自动生成的索引列:filtered_df.to_csv('filtered_data.csv', index=False)
额外优化(可选)
如果不需要保留异常标记列,可以在保存前删除:
filtered_df = filtered_df.drop(columns=['outlier_label']) filtered_df.to_csv('filtered_data.csv', index=False)
内容的提问来源于stack exchange,提问作者bbartling
相关产品推荐
相关产品推荐

