CPU|Pandas 对数值进行分箱操作的4种方法总结对比( 二 )


qcut参数:
x:要分箱的输入数组 。 必须是一维的 。
q:分位数 。10 表示十分位数 , 4 表示四分位数等 。 也可以是交替排列的分位数 , 例如[0 .25 .5 .75 1.
四分位数 。
labels:指定 bin 的标签 。 必须与生成的 bin 长度相同 。
retbins: (bool) 是否返回 (bins labels) 。
df['grade'
cut_bin = pd.qcut(df['score'
q = 3 labels = ['C' 'B' 'A'
retbins = True)
df.head()

如果 retbins 设置为 True 则会返回 bin 边界 。
print (cut_bin)
>> [  0.  36.  68. 100.

分数间隔如下:

  • C: [0 36

  • B: (36 68

  • A: (68 100

使用 .value_counts() 检查每个等级有多少学生 。理想情况下 , 每个箱应该有大约 333 名学生 。
df.grade.value_counts()

4、value_counts虽然 pandas .value_counts 通常用于计算系列中唯一值的数量 , 但它也可用于使用 bins 参数 [4
将值分组到半开箱中 。
df['score'
.value_counts(bins = 3 sort = False)
默认情况下 ,.value_counts 按值的降序对返回的系列进行排序 。将 sort 设置为 False 以按其索引的升序对系列进行排序 。

series 索引是指每个 bin 的区间范围 , 其中方括号 [ 和圆括号 ) 分别表示边界值是包含的和不包含的 。返回series 的值表示每个 bin 中有多少条记录 。
与 .qcut 不同 , 每个 bin 中的记录数不一定相同(大约) 。.value_counts 不会将相同数量的记录分配到相同的类别中 , 而是根据最高和最低分数将分数范围分成 3 个相等的部分 。分数的最小值为 0 , 最大值为 100 , 因此这 3 个部分中的每一个都大约在 33.33 范围内 。这也解释了为什么 bin 的边界是 33.33 的倍数 。
我们还可以通过传入边界列表来定义 bin 边界 。
df['score'
.value_counts(bins = [05080100
sort = False)

这给了我们与示例 1 和 2 相同的结果 。
总结在本文中 , 介绍了如何使用 .between、.cut、.qcut 和 .value_counts 对连续值进行分箱 。 这里是本文的源代码:
https://avoid.overfit.cn/post/dc11c84491e841dea928d652f0f93005
【CPU|Pandas 对数值进行分箱操作的4种方法总结对比】作者:Edwin Tan