我有一个如下所示的数据框
dfx = pd.DataFrame({'min_temp' :[38,36,34,38,237,339]})
正如您在下面看到的,此数据237
和239
中有两个异常值>
我想做的是识别大于3 standard deviation
的记录,并用有效的最大值替换它们(考虑数据范围)。
这是我尝试过的方法,但是它不正确并且效率不高
dfx.apply(lambda x: x[(x < dfx[min_temp].mean()-3*dfx[min_temp].std(), dfx[min_temp].mean()+3*dfx[min_temp].std())])
在上面的示例中,38是最大值,因为它在
3sd
限制之内,并且是有效的最大值(表示不异常)。我们需要使用它来替换完整数据框中的所有异常值。
请注意我的真实数据,我有60列以上和100万行。我想在所有列中都这样做。任何有效且可扩展的方法都是有帮助的
我希望我的输出是这样的?您可以看到如何用maximum valid value within 3sd (38 in this case)
您能帮我吗?
我有一个如下所示的数据框dfx = pd.DataFrame({'min_temp':[38,36,34,38,237,339]])正如您在下面看到的那样,此数据237和239中有两个离群值想做的是...
这是一个通用函数,它遵循以下逻辑来检测non
您可以尝试以下操作: