我有一个大型数据框:
peak.count purity.score material
0 10.0 0.134814 ADB
1 10.0 0.134814 ADB
2 17.0 0.116754 ADB
3 17.0 0.116754 ADB
4 17.0 0.102921 ADB
... ... ... ...
1269 14.0 0.166039 SSA
1270 14.0 0.166039 SSA
1271 14.0 0.166039 SSA
1272 12.0 0.169396 SSA
1273 12.0 0.169396 SSA
1274 12.0 0.169396 SSA
我很好奇将pure.sscore分组到一个范围,然后计算范围内的那些值。例如,如果我的15个值介于0.1和0.2之间,我希望输出在1处反映15。我尝试过将value_counts与numpy范围结合使用,但不计算组内的值:
首先我这样做:s = pd.Series(df['purity.score'])
pd.value_counts(s).reindex(np.arange(0,1,0.1)).fillna(0)
0.0 362.0
0.1 0.0
0.2 0.0
0.3 0.0
0.4 0.0
0.5 0.0
0.6 0.0
0.7 0.0
0.8 0.0
0.9 0.0
如何对这些值进行分组?注意我希望使用此表来提供API以呈现javascript直方图,但不希望使用Bokeh或Matplotlib。我需要访问该表。
答案 0 :(得分:2)
您可以使用cut
功能执行此操作:
df.groupby(pd.cut(df['purity.score'], bins=10)).count()
此处,cut
将df['purity.score']
划分为其选择的10个bin,但您可以通过传递数组来定义bin边界。
答案 1 :(得分:0)
您最好的选择可能是groupby功能。要按大小0.1的范围进行分组,您可以执行此操作(数据框在此处称为setNames(c(somePalette['Yellow'],somePalette['Blue'],somePalette['Purple']),c('setosa','versicolor','virginica'));
## setosa versicolor virginica
## "#F6B436" "#4D86A0" "#672767"
)
df
这里的参数是purity.score列,乘以10,然后转换为int - 映射[0.1-0.2) - >的操作。 1,[0.2,0.3) - > 2等不是很漂亮,但它有效。