python - 标记数据框中的异常值,在熊猫中创建一个新列
问题描述
我看到了这个问题,想稍微更新一下。
data = {'Group':['A', 'A', 'A'], 'Age':[18, 200, 17]}
df = pd.DataFrame(data)
我想创建一个新列“异常值”,其中异常值将根据 3 个标准偏差标记为真或假。
我想要的输出
data = {'Group':['A', 'A', 'A'], 'Age':[18, 200, 17], 'Outlier':['False', 'True', 'False']}
df = pd.DataFrame(data)
df
解决方案
尝试使用groupby
和transform
:
zscores = df.groupby('Group').transform(lambda x: (x - x.mean()) / x.std())
df["Outlier"] = zscores.abs()>3
>>> df
Group Age Outlier
0 A 18 False
1 A 200 False
2 A 17 False
要获得不考虑组的异常值,请使用:
zscores = (df["Age"]-df["Age"].mean())/df["Age"].std()
df["Outlier"] = zscores.abs()>3
推荐阅读
- javascript - Cannot read property CSS undefined
- google-apps-script - 如何根据单元格值查找特定行并将当前日期插入该行的单元格
- c# - 将数据加载到 DropDownList 非常慢 - asp.net
- php - 检测上一个下一个 ID
- jquery - Bootstrap手风琴,点击时滚动到活动手风琴的顶部,我将如何在嵌套手风琴上实现?
- python - 在谷歌云 apache 梁 python sdk 中记录信息/调试消息
- javascript - 每次我更新数据库时,整个容器都在加载。我怎样才能将它停止到只有一个容器
- javascript - 我的服务仅在我的 ngx 传单地图上显示最后一个 json 元素标记
- c# - c# 读取 pst 文件并在 web 应用程序上提取 .msg 文件
- python - 如何匹配字符串元素并更新plist中相应的响应字符串?