【问题标题】:Detect the "outliers"检测“异常值”
【发布时间】:2020-06-13 22:27:40
【问题描述】:

在一列中,我有 0.7、0.85、0.45 等值,但它也可能碰巧有 2.13,这与大多数值不同。我怎样才能发现这个“异常值”?

谢谢

【问题讨论】:

标签: pandas outliers


【解决方案1】:

使用 a 作为 DataFrame 调用 scipy.stats.zscore(a) 以获取包含 a 中每个值的 z-score 的 NumPy 数组。以 x 作为先前结果调用 numpy.abs(x) 将 x 中的每个元素转换为其绝对值。使用语法 (array

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]

【讨论】:

    【解决方案2】:

    您可以得到集合的标准差和均值,并从均值中删除超过 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;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-07-24
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 2018-11-06
      • 2020-06-09
      相关资源
      最近更新 更多