使用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 相关文章推荐
python读取浮点数和读取文本文件示例
May 06 Python
粗略分析Python中的内存泄漏
Apr 23 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
python实现将文本转换成语音的方法
May 28 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
django中forms组件的使用与注意
Jul 08 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 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 header功能的使用
2013/10/28 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
PHP读取Excel类文件
2017/05/15 PHP
jquery ajax abort()的使用方法
2010/10/28 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
面试常见的js算法题
2017/03/23 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
python中文乱码的解决方法
2013/11/04 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
17个Python小技巧分享
2015/01/23 Python
Python中下划线的使用方法
2015/03/27 Python
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
python实现简单登陆流程的方法
2018/04/22 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
大学生优秀的自我评价分享
2013/10/22 职场文书
组织鉴定材料
2014/06/02 职场文书
社区反邪教工作方案
2014/06/16 职场文书
业务员岗位职责
2015/02/03 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL