使用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随机数random模块使用指南
Sep 09 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
python实现扫描ip地址的小程序
Apr 16 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
浅谈python 类方法/静态方法
Sep 18 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
图书管理程序(一)
2006/10/09 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
JavaScript this 深入理解
2009/07/30 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
js读写json文件实例代码
2014/10/21 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
实例讲解python函数式编程
2014/06/09 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
.NET程序员的数据库面试题
2012/10/10 面试题
超市开店计划书
2014/04/26 职场文书
环保倡议书50字
2014/05/15 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2014年教研员工作总结
2014/12/23 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript