检测 "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;
}
在一列中,我有 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;
}