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中用format函数格式化字符串的用法
Apr 08 Python
django实现分页的方法
May 26 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
python之文件读取一行一行的方法
Jul 12 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
python绘制随机网络图形示例
Nov 21 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
什么是python的列表推导式
May 26 Python
python与js主要区别点总结
Sep 13 Python
Python如何急速下载第三方库详解
Nov 02 Python
浅析Django接口版本控制
Jun 26 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 curl参数的详解
2013/06/17 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python删除特定文件的方法
2015/07/30 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python实现微信小程序支付功能
2019/07/25 Python
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
办护照工作证明范本
2014/01/14 职场文书
活动总结怎么写
2014/04/28 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
党员剖析材料范文
2014/09/30 职场文书
健康状况证明书
2014/11/26 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
银行求职信怎么写
2019/06/20 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python