在我的Dataframe
我有一列数字值,比方说 - 距离。我想找出哪一组距离(范围)具有最大的记录数(行数)。
做简单:
df.distance.count_values()
返回:
74 1
90 1
94 1
893 1
889 1
885 1
877 1
833 1
122 1
545 1
我想要实现的是直方图中的桶,所以我期待这样的输出:
900 4 #all values < 900 and > 850
100 3
150 1
550 1
850 1
到目前为止我已经想到的一种方法,但我不认为最好和最优的方法只是找到最大值和最小值,除以我的步骤(在这种情况下为50)然后进行循环检查所有值并分配给适当的组。
还有其他更好的方法吗?
答案 0 :(得分:1)
我建议您执行以下操作,假设您的值列标记为val
import numpy as np
df['bin'] = df['val'].apply(lambda x: 50*np.floor(x/50))
结果如下:
df.groupby('bin')['val'].count()
答案 1 :(得分:0)
感谢EdChum suggestion并基于this示例,我发现,最好的方式(至少对我而言)是做这样的事情:
import numpy as np
step = 50
#...
max_val = df.distance.max()
bins = list(range(0,int(np.ceil(max_val/step))*step+step,step))
clusters = pd.cut(df.distance,bins,labels=bins[1:])