使用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 装饰器功能以及函数参数使用介绍
Jan 27 Python
Python字符编码判断方法分析
Jul 01 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
python替换字符串中的子串图文步骤
Jun 19 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
pandas to_excel 添加颜色操作
Jul 14 Python
python如何将图片转换素描画
Sep 08 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
Python日志器使用方法及原理解析
Sep 27 Python
Python之多进程与多线程的使用
Feb 23 Python
基于python定位棋子位置及识别棋子颜色
Jul 26 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解析html的实现代码
2011/08/08 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
竞选班干部演讲稿300字
2014/08/20 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
给领导敬酒词
2015/08/12 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书