使用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生成器(Generator)详解
Apr 13 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
java中两个byte数组实现合并的示例
May 09 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 Python
python爬虫基础之urllib的使用
Dec 31 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 中检查或过滤IP地址的实现代码
2011/11/27 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
php生成略缩图代码
2012/07/16 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
python 基于opencv操作摄像头
2020/12/24 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
linux面试题参考答案(11)
2012/05/01 面试题
大学生毕业自我鉴定
2013/11/06 职场文书
晚归检讨书
2014/02/19 职场文书
书香家庭事迹材料
2014/05/09 职场文书
付款委托书范本
2014/10/05 职场文书
未中标通知书
2015/04/17 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
放飞理想主题班会
2015/08/14 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
JUnit5常用注解的使用
2021/07/02 Java/Android
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS