2017-07-24 38 views
5

Ben sayısal değerlerle Veri Çerçevesi sütun varBinning kolon

df['percentage'].head() 
46.5 
44.2 
100.0 
42.12 

Ben bin sayıları gibi sütunu görmek istiyorum: bu kadar ile

bins = [0, 1, 5, 10, 25, 50, 100] 

alabilirim bin olarak sonuçlanabilir nasıl values count:

[0, 1] bin amount 
[1, 5] etc 
[5, 10] etc 
...... 

cevap

14

Sen pandas.cut kullanabilirsiniz:

bins = [0, 1, 5, 10, 25, 50, 100] 
df['binned'] = pd.cut(df['percentage'], bins) 
print (df) 
    percentage  binned 
0  46.50 (25, 50] 
1  44.20 (25, 50] 
2  100.00 (50, 100] 
3  42.12 (25, 50] 

bins = [0, 1, 5, 10, 25, 50, 100] 
labels = [1,2,3,4,5,6] 
df['binned'] = pd.cut(df['percentage'], bins=bins, labels=labels) 
print (df) 
    percentage binned 
0  46.50  5 
1  44.20  5 
2  100.00  6 
3  42.12  5 

Veya numpy.searchsorted:

bins = [0, 1, 5, 10, 25, 50, 100] 
df['binned'] = np.searchsorted(bins, df['percentage'].values) 
print (df) 
    percentage binned 
0  46.50  5 
1  44.20  5 
2  100.00  6 
3  42.12  5 

... sonra value_counts veya groupby ve agrega size:

s = pd.cut(df['percentage'], bins=bins).value_counts() 
print (s) 
(25, 50]  3 
(50, 100] 1 
(10, 25]  0 
(5, 10]  0 
(1, 5]  0 
(0, 1]  0 
Name: percentage, dtype: int64 
Varsayılan cut dönüş categorical By
s = df.groupby(pd.cut(df['percentage'], bins=bins)).size() 
print (s) 
percentage 
(0, 1]  0 
(1, 5]  0 
(5, 10]  0 
(10, 25]  0 
(25, 50]  3 
(50, 100] 1 
dtype: int64 

. Series.value_counts()Series.value_counts() gibi yöntemler, operations in categorical veride bazı kategoriler olmasa bile tüm kategorileri kullanacaktır.

İlgili konular