使用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中的多线程实例教程
Aug 27 Python
跟老齐学Python之有容乃大的list(2)
Sep 15 Python
Python实现简单登录验证
Apr 13 Python
django启动uwsgi报错的解决方法
Apr 08 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
关于python的缩进规则的知识点详解
Jun 22 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
Python通过字典映射函数实现switch
Nov 06 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实现单链表的实例代码
2013/03/22 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
js点击选择文本的方法
2015/02/09 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
UNIX文件系统常用命令
2012/05/25 面试题
求职者怎样写自荐信
2014/04/13 职场文书
工作说明书范文
2014/05/07 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
雨花台导游词
2015/02/06 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
合作协议书格式范本
2016/03/21 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
MySQL视图概念以及相关应用
2022/04/19 MySQL