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入门之三角函数全解【收藏】
Nov 08 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
Python实现图像的垂直投影示例
Jan 17 Python
python时间日期操作方法实例小结
Feb 06 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 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 函数语法介绍一
2009/06/14 PHP
PHP学习笔记之数组篇
2011/06/28 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
php自定义session示例分享
2014/04/22 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
jquery 问答知识整理
2010/02/11 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
Python urlopen 使用小示例
2008/09/06 Python
Python常用内置函数总结
2015/02/08 Python
python实现挑选出来100以内的质数
2015/03/24 Python
在Python的循环体中使用else语句的方法
2015/03/30 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
python导入时小括号大作用
2017/01/10 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
餐饮业创业计划书范文
2014/01/06 职场文书
《秋游》教学反思
2014/04/24 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
2014年药店工作总结
2014/11/20 职场文书
大学生暑期实践报告
2015/07/13 职场文书