2017-07-24 269 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