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代码检查工具pylint 让你的python更规范
Sep 05 Python
Python 实现简单的电话本功能
Aug 09 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
python读文件的步骤
Oct 08 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
python清空命令行方式
Jan 13 Python
python程序输出无内容的解决方式
Apr 09 Python
python右对齐的实例方法
Jul 05 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
js数组操作常用方法
2014/05/08 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
python中的一些类型转换函数小结
2013/02/10 Python
python列表的增删改查实例代码
2018/01/30 Python
python3.x实现发送邮件功能
2018/05/22 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python编写简单端口扫描器
2019/09/04 Python
Python猴子补丁知识点总结
2020/01/05 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
公务员培训心得体会
2013/12/28 职场文书
村委会主任先进事迹
2014/01/15 职场文书
电子银行营销方案
2014/02/22 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
协议书范文
2015/01/27 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
在Docker容器中部署SQL Server
2022/04/11 Servers