python - 将数据分箱到相同大小的箱中
问题描述
我想将值分箱到同样大小的箱中。假设我们有以下 Pandas 系列:
ex = pd.Series([1,2,3,4,5,6,7,888,999])
现在,我想创建三个垃圾箱:
pd.cut(ex, 3, labels=False)
这会产生三个 bin,并且为系列的每个元素分配以下 bin 编号:
[0,0,0,0,0,0,0,2,2]
现在,我想让 bin 边界使每个 bin 具有相同数量的元素(即 3),并且将数据点分配给 bin 应该如下所示:
[0,0,0,1,1,1,2,2,2]
我怎样才能实现这一点?并且应该为平局做些什么(即当数据点的数量不能被箱的数量整除时)?
解决方案
利用 -
pd.qcut(ex, 3, labels=False)
输出
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
用于retbins=True
获取垃圾箱。
pd.qcut(ex, 3, labels=False, retbins=True)
输出
(0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
dtype: int64,
array([ 1. , 3.66666667, 6.33333333, 999. ]))
推荐阅读
- visual-studio - 从 msbuild 控制台构建切换到 IDE(第一次)时,VS 2017 会冗余构建代码
- php - 如何从 laravel 中的选择中使用 pluck() 选择多个列
- typescript - 我可以从具有类型谓词的函数中返回“void”吗?
- scim - 添加自定义属性的正确 SCIM 语法是什么
- python - 将初始 json 数据加载到 flask-sqlalchemy 项目时出现问题:sqlite3.InterfaceError: Error binding parameter 0 - 可能是不受支持的类型
- gradle - 让gradle在每次设置时执行一个finalizedBy任务(多次)
- php - 使用 eloquent 从多对多关系中获取数据
- javascript - 使用 marker.remove() 清除并再次添加标记
- html - 带有 2 个图像和一个分隔符的 Div
- javascript - 自动播放随机 youtube 视频并非每次都有效