【问题标题】:Removing outliers from a list of list in python从python中的列表列表中删除异常值
【发布时间】:2020-01-20 23:53:01
【问题描述】:

我在 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】:

    你可以这样做:

    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
    

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 2021-12-20
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      相关资源
      最近更新 更多