使用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创建和使用字典实例详解
Nov 01 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
Python制作Windows系统服务
Mar 25 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 Python
Python 函数list&amp;read&amp;seek详解
Aug 28 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
python的help函数如何使用
Jun 11 Python
Python计算信息熵实例
Jun 18 Python
python右对齐的实例方法
Jul 05 Python
怎么解决pycharm license Acti的方法
Oct 28 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
VFP与其他应用程序的集成
2006/10/09 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
详解PHP中的Traits
2015/07/29 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
javascript this详细介绍
2016/09/19 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
Python 实现简单的电话本功能
2015/08/09 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
陈欧的广告词
2014/03/18 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
身边的榜样活动方案
2014/08/20 职场文书
银行员工考核评语
2014/12/31 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python