使用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 文件和输入输出小结
Oct 09 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
详解python使用turtle库来画一朵花
Mar 21 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
python实现机器人卡牌
Oct 06 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
python list的index()和find()的实现
Nov 16 Python
Python序列化与反序列化相关知识总结
Jun 08 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
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Linux下Python获取IP地址的代码
2014/11/30 Python
Python的函数的一些高阶特性
2015/04/27 Python
python机器学习之贝叶斯分类
2018/03/26 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
什么是索引指示器
2012/08/20 面试题
网站编辑求职信
2013/10/17 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
客房领班岗位职责
2015/02/11 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
李强感恩观后感
2015/06/17 职场文书
小学记事作文之200字
2019/08/06 职场文书
创业计划书之便利店
2019/09/05 职场文书