我正在尝试使用Median Absolute Deviation计算数据集中的异常值。我的数据集是3列,2000行,格式如下:
Km Price id
139000 8500 2010 holden cruze cdx jg auto
173000 8500 2010 holden cruze cdx jg auto
95000 8800 2008 honda civic vti-l auto
141000 8800 2010 holden cruze cdx jg auto
169078 8880 1999 mazda mx-5 manual
如何进行如下所示的数组计算。我希望每一行都有一个'中位数' value,应该是具有相同id的所有行的中位数。
model = '2010 holden cruze cdx jg auto'
data[data['id']==model]['median'] = data[data['id']==model]['Price'].median()
以下陈述为每个模型提供正确的中位数,我只是不知道如何快速将其应用到“中位数”的每一行中。柱。
median = data[data['id']==model]['Price'].median()
或者,或者,我对中位数绝对偏差的处理方法是错误的 - 是否有更快/更容易的方法来处理pandas / numpy?
答案 0 :(得分:1)
您可以使用transform
返回与数据帧长度相同的系列:
df['median'] = df.groupby('id').Price.transform('median')
>>> df
Km Price id median
0 139000 8500 2010-holden-cruze-cdx-jg-auto 8500
1 173000 8500 2010-holden-cruze-cdx-jg-auto 8500
2 95000 8800 2008-honda-civic-vti-l-auto 8800
3 141000 8800 2010-holden-cruze-cdx-jg-auto 8500
4 169078 8880 1999-mazda-mx-5-manual 8880
答案 1 :(得分:0)