通过熊猫计算MAD(平均绝对偏差)组

假想忍者

我有一个数据框:

Type Name Cost
  A   X    545
  B   Y    789
  C   Z    477
  D   X    640
  C   X    435
  B   Z    335
  A   X    850
  B   Y    152

我的数据框中具有类型['A','B','C','D']和名称['X','Y','Z']的所有此类组合。我使用了groupby方法来获取特定组合的统计信息,例如AX,AY,AZ。下面是一些代码:

df = pd.DataFrame({'Type':['A','B','C','D','C','B','A','B'] ,'Name':['X','Y','Z','X','X','Z','X','Y'], 'Cost':[545,789,477,640,435,335,850,152]})
df.groupby(['Name','Type']).agg([mean,std])  
#need to use mad instead of std  

我需要消除3个MAD以外的观测值;就像是:

test = df[np.abs(df.Cost-df.Cost.mean())<=(3*df.Cost.mad())]

我对此感到困惑,因为df.Cost.mad()返回整个数据而不是特定Type-Name类别的Cost的MAD。我该如何结合两者?

朱利安·斯普朗克(Julien Spronck)

您可以使用groupbytransform创建可用于过滤数据的新数据系列。

groups = df.groupby(['Name','Type'])
mad = groups['Cost'].transform(lambda x: x.mad())
dif = groups['Cost'].transform(lambda x: np.abs(x - x.mean()))
df2 = df[dif <= 3*mad]

但是,在这种情况下,由于差异等于平均绝对偏差(各组最多只有两行),因此不会过滤掉任何行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算平均绝对偏差

来自分类Dev

与numpy ndarray的平均绝对偏差

来自分类Dev

R中的绝对偏差计算

来自分类Dev

添加每行具有中位数绝对偏差(MAD)的列

来自分类Dev

当我尝试计算平均绝对偏差时,为什么程序返回inf?

来自分类Dev

在Holtwinter中找到平均绝对偏差

来自分类Dev

计算与熊猫系列每月平均价值的累计偏差

来自分类Dev

计算熊猫的平均行数

来自分类Dev

计算大熊猫的唯一组合的平均值

来自分类Dev

通过解析计算Parzen Windows的偏差

来自分类Dev

如何计算熊猫的平均时间?

来自分类Dev

通过包含级别计算平均值-基于整个组扩展窗口

来自分类Dev

通过分组计算熊猫数据框架上的累积移动平均值

来自分类Dev

熊猫数据透视表:通过aggfunc计算加权平均值

来自分类Dev

C ++计算平均值和标准偏差

来自分类Dev

通过避免R中的组中的第一个值来按组计算平均值

来自分类Dev

通过参数化熊猫组

来自分类Dev

使用R按组计算累积标准偏差

来自分类Dev

如何通过/最大计算获得熊猫组中的其他列名信息?

来自分类Dev

如何获得每个组每小时的平均绝对频率?

来自分类Dev

groupby对象熊猫的绝对值的平均值

来自分类Dev

计算数据组的平均值

来自分类Dev

使用dplyr按组计算平均时差

来自分类Dev

熊猫-按组/子组执行滚动平均值

来自分类Dev

熊猫:通过多索引计算

来自分类Dev

熊猫计算每小时平均值

来自分类Dev

熊猫-计算时间戳的平均值

来自分类Dev

计算循环的简单移动平均熊猫

来自分类Dev

使用熊猫计算累积平均值