从Pandas Dataframe中删除离群值(循环数据)

2024-07-02 12:23:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用一些用户定义的函数从Pandas数据框中删除异常值。我在Stackoverflow中问的同一个问题有一些答案,但不同的是,我拥有的数据集是循环数据。因此,使用Pandas内置函数mean()std()是不合适的。例如,在循环数据中,355和{}的值只有10的差,而线性差分给出{}。在

我有上千个类似下面的数据帧。我们清楚地看到Geophone6是一个离群值。在

  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  

在绘制极坐标图中的数据时,也可以确认这一点。在

enter image description here

我编写了两个函数mean_anglevariance_angle,它们计算循环均值和方差,以应用于数据。方差给出一个介于0和1之间的值。当数据接近时,方差值接近0,反之亦然。在

^{pr2}$

然而,当从计算中排除第5行时,均值和方差分别变成195.06226604362286 , 0.0007544067627361928。方差从0.25变为几乎0。在

因此,我想找到一种方法来删除任何循环异常值(azimuth),它使用上面定义的函数使循环方差很高。在

在这个例子中,incidence也是同一个Geophone的离群值,但它实际上与azimuth没有任何关系。还有一些其他数据,incidence在范围内,而{}是离群值。在

任何帮助都是非常感谢的。在


Tags: 数据函数答案用户pandas定义meanstackoverflow
1条回答
网友
1楼 · 发布于 2024-07-02 12:23:10

进行异常值检测的一种方法是计算数据的平均值和标准差,然后删除位于平均值标准值之外的点(在这里,您将A调整为对数据合理的值)

所以你可以用你的函数来计算你的数据帧的均值和方差,然后再次传递这个数据帧来删除均值标准之外的数据点。在

相关问题 更多 >