我有一个包含数值的数据框列:
df['percentage'].head()
46.5
44.2
100.0
42.12
我希望将列显示为bin counts:
bins = [0, 1, 5, 10, 25, 50, 100]
如何获得具有 * 值计数 * 的柱形结果?
[0, 1] bin amount
[1, 5] etc
[5, 10] etc
...
我有一个包含数值的数据框列:
df['percentage'].head()
46.5
44.2
100.0
42.12
我希望将列显示为bin counts:
bins = [0, 1, 5, 10, 25, 50, 100]
如何获得具有 * 值计数 * 的柱形结果?
[0, 1] bin amount
[1, 5] etc
[5, 10] etc
...
4条答案
按热度按时间c90pui9n1#
您可以使用
pandas.cut
:或者
numpy.searchsorted
:......然后是
value_counts
或groupby
,并聚合size
:一个三个三个一个
默认情况下,
cut
返回categorical
。Series
方法(如Series.value_counts()
)将使用所有类别,即使某些类别不存在于数据中,也是如此。8gsdolmq2#
使用Numba模块加速。
在大数据集(大于500k)上,
pd.cut
对数据进行分箱可能会非常慢。我用Numba编写了自己的函数,使用了即时编译,速度大约快了 * 6倍 *:
可选:您也可以将其作为字符串Map到bin:
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个
puruo6ea3#
我们也可以使用
np.select
:输出:
7eumitmz4#
使用Numpy的方便快捷版本
np.digitize是一个方便快捷的选项:
退货