首页 > 解决方案 > 根据另一列标记一列的异常值

问题描述

我有一个如下所示的数据框,其中每个小时分钟都有一个订单。仅显示前六行。

命令 时分
120 12.15
150 12.15
7 12.15
20 12.30
200 12.30
23 12.30

我需要帮助在 python 中创建一个名为 outliers_detected 的新列,它根据小时分钟标记订单异常值,如下所示。这必须在一天中的每一小时分钟内完成,而不仅仅是这里显示的两小时分钟。

命令 时分 检测到异常值
120 12.15 0
150 12.15 0
7 12.15 1
20 12.30 0
150 12.30 1
23 12.30 0

标签: pythonpandasdataframedata-scienceoutliers

解决方案


通过Zscore

import numpy as np
from scipy import stats

df['outliers_detected'] = df.groupby('Hourminute').transform(
    lambda x: (np.abs(stats.zscore(x)) > 1).astype(int))

推荐阅读