2013-06-24 3 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 %의 양동이를 만드는 것에 관심이있다. 위의 예에서,이 라벨을

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

[ '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']