我正在尝试使用中位数绝对偏差来计算数据集中的离群值。我的数据集是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
我该如何进行数组计算,如下所示。我希望每一行都有一个“中位数”值,该值应该是具有相同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可以更快速/轻松地做到这一点吗?
您可以使用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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句