python:删除离群值操作(每一行为一类数据)


Posted in Python onJune 08, 2020

删除有多行字符串的json文件中的离群值

def processHold(eachsubject,directory,newfile):
	filename = 'CMUDataCol/Hold/subject{0}.json'.format(eachsubject) # 原文件
	
	with open(filename, 'r') as f: 
		for jsonstr in f.readlines(): # 按行读取原文件
		# 这里的情况是每一行为一类数值,该行内的数据相互比较找出是否有离群值
		# 若存在离群值,则删除该行数据
			data = json.loads(jsonstr)
			
			#计算四分位点
			a = numpy.array(data) 
			q1 = numpy.percentile(a, 25)  
			q3 = numpy.percentile(a, 75)  
			iqr = q3 - q1
			
			# 找出异常值
			i = 0 
			for item in zip(data): 
				# 在正常值范围内时 i+1
				if item <= q3 + (1.5*iqr) and item >= q1 - (1.5*iqr):   
					i = i + 1  
					
			if i == 10: 
			# 这里是因为我的json文件中每行data有10个元素(如果有更好的方法,请教我一下,谢谢您!)  
				HoldTime = data
				with open(newfile, 'a') as f: # 将非离群数据存入新文件
					json.dump(HoldTime, f) 
					f.write('\n')

补充知识:dataframe 离群值处理

离群值:远离数据主要部分的样本(极大值或极小值)

处理方式:

删除:直接删除离群样本

填充样本:使用box-plot定义变量的数值上下界,以上界填充极大值,以下界填充最小值

# 查看房价的离群情况
df['average_price'].hist()
plt.show()
df[['average_price']].boxplot()
plt.show()

python:删除离群值操作(每一行为一类数据)

# 根据箱线图的上下限进行异常值的填充
def boxplot_fill(col):
 # 计算iqr:数据四分之三分位值与四分之一分位值的差
 iqr = col.quantile(0.75)-col.quantile(0.25)
 # 根据iqr计算异常值判断阈值
 u_th = col.quantile(0.75) + 1.5*iqr # 上界
 l_th = col.quantile(0.25) - 1.5*iqr # 下界
 # 定义转换函数:如果数字大于上界则用上界值填充,小于下界则用下界值填充。
 def box_trans(x):
  if x > u_th:
   return u_th
  elif x < l_th:
   return l_th
  else:
   return x
 return col.map(box_trans)
# 填充效果查看
boxplot_fill(df['average_price']).hist()
# 进行赋值
df['average_price'] = boxplot_fill(df['average_price'])
plt.show()

以上这篇python:删除离群值操作(每一行为一类数据)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简明 Python 基础学习教程
Feb 08 Python
Python中的闭包实例详解
Aug 29 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
python读取目录下最新的文件夹方法
Dec 24 Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
python调用其他文件函数或类的示例
Jul 16 Python
Python3实现建造者模式的示例代码
Jun 28 Python
python中np是做什么的
Jul 21 Python
pyecharts在数据可视化中的应用详解
Jun 08 #Python
python numpy实现rolling滚动案例
Jun 08 #Python
Python如何向SQLServer存储二进制图片
Jun 08 #Python
python求numpy中array按列非零元素的平均值案例
Jun 08 #Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 #Python
使用Python FastAPI构建Web服务的实现
Jun 08 #Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 #Python
You might like
PHP新手上路(四)
2006/10/09 PHP
php google或baidu分页代码
2009/11/26 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
eval的两组性能测试数据
2012/08/17 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
python查询mysql,返回json的实例
2018/03/26 Python
python实现数据库跨服务器迁移
2018/04/12 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
Python代码注释规范代码实例解析
2020/08/14 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
工人先进事迹材料
2014/12/26 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
导游词之日本富士山
2020/01/06 职场文书