如何通过使用熊猫进行转换而不删除而是处理异常值?

问题描述 投票:0回答:2

我有一个如下所示的数据框

dfx = pd.DataFrame({'min_temp' :[38,36,34,38,237,339]})

正如您在下面看到的,此数据237239中有两个异常值>

我想做的是识别大于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)

替换异常值

enter image description here

您能帮我吗?

我有一个如下所示的数据框dfx = pd.DataFrame({'min_temp':[38,36,34,38,237,339]])正如您在下面看到的那样,此数据237和239中有两个离群值想做的是...

python python-3.x pandas dataframe outliers
2个回答
1
投票

这是一个通用函数,它遵循以下逻辑来检测non


0
投票

您可以尝试以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.