如何求Pandas异常值的均值

mkh04yzy  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(174)

我有一个Pandasdf如下

df = pd.DataFrame({'group':list('aaaabbbbab'),
                   'val':[1,3,3,2,5,6,6,2,10,12],
                   'id':[1,1,2,2,2,3,3,3,12,14],
                   })

我想得到每组(a和B)离群值的平均值。请帮助。
我能够使用以下代码从上述df中找到离群值记录的数量、总grp计数、grp平均值

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,'count','mean'])
dxxyhpgq

dxxyhpgq1#

稍微调整一下您的函数:

def get_mean_outliers (column):
     q1 = np.percentile(column, 25)
     q3 = np.percentile(column, 75)
     return column[(column<q1) | (column>q3)].mean()

df.groupby('group').agg([get_num_outliers,'count','mean', get_mean_outliers])

输出量:

val                                            id                             
      get_num_outliers count mean get_mean_outliers get_num_outliers count mean get_mean_outliers
group                                                                                            
a                    2     5  3.8               5.5                1     5  3.6              12.0
b                    2     5  6.2               7.0                2     5  5.0               8.0

相关问题