2015-04-21 386 views
6

我有一個數據幀df平均大熊貓據幀

name count  
aaaa 2000  
bbbb 1900  
cccc 900  
dddd 500  
eeee 100 

我想看看這對10從數列的中位數倍之內的行。

我試過df['count'].median()並得到了中位數。但不知道如何進一步進行。你能建議我如何使用熊貓/ numpy爲此。

預期輸出:

name count distance from median 

aaaa 2000 ***** 

我可以使用任何措施,因爲從中間的距離(距離值絕對偏差,位數等)。

+0

什麼是您預期的輸出? – Zero

+0

預期的輸出現在顯示在原始文章中 – Ssank

回答

11

如果你正在尋找如何計算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

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