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从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
Oct 15 Python
Python3 操作符重载方法示例
Nov 23 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
OpenCV 模板匹配
Jul 10 Python
Python pandas库中的isnull()详解
Dec 26 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
python爬虫快速响应服务器的做法
Nov 24 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 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中的foreach问题
2013/06/30 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
js里的prototype使用示例
2010/11/19 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python制作词云的方法
2018/01/03 Python
深入浅析Python的类
2018/06/22 Python
python版大富翁源代码分享
2018/11/19 Python
python使用selenium实现批量文件下载
2019/03/11 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
小学教师听课制度
2014/02/01 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
学习决心书
2014/03/11 职场文书
个人工作表现评语
2014/04/30 职场文书
最常使用的求职信
2014/05/25 职场文书