im试图在列表中查找平均值。但有时我的列表中包含大量数字,可能会影响计算平均值。
list = [215,255,210,205,450,315,235,250,450,250,250,250,210,450,210]
平均值在210到250之间是有意义的,但是450和315等数字可能会增加平均值。如何自动删除450等主导因素并轻松找到正确的平均数?
答案 0 :(得分:0)
与数据集的其余部分相比,您正在谈论的主导因素被称为异常值(非常高或非常低)的数据中的“异常值”。您可以使用zscore的概念从数据中删除这些异常值
from scipy.stats import zscore
list1 = [215,255,210,205,450,315,235,250,450,250,250,250,210,450,210]
score=zscore(list1)
threshold=1 #should be 3 generally
list1 = [value for index,value in enumerate(list1) if abs(score[index])<=threshold ]
您可以根据自己的意愿更改阈值,并查看最终要确定阈值的list1(尝试输入0至3的多个值)。有关zscore的更多信息:outlier detection