我想用一些用户定义的函数从Pandas数据框中删除异常值。我在Stackoverflow中问的同一个问题有一些答案,但不同的是,我拥有的数据集是循环数据。因此,使用Pandas内置函数mean()
,std()
是不合适的。例如,在循环数据中,355
和{
我有上千个类似下面的数据帧。我们清楚地看到Geophone
6是一个离群值。在
Geophone azimuth incidence
0 1 194.765326 29.703151
1 2 193.143982 23.380681
2 3 199.327911 34.752212
3 4 195.641010 49.186893
4 5 193.479015 21.192982
5 6 0.745142 3.410046
6 7 192.380435 29.778807
7 8 196.700814 19.750237
在绘制极坐标图中的数据时,也可以确认这一点。在
我编写了两个函数mean_angle
和variance_angle
,它们计算循环均值和方差,以应用于数据。方差给出一个介于0和1之间的值。当数据接近时,方差值接近0,反之亦然。在
然而,当从计算中排除第5行时,均值和方差分别变成195.06226604362286 , 0.0007544067627361928
。方差从0.25
变为几乎0
。在
因此,我想找到一种方法来删除任何循环异常值(azimuth
),它使用上面定义的函数使循环方差很高。在
在这个例子中,incidence
也是同一个Geophone
的离群值,但它实际上与azimuth
没有任何关系。还有一些其他数据,incidence
在范围内,而{
任何帮助都是非常感谢的。在
进行异常值检测的一种方法是计算数据的平均值和标准差,然后删除位于平均值标准值之外的点(在这里,您将A调整为对数据合理的值)
所以你可以用你的函数来计算你的数据帧的均值和方差,然后再次传递这个数据帧来删除均值标准之外的数据点。在
相关问题 更多 >
编程相关推荐