大家好,
我正在尝试从我的数据集中删除异常值。我使用mean-3 * std和mean + 3 * std定义了异常值边界。现在我想删除小于mean-3 * std的值并删除大于mean + 3 * std的值。你能帮我写一个这个公式吗?我是python的初学者。我已经看过类似的问题,但到目前为止这没有帮助。
直到现在我还有以下内容:
import pandas as pd
print(df_OmanAirTO.mean()-3*df_OmanAirTO.std(), df_OmanAirTO.mean()+3*df_OmanAirTO.std())
导致:
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
现在我要删除小于mean-3 * std的值,并删除大于mean + 3 * std的值。我怎么能这样做?
提前感谢您的帮助!
答案 0 :(得分:0)
我假设您要在每列上应用离群值条件(即在列FuelFlow
中,删除小于2490.145718
且大于4761.600157
的单元格,以及列ThrustDerateSmoothed
},删除小于8.522145
且大于29.439075
等的单元格,等等...)
我会试试这个:
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)