我最近一直在做自己的NASA数据分析,最近我被困住了。
显然,对于真实数据,存在误差。 (只需在此处查看我未经过滤的数据!http://imgur.com/QW1VZyM,49fQB0O#0 http://imgur.com/QW1VZyM,49fQB0O#1)
我正试图找到一种逻辑上过滤异常值的方法。例如,如果您查看我的代码,您将看到我在哪里进行实验:
indx = np.abs(rate) < outlierRemovalRate
clean_rate = rate[indx]
clean_time = time[indx]
当我运行它时,我收到此错误消息:
文件“C:\ Users \ Ken Preiser \ Anaconda \ lib \ site-packages \ matplotlib \ cbook.py”,第1439行,在safezip中 引发ValueError(_safezip_msg%(Nx,i + 1,len(arg))) ValueError:在safezip中,len(args [0])= 29965但len(args [1])= 29972
显然,存在一些问题,其中异常值的某些部分正在被过滤,而其他部分则没有(29972是未过滤的数据点数,29965是过滤后的数据点数)。
我将在下面发布我的整个代码。如果有人可以帮助我使用这种异常值去除方法或建议/写另一个,我会很感激它! :D谢谢!
import os
import pyfits as fits
import numpy as np
import pylab
import random
import scipy.optimize
import scipy.signal
from numpy import arange
from matplotlib import pyplot
from scipy.optimize import curve_fit
from collections import OrderedDict
rate = np.sum(data['RATE'][:,:4], axis=1)
#outlier removal
indx = np.abs(rate) < outlierRemovalRate
clean_rate = rate[indx]
clean_time = time[indx]
error = data.field('ERROR')
error = np.sqrt(np.sum(data['ERROR'][:,:4]**2, axis=1))
print clean_rate.size,(" rate")
print clean_time.size,(" time")
fig = pylab.figure()
ax = fig.add_subplot(111)
pylab.show()
答案 0 :(得分:-2)
首先你应该修复你的导入,你多次导入一些东西:
matplotlib.pyplot,numpy和scipy包含在pylab
中第二
你的错误显然在error
,你没有在那里删除超过阈值的值。