You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算DataFrame每行非NA值平均步数并删除超阈值的异常行

Pandas用户访问路径DataFrame精简解决方案

实现逻辑

  • 第一步:计算每个session的有效步数:按行统计非NA值的数量
  • 第二步:识别并排除步数异常偏高的样本,避免异常值拉高平均值
  • 第三步:基于正常样本计算平均有效步数
  • 第四步:筛选保留有效步数不超过平均值的行,完成数据表精简

代码实现

import pandas as pd

# 1. 计算每行的有效步数(非NA值数量)
df['valid_steps'] = df.count(axis=1)

# 2. 用IQR法则识别异常值,你也可以根据业务需求替换为固定阈值(比如步数>100判定为异常)
q1 = df['valid_steps'].quantile(0.25)
q3 = df['valid_steps'].quantile(0.75)
iqr = q3 - q1
# 异常值判定边界:超过Q3+1.5*IQR判定为步数偏高的异常值
upper_abnormal_bound = q3 + 1.5 * iqr

# 3. 排除异常值后计算平均步数
normal_sample = df[df['valid_steps'] <= upper_abnormal_bound]
avg_valid_steps = normal_sample['valid_steps'].mean()

# 4. 筛选保留符合要求的行,删除临时的有效步数字段
df_slim = df[df['valid_steps'] <= avg_valid_steps].drop(columns=['valid_steps'])

调整说明

如果你的业务场景有明确的异常判定规则,可以直接替换第二步的异常值逻辑,比如直接设置upper_abnormal_bound = 100,过滤掉所有步数超过100的会话即可。

内容的提问来源于stack exchange,提问作者S44

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:39:03