检测“异常值”

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

在列中,我的值类似0.7、0.85、0.45等,但是它可能恰好具有与大多数值不同的2.13。我如何发现这些“异常值”?

谢谢

pandas outliers
2个回答
0
投票

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

0
投票

您可以获取标准偏差和集合的均值,并从均值中去除超过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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.