2015-04-21 24 views
6

Ho un dataframe df:mediana di panda dataframe

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

vorrei guardare le righe che sono a meno di un fattore 10 dalla mediana della colonna conteggio.

Ho provato df['count'].median() e ho ottenuto la mediana. Ma non so come procedere ulteriormente. Puoi suggerire come usare panda/numpy per questo.

output previsto:

name count distance from median 

aaaa 2000 ***** 

posso utilizzare qualsiasi misura della distanza dalla mediana (deviazione assoluta dalla mediana, quantili ecc).

+0

Qual è la sua uscita prevista? – Zero

+0

L'output previsto viene ora mostrato nel post originale – Ssank

risposta

11

Se siete alla ricerca di come calcolare il 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

di colonna potrebbe anche essere calcolato usando statsmodels.robust.scale.mad, che può anche essere approvato una costante di normalizzazione c che in questo caso è solo 1.

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