检测 "outliers"

Detect the "outliers"

在一列中,我有 0.7、0.85、0.45 等值,但也可能恰好有 2.13,这与大多数值不同。我怎样才能发现这个 "outliers"?

谢谢

调用 scipy.stats.zscore(a) 并将 a 作为 DataFrame 以获取包含 a 中每个值的 z 分数的 NumPy 数组。以 x 作为前一个结果调用 numpy.abs(x) 将 x 中的每个元素转换为其绝对值。使用语法 (array < 3).all(axis=1) 将数组作为先前的结果来创建布尔数组。使用此结果过滤原始 DataFrame。

z_scores = stats.zscore(df)

abs_z_scores = np.abs(z_scores)
filtered_entries = (abs_z_scores < 3).all(axis=1)
new_df = df[filtered_entries]

您可以获得集合的标准差和均值,并从均值中删除超过 X(比如 2)个标准差的任何内容?

下面计算标准差

 public static double StdDev(this IEnumerable<double> values)
    {
        double ret = 0;
        if (values.Count() > 1)
        {
            double avg = values.Average();
            double sum = values.Sum(d => Math.Pow(d - avg, 2));
            ret = Math.Sqrt((sum) / (values.Count() - 1));
        }
        return ret;
    }