2017-07-24 217 views
5

我有数值数据框架柱与蟒蛇大熊猫分级列

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

我想看到的列箱数:

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

我如何能得到导致以bin与它的values count

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

回答

14

您可以使用​​:

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 

或者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 

...然后value_countsgroupby和聚集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 

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 

默认情况下cut回报categorical

SeriesSeries.value_counts()这样的方法将使用所有类别,即使某些类别不存在于数据中,operations in categorical