Python plt.hist()传入数据集最大值参数的分箱表现差异疑问
问题结论
你提到的现象确实是分箱数量设置差异导致的,判断成立。
原理说明
plt.hist() 方法的第二个参数为bins,用于控制分箱规则:
- 默认调用
plt.hist(small_data["BEDS"])会触发matplotlib的自动分箱策略(3.2及以上版本默认使用Sturges算法定分箱数),最终生成的分箱数较少,分箱宽度通常为2,因此会把卧室数为0、1的样本统一合并到0-2的分箱中展示。 - 当你传入
small_data["BEDS"].max()作为bins参数时,相当于手动指定分箱数量等于数据集内卧室数的最大值。对于卧室数这种离散正整数特征,此时分箱宽度会自动适配为1,每个整数区间(0-1、1-2、……、N-1~N,N为卧室数最大值)都会作为独立分箱存在,因此0-1区间的样本会被单独统计展示。
优化建议
如果你的目标是单独统计每个卧室数对应的样本量,更稳妥的写法是明确指定分箱边界对齐整数,避免浮点数边界带来的统计偏差:
plt.hist(small_data["BEDS"], bins=range(int(small_data["BEDS"].min()), int(small_data["BEDS"].max()) + 2))
内容的提问来源于stack exchange,提问作者Franch Dressing
相关产品推荐
相关产品推荐

