python - 根据另一列标记一列的异常值
问题描述
我有一个如下所示的数据框,其中每个小时分钟都有一个订单。仅显示前六行。
命令 | 时分 |
---|---|
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 |
解决方案
通过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))
推荐阅读
- php - API REST 在更新现有资源时返回新资源
- ios - 在 Swift / IOS 中将 shapeLayer 添加到视图层时,绘图应用程序滞后
- java - Java 根据这个输入,程序会显示小于 50 的整数个数
- javascript - node.js 的性能哪一个更好的多类实例或函数调用
- javascript - 用 setTimeout 理解 Vue 中的 while 循环
- laravel - 在流明 laravel 中使用条带连接,安装问题
- ios - 什么是与应用内购买一起提交但我未能包含导致它被拒绝的二进制文件?
- javascript - 在输入字段中按任何关键字时启动自动完成
- javascript - 如何使用 Material-UI 和 react-router 为 React 应用程序提供服务
- python - 在 python 中读取 PASCAL VOC 注释