使用标准差和平均值公式删除异常值

8 浏览
0 Comments

使用标准差和平均值公式删除异常值

大家好,\n我正在尝试从数据集中删除异常值。我使用平均值减去3倍标准差和平均值加上3倍标准差来定义异常值的范围。现在我想删除小于平均值减去3倍标准差的值,并删除大于平均值加上3倍标准差的值。你能帮我写一个公式吗?我是Python的初学者。我已经查看了类似的问题,但目前还没有得到帮助。\n到目前为止我有以下代码:\n

import pandas as pd
print(df_OmanAirTO.mean()-3*df_OmanAirTO.std(), df_OmanAirTO.mean()+3*df_OmanAirTO.std())

\n结果为:\n

FuelFlow                2490.145718
ThrustDerateSmoothed       8.522145
CoreSpeed                 93.945180
EGTHotDayMargin            9.950557
EGT                      684.168701
TotalAirTemperature       11.980698
ThrustDerate              -3.780215
dtype: float64 
FuelFlow                4761.600157
ThrustDerateSmoothed      29.439075
CoreSpeed                101.360974
EGTHotDayMargin           90.414781
EGT                      915.952163
TotalAirTemperature       43.266653
ThrustDerate              44.672861
dtype: float64

\n现在我想删除小于平均值减去3倍标准差的值,并删除大于平均值加上3倍标准差的值。我该如何做?\n提前感谢您的帮助!

0
0 Comments

问题:Dropping outliers using standard deviation and mean formula

原因:出现这个问题是因为在处理数据时,可能会存在一些异常值(outliers),它们的数值明显偏离了其他数据点的分布,可能会对分析结果产生干扰或误导。因此,需要找到一种方法来剔除这些异常值,以保证数据的准确性和可靠性。

解决方法:使用标准差和均值公式来剔除异常值。具体步骤如下:

1. 首先,针对每一列的数据(例如,对于列“FuelFlow”,剔除小于2490.145718和大于4761.600157的数值;对于列“ThrustDerateSmoothed”,剔除小于8.522145和大于29.439075的数值,以此类推)。

2. 使用以下代码来实现剔除异常值的操作:

filt_outliers_df_oman = df.apply(lambda x: x[(x < df_OmanAir[x.name].mean() - 3 * df_OmanAir[x.name].std()) & 
                                             (x > df_OmanAIr[x.name].mean() + 3 * df_OmanAir[x.name].std())], axis=0)

这段代码通过计算每一列数据的均值和标准差,然后根据3倍标准差的原则,将位于均值加减3倍标准差范围之外的数值剔除。

通过使用这种方法,我们可以有效地剔除异常值,从而提高数据分析的准确性和可信度。

0