使用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中文编码那些事
Jun 25 Python
简单的编程0基础下Python入门指引
Apr 01 Python
python中星号变量的几种特殊用法
Sep 07 Python
python正则表达式的使用
Jun 12 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
python 字典访问的三种方法小结
Dec 05 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
tensorflow的计算图总结
Jan 12 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Python爬虫HTPP请求方法有哪些
Jun 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
深入解析php中的foreach问题
2013/06/30 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
vue组件学习教程
2017/09/09 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
Python比较2个时间大小的实现方法
2018/04/10 Python
pandas object格式转float64格式的方法
2018/04/10 Python
代码实例讲解python3的编码问题
2019/07/08 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
由面试题加深对Django的认识理解
2019/07/19 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
指针和引用有什么区别
2013/01/13 面试题
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
运动会方队口号
2014/06/07 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
三峡大坝导游词
2015/01/31 职场文书
感恩父母主题班会
2015/08/12 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL