大熊猫数据帧的中位数

时间:2015-04-21 16:58:35

标签: python r numpy pandas

我有一个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   *****

我可以使用任何度量作为距中位数的距离(绝对偏离中位数,分位数等)。

3 个答案:

答案 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)

Median absolute deviation,

enter image description here

也可以使用statsmodels.robust.scale.mad计算列的

,也可以传递一个标准化常量c,在这种情况下只是1。

>>> from statsmodels.robust.scale import mad
>>> mad(df['count'], c=1)
800.0

答案 2 :(得分:1)

如果要查看中位数,可以使用df.describe()。 50%的值是中位数。