使用Numpy对特征中的异常值进行替换及条件替换方式


Posted in Python onJune 08, 2020

原始数据为Excel文件,由传感器获得,通过Pyhton xlrd模块读入,读入后为数组形式,由于其存在部分异常值和缺失值,所以便利用Numpy对其中的异常值进行替换或条件替换。

1. 将'nan'替换为给定值

import numpy as np
 
data = np.array([['nan', 1, 2, 3, 4], # 数据类型为字符串型
        [10, 15, 20, 25, 'nan'],
        ['nan', 5, 8, 10, 20]])
print(data)
# [['nan' '1' '2' '3' '4']
# ['10' '15' '20' '25' 'nan']
# ['nan' '5' '8' '10' '20']]
 
data[data == 'nan'] = 100 # 将numpy中为'nan'的项替换为 100
print(data)
# [['100' '1' '2' '3' '4']
# ['10' '15' '20' '25' '100']
# ['100' '5' '8' '10' '20']]
 
data = data.astype(float) # 将数据由字符型转换为浮点型
print(data)
# [[100.  1.  2.  3.  4.]
# [ 10. 15. 20. 25. 100.]
# [100.  5.  8. 10. 20.]]

2. 按列进行条件替换

当利用'3σ准则'或者箱型图进行异常值判断时,通常需要对 > upper 或 < lower的值进行处理,这时就需要按列进行条件替换了。

print(data)
# [[100.  1.  2.  3.  4.]
# [ 10. 15. 20. 25. 100.]
# [100.  5.  8. 10. 20.]]
 
data[:, 1][data[:, 1] < 5] = 5 # 对第2列小于 5 的替换为5
print(data)
# [[100.  5.  2.  3.  4.]
# [ 10. 15. 20. 25. 100.]
# [100.  5.  8. 10. 20.]]
 
data[:, 2][data[:, 2] > 15] = 10 # 对第3列大于 15 的替换为10
print(data)
# [[100.  5.  2.  3.  4.]
# [ 10. 15. 10. 25. 100.]
# [100.  5.  8. 10. 20.]]

补充知识:Python之dataframe修改异常值—按行判断值是否大于平均值的指定倍数,如果是则用均值替换

如下所示:

使用Numpy对特征中的异常值进行替换及条件替换方式

import pandas as pd

data = {'hah':[1,2,9],
    '数量':[3,2,5],
    '价格':[10,9,8]}
df = pd.DataFrame(data)
df

import numpy as np
def panduan(x):
  x_mean = np.mean(x)
  print(x_mean)
  for i in x.index:
    if x[i] > x_mean*2:
      x[i] = x_mean
#     print(i)   
  return x

df = df.apply(lambda x:panduan(x),axis=1)

以上这篇使用Numpy对特征中的异常值进行替换及条件替换方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows下实现Python2和Python3两个版共存的方法
Jun 12 Python
浅谈Python基础之I/O模型
May 11 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
Windows 7下Python Web环境搭建图文教程
Mar 20 Python
python读写配置文件操作示例
Jul 03 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
python 实现性别识别
Nov 21 Python
使用python操作lmdb对数据读取的实例
Dec 11 Python
python 自动化偷懒的四个实用操作
Apr 11 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 #Python
python如何编写win程序
Jun 08 #Python
如何写python的配置文件
Jun 07 #Python
python dict乱码如何解决
Jun 07 #Python
python中adb有什么功能
Jun 07 #Python
python如何保存文本文件
Jun 07 #Python
Python如何用wx模块创建文本编辑器
Jun 07 #Python
You might like
PHP新手上路(十三)
2006/10/09 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
Python实现拼接多张图片的方法
2014/12/01 Python
python编写的最短路径算法
2015/03/25 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python爬虫超时的处理的实例
2018/12/19 Python
用Python解决x的n次方问题
2019/02/08 Python
Python 互换字典的键值对实例
2019/02/12 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Python @property装饰器原理解析
2020/01/22 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
原装进口全世界:天猫国际
2016/08/03 全球购物
建筑设计所实习生自我鉴定
2013/09/25 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
高级工程师英文求职信
2014/03/19 职场文书
班组长竞聘书
2014/03/31 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
使用Python开发冰球小游戏
2022/04/30 Python