在pyplot中移除异常值

时间:2014-07-29 21:54:28

标签: python matplotlib

我最近一直在做自己的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()

1 个答案:

答案 0 :(得分:-2)

首先你应该修复你的导入,你多次导入一些东西:

matplotlib.pyplot,numpy和scipy包含在pylab

第二

你的错误显然在error,你没有在那里删除超过阈值的值。