从python列表中移除异常值

问题描述 投票:0回答:1

我在Python中有此数据,这是列表的列表。我想做的是在第二列中找到任何异常值,即data [0] [1],data [1] [1]等,然后从数据中删除该列表。例如在这里,显然90是异常值,我想删除包含90的列表,即从数据中删除[0.5,80]。我已经尝试过了,但是我认为最后一部分是不正确的。知道如何使用列表推导做到这一点吗?

data= [[0.5549872122762148, 41.176470588235304],
             [0.575197889182058, 33.55145118733509],
             [0.5561224489795918, 38.60204081632651],
             [0.5, 90]]

data_median = np.median(data, axis = 0)
data_std = np.std(data, axis = 0)
cut_off = data_std * 3
lower, upper = data_median - cut_off, data_median + cut_off
dataout = [[y for y in x if y if y < lower or y > upper] for x in data]
python-3.x list-comprehension outliers
1个回答
0
投票

您可以这样操作:

dataout = [[x,y] for x,y in data if (lower[0] < x < upper[0]) and 
                                    (lower[1] < y < upper[1])]

但是您的cut_off太宽容了。尝试使用:

cut_off = data_std * 1
© www.soinside.com 2019 - 2024. All rights reserved.