2015-04-21 17 views
6

mam DataFrame df:mediana pandy dataframe

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

chciałbym spojrzeć na wiersze, które mają w ciągu 10-krotnie od środkowej kolumny liczy.

Próbowałem df['count'].median() i otrzymałem medianę. Ale nie wiem, jak iść dalej. Czy możesz zasugerować, w jaki sposób mogę użyć pand/numpy do tego.

oczekiwany wynik:

name count distance from median 

aaaa 2000 ***** 

mogę użyć dowolnego środka jako odległość od mediany (bezwzględną odchylenia od mediany, kwantyle itd.).

+0

Jaki jest Twój oczekiwany wynik? – Zero

+0

Oczekiwany wynik jest teraz wyświetlany w oryginalnym wpisie – Ssank

Odpowiedz

11

Jeśli szukasz sposobu obliczania 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

dla Kolumna może być także obliczony przy użyciu statsmodels.robust.scale.mad, które mogą być również przekazywane normalizacji stałą c, która w tym przypadku jest tylko 1.

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