Skip to main content
 首页 » 编程设计

python之比这更好的方法来删除统计异常值

2025年05月04日11dyllove98

此代码有效。但我忍不住觉得这是一个 hack,尤其是“抵消”部分。我必须把它放在那里,否则每次我执行删除操作时,删除中的所有索引值都会移动 1。

    # remove outliers > devs # of std deviations 
    devs = 1 
    deletes = [] 
    for num, duration in enumerate(durations): 
        if (duration > (mean_duration + (devs * std_dev_one_test))) or \ 
            (duration < (mean_duration - (devs * std_dev_one_test))): 
            deletes.append(num) 
    offset = 0 
    for delete in deletes: 
        del durations[delete - offset] 
        del dates[delete - offset] 
        offset += 1 

关于如何让它变得更好的想法?

请您参考如下方法:

在遍历列表时构建守护者列表:

def isKeeper( duration ): 
    if (duration > (mean_duration + (devs * std_dev_one_test))) or \ 
            (duration < (mean_duration - (devs * std_dev_one_test))): 
        return False 
    return True 
 
durations = [duration for duration in durations if isKeeper(duration)]