gpt4 book ai didi

python - pandas 分组删除异常值

转载 作者:太空狗 更新时间:2023-10-30 02:37:21 25 4
gpt4 key购买 nike

我想根据分组的第 99 个百分位值删除异常值。

 import pandas as pd
df = pd.DataFrame({'Group': ['A','A','A','B','B','B','B'], 'count': [1.1,11.2,1.1,3.3,3.40,3.3,100.0]})

在输出中,我想从 A 组中删除 11.2,从 B 组中删除 100。所以在最终数据集中只有 5 个观察值。

wantdf = pd.DataFrame({'Group': ['A','A','B','B','B'], 'count': [1.1,1.1,3.3,3.40,3.3]})

我试过这个,但我没有得到想要的结果

df[df.groupby("Group")['count'].transform(lambda x : (x<x.quantile(0.99))&(x>(x.quantile(0.01)))).eq(1)]

最佳答案

这是我的解决方案:

def is_outlier(s):
lower_limit = s.mean() - (s.std() * 3)
upper_limit = s.mean() + (s.std() * 3)
return ~s.between(lower_limit, upper_limit)

df = df[~df.groupby('Group')['count'].apply(is_outlier)]

您可以编写自己的 is_outlier 函数

关于python - pandas 分组删除异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50397250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com