在列中,我的值类似0.7、0.85、0.45等,但是它可能恰好具有与大多数值不同的2.13。我如何发现这些“异常值”?
谢谢
使用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]
您可以获取标准偏差和集合的均值,并从均值中去除超过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;
}