我想通过检查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,当差异较大时删除行以及下一个值与上一行进行比较是好的。
我将不胜感激!
答案 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'值。