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 11 Python
Django框架中方法的访问和查找
Jul 15 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
利用Python破解斗地主残局详解
Jun 30 Python
python 实现UTC时间加减的方法
Dec 31 Python
Django用户认证系统 User对象解析
Aug 02 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
python的链表基础知识点
Sep 13 Python
Python爬虫基础之爬虫的分类知识总结
May 13 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
数据库查询记录php 多行多列显示
2009/08/15 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
图片完美缩放
2006/09/07 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
使用PYTHON创建XML文档
2012/03/01 Python
python删除文件示例分享
2014/01/28 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
自我鉴定范文
2013/11/10 职场文书
创伤外科专业推荐信范文
2013/11/19 职场文书
小学安全教育材料
2014/02/17 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers