python剔除异常值的方法_剔除每个cycle异常值(标准差)

波形重定后剔除每个cycle内的异常值

数据格式:Cycle_name Time Altimeter_data

4.0 1013914019.8631 4581.901207

4.0 1013914019.9141 4582.115623

4.0 1013914019.9651 4581.957531

4.0 1013914020.0161 4581.844866

4.0 1013914020.0671 4581.897152

4.0 1013914020.118 4581.93873

4.0 1013914020.169 4582.074072

4.0 1013914020.22 4581.911207

4.0 1013914020.271 4581.793807

9.0 1018197579.7749 4581.697209

9.0 1018197579.8259 4581.589558

9.0 1018197579.8769 4581.70694

9.0 1018197579.9279 4581.715051

9.0 1018197579.9788 4581.677201

9.0 1018197580.0298 4581.689194

9.0 1018197580.0808 4581.779531

9.0 1018197580.1318 4581.587419

10.0 1019054290.5913 4581.867712

10.0 1019054290.6423 4581.74741

10.0 1019054290.6933 4581.669108

10.0 1019054290.7442 4581.694989

10.0 1019054290.7952 4581.514936

10.0 1019054290.8462 4581.562478

# -*- coding: utf-8 -*-

import numpy as np

file_1=r'E:\j1_th10_step2_19s.txt' #指定被筛选的数据文件位置 [cycle time data]

file_2=r'E:\j1_th10_step2_20s.txt' #step2数据结果

file_3=r'E:\j1_th10_step2_stdev.txt' #统计结果

lake_level=np.loadtxt(file_1,dtype=np) #numpy加载文件

cycle_name1=lake_level[:,0]

cycle_name2=cycle_name1.astype("float64")

cycle_name=np.unique(cycle_name2)

cyclename_stdev=[] #存储数据统计结果

in_data1=[] #存储符合条件的数据

for i in cycle_name :

l=[] #存储每个cycle的数据

for ii in lake_level:

if float(i)==float(ii[0]):

l_add=([float(ii[0]),float(ii[1]),float(ii[2])]) #设置加入的元素内容

l.extend([l_add]) #向list中加入元素

ll=np.array(l) #list转为数组

print(i,'分组成功!')

'''

由此取出了每个cycle的数据可对其进行任何操作

'''

num=ll[:,2] #取出每周期内的第三列数据用于计算

num_time=ll[:,1] #取出每周期的第二列元素

left=num.mean()-2*num.std() #设定法则的左右边界

right=num.mean()+2*num.std()

new_num=num[(left

for j in new_num:

for jj in ll:

if float(j)==float(jj[2]):

in_data1.extend([jj])

cyclename_stdev_add=[i,np.std(new_num),np.mean(num_time),np.mean(new_num),np.shape(new_num)[0]] #存储为【周期,标准差,平均值】的形式

cyclename_stdev.extend([cyclename_stdev_add])

s = np.array(cyclename_stdev)

in_data=np.array(in_data1)

print(np.shape(lake_level))

print(np.shape(in_data))

print("本次剔除掉数据个数为",int(np.shape(lake_level)[0])-float(np.shape(in_data)[0]))

np.savetxt(file_2, in_data , fmt="%s", delimiter=" ")#筛选后的数据存储位置

np.savetxt(file_3, s , fmt="%s", delimiter=" ") #筛选统计结果输出位置

print("二倍的西格玛筛选结束!")

原文链接:https://blog.csdn.net/wise_sun/article/details/108366409

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值