2013-06-24 185 views
17

我想根據它們的值對百分比桶中的數據進行分類。我的數據看起來像,在熊貓中創建百分比桶

a = pnd.DataFrame(index = ['a','b','c','d','e','f','g','h','i','j'], columns=['data']) 
a.data = np.random.randn(10) 
print a 
print '\nthese are ranked as shown' 
print a.rank() 

     data 
a -0.310188 
b -0.191582 
c 0.860467 
d -0.458017 
e 0.858653 
f -1.640166 
g -1.969908 
h 0.649781 
i 0.218000 
j 1.887577 

these are ranked as shown 
    data 
a  4 
b  5 
c  9 
d  3 
e  8 
f  2 
g  1 
h  7 
i  6 
j 10 

要排名這個數據,我使用排名函數。不過,我有興趣創造一個前20%的桶。在上面所示的例子中,這將是包含標籤[「C」,「J」]

desired result : ['c','j'] 

列表如何獲得所需的結果

回答

24
In [13]: df[df > df.quantile(0.8)].dropna() 
Out[13]: 
     data 
c 0.860467 
j 1.887577 

In [14]: list(df[df > df.quantile(0.8)].dropna().index) 
Out[14]: ['c', 'j']