gpt4 book ai didi

python - 按组获取 Pandas 中异常值的数量

转载 作者:行者123 更新时间:2023-11-30 22:19:48 25 4
gpt4 key购买 nike

我正在尝试从 Pandas 数据框中按组获取离群值的数量。

我的数据如下所示。

df = pd.DataFrame({'group':list('aaaabbbb'),
'val':[1,3,3,2,5,6,6,2],
'id':[1,1,2,2,2,3,3,3],
'mydate':['01/01/2011 01:00:00',
'01/01/2011 01:02:00',
'01/01/2011 01:05:00',
'01/01/2011 01:06:00',
'01/01/2011 03:00:00',
'01/01/2011 04:00:00',
'01/01/2011 05:00:00',
'01/01/2011 10:00:00']})
df

为了获取异常值的数量,我使用以下函数来获取 IQR。

def get_IQR():
q1 = df["val"].quantile(0.25)
q3 = df["val"].quantile(0.75)
iqr = (df["val"] > q1) & (df["val"] < q3)
return val.loc[iqr]

df[["group","val"]].agg([get_IQR])

这不起作用并产生以下结果

ValueError: no results

是否有人有更好的策略来查找每组异常值的数量,以便......

group   num_outliers
a ...
b ...
c ...

最佳答案

如果你想使用聚合函数,你需要以不同的方式定义它。 Pandas 会将向量传递给函数,函数需要输出单个值。所以:

def get_num_outliers (column):
q1 = np.percentile(column, 25)
q3 = np.percentile(column, 75)
return sum((column<q1) | (column>q3))

然后这样调用它:

 df.groupby('group').agg([get_num_outliers])

关于python - 按组获取 Pandas 中异常值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48994157/

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