我有一个DataFrame df
:
name count
aaaa 2000
bbbb 1900
cccc 900
dddd 500
eeee 100
我想查看与计数列的中位数相差10倍的行。
我尝试了df['count'].median()
并获得了中位数。但不知道如何进一步。你能否建议我如何使用pandas / numpy。
预期产出:
name count distance from median
aaaa 2000 *****
我可以使用任何度量作为距中位数的距离(绝对偏离中位数,分位数等)。
答案 0 :(得分:14)
如果您正在寻找如何计算Median Absolute Deviation -
In [1]: df['dist'] = abs(df['count'] - df['count'].median())
In [2]: df
Out[2]:
name count dist
0 aaaa 2000 1100
1 bbbb 1900 1000
2 cccc 900 0
3 dddd 500 400
4 eeee 100 800
In [3]: df['dist'].median()
Out[3]: 800.0
答案 1 :(得分:1)
statsmodels.robust.scale.mad
计算列的,也可以传递一个标准化常量c
,在这种情况下只是1。
>>> from statsmodels.robust.scale import mad
>>> mad(df['count'], c=1)
800.0
答案 2 :(得分:1)
如果要查看中位数,可以使用df.describe()。 50%的值是中位数。