2014-10-21 12 views
5

Bir tüccar tarafından yatırılan miktarı temsil eden Investment içeren bir sütuna sahip bir veri çerçevem ​​var. Veri çerçevesinde 2 yeni sütun oluşturmak istiyorum; Biri bir decile rütbesi ve diğeri Investment büyüklüğüne dayalı bir beşli rütbesi veriyor. En büyük yatırımları ve en küçükleri temsil eden 10'u temsil etmek istiyorum. Güzelce, en büyük yatırımları ve en küçükleri temsil eden 5'i temsil etmek istiyorum.Python, Pandalar kullanarak boyutu temel alan başka bir değişkeni sıralamak için Decile ve Quintile sütunları nasıl oluşturulur?

Panda'larda yeniyim, bunu kolayca yapabileceğim bir yol var mı? Teşekkürler!

cevap

8

aradığınız işlevselliği O küçük sayı ile en büyük persentili etiketlemek için standart olmayan var pandas.qcuthttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.qcut.html

In [51]: import numpy as np 

In [52]: import pandas as pd 

In [53]: investment_df = pd.DataFrame(np.arange(10), columns=['investment']) 

In [54]: investment_df['decile'] = pd.qcut(investment_df['investment'], 10, labels=False) 

In [55]: investment_df['quintile'] = pd.qcut(investment_df['investment'], 5, labels=False) 

In [56]: investment_df 
Out[56]: 
    investment decile quintile 
0   0  0   0 
1   1  1   0 
2   2  2   1 
3   3  3   1 
4   4  4   2 
5   5  5   2 
6   6  6   3 
7   7  7   3 
8   8  8   4 
9   9  9   4 

içinde ama ikincisi @Dan

In [60]: investment_df['quintile'] = pd.qcut(investment_df['investment'], 5, labels=np.arange(5, 0, -1)) 

In [61]: investment_df['decile'] = pd.qcut(investment_df['investment'], 10, labels=np.arange(10, 0, -1)) 

In [62]: investment_df 
Out[62]: 
    investment decile quintile 
0   0  10  5 
1   1  9  5 
2   2  8  4 
3   3  7  4 
4   4  6  3 
5   5  5  3 
6   6  4  2 
7   7  3  2 
8   8  2  1 
9   9  1  1 
+0

üyeye yapabilirsiniz aradığım şeydi ve iyi çalıştı! Qcut aracı üzerinde daha fazla okuyacağım, gerçekten kullanışlı! Tekrar teşekkürler :) – roland