使用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中with语句的用法
Apr 15 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
django开发教程之利用缓存文件进行页面缓存的方法
Nov 10 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
python计算n的阶乘的方法代码
Oct 25 Python
python requests模拟登陆github的实现方法
Dec 26 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
如何用 Python 制作 GitHub 消息助手
Feb 20 Python
Python网络编程之ZeroMQ知识总结
Apr 25 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版(4)
2006/10/09 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
yii操作cookie实例简介
2014/07/09 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
vue组件间通信解析
2017/03/01 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
python操作日期和时间的方法
2014/03/11 Python
python获取本机所有IP地址的方法
2018/12/26 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
Python LMDB库的使用示例
2021/02/14 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
入学生会自荐书范文
2014/02/05 职场文书
童年读书笔记
2015/06/26 职场文书
六年级语文教学反思
2016/03/03 职场文书