如何根据差异找到离群值?

时间:2019-07-25 12:20:20

标签: python-3.x row difference

我想通过检查2个值之间的差值来找到我的河流公里数计算中的异常值, 我已经写了这样的代码:

function

但是当数据帧中有2个离群值时,就会出现问题:

partial_function (tailrec)

所以在我的情况下,离群值是2个值

df['diff_to_traj'] = df.river_km.diff()

df2 = df[(df.diff_to_traj < 3) & (df.diff_to_traj > -3)]
print(df2.diff_to_traj.min())

但是用这种方法 差异riever_km我无法同时检测到它们

如何计算差异并检查tahat是否小于3 km,当差异较大时删除行以及下一个值与上一行进行比较是好的。

我将不胜感激!

1 个答案:

答案 0 :(得分:0)

当我想找到较高的离群值时,通常要做的是获取一定百分比的数据并检查比该百分比高得多的值。

在您的情况下,我会这样做:

n = 1.20
q = 0.6
outliers = df['river_km'] > n*df['river_km'].quantile(q)
outliers
0    False
1    False
2     True
3     True
4    False
5    False
Name: river_km, dtype: bool

在其中查找比数据的第60个百分点高至少20%的行。对我来说,它通常像是一种魅力。

但是,如果您想进行良好的检测,则可能必须修改'n'和'q'值。