使用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使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
python flask安装和命令详解
Apr 02 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
Python调用C语言的实现
Jul 26 Python
python3.6编写的单元测试示例
Aug 17 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
如何使用 Flask 做一个评论系统
Nov 27 Python
Python List remove()实例用法详解
Aug 02 Python
python装饰器代码解析
Mar 23 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
Python解析树及树的遍历
2016/02/03 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
python 读取.nii格式图像实例
2020/07/01 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
C++的几个面试题附答案
2016/08/03 面试题
求职推荐信
2013/10/28 职场文书
生产副总岗位职责
2013/11/28 职场文书
酒店实习个人鉴定
2013/12/07 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
荆州古城导游词
2015/02/06 职场文书
部门主管竞聘书
2015/09/15 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis