python - Python Pandas:如何删除列中的异常值,并将它们替换为先验值(假设它们不是异常值)?
问题描述
我有一个看起来像这样的数据框:
Date | Value.
2020-03-18 10
2020-03-19 20
2020-03-20 30
2020-03-21 25
2020-03-22 35
2020-03-23 50
2020-03-24 1900000
2020-03-25 1200000
2020-03-26 50
2020-03-27 25
2020-03-28 35
2020-03-29 50
2020-03-30 25
2020-03-31 35
...
2021-01-31 45
value
我用先前的非异常值替换列中的异常值的最快方法是什么?
我需要注意不要简单地将异常值替换为先前的数字,因为如果先前的值也是异常值(如 中所示2020-03-24
),它会搞砸。
非常感谢你的帮助!
解决方案
正如所评论的,您的样本数据没有异常值。但是,根据您的逻辑,您可以执行以下操作:
std, mean = df['Value'].agg(['std','mean'])
df['Value'] = df['Value'].where(df['Value'].between(mean-3*std, mean+3*std)).ffill()
推荐阅读
- python - 切出三角形并将它们混合
- javascript - React-Native 按对象内的日期值对对象数组进行排序
- python-3.x - 有什么方法可以绕过将新变量映射到从 python 函数返回的元组值的需要?
- reactjs - 从 Redux 状态数组中移除多个对象
- nsis - 在目录页面对话框中设置运行时光标位置 - NSIS
- sql-server - 用于运输标签的 SQL Server 报表生成器,每页一个
- python - 在文件夹中创建新图像
- python - numpy中地板除法的奇怪结果
- python - 如何在 python 中使用变量作为正则表达式?
- angular - 常量:没有找到错误的组件工厂