Pyplot hist直方图无显示求助:采样均值分布无法渲染
问题原因与解决方法
问题根源
你用sample(frac=1)做的是无放回全量采样——本质只是把数据集打乱顺序,计算出的均值和原数据集的均值完全一致。这导致ini_sample数组里的500个值全部相同,直方图自然无法渲染出柱子(所有数据点都集中在同一个位置,默认分箱逻辑识别不到分布差异)。
解决方案
方案1:改用有放回的Bootstrap抽样(推荐)
把抽样方式改成有放回,这样每次抽样的样本会有重复,均值就会产生波动,直方图就能正常显示分布:
sns.set() import numpy as np import matplotlib.pyplot as plt ini_sample = np.empty(500) for i in range(500): # 添加replace=True开启有放回抽样 ini_sample[i] = ini_data['revenue'].sample(frac=1, replace=True).mean() plt.hist(ini_sample) plt.axvline(x=ini_data['revenue'].mean(), color='r') # 加颜色区分垂直线 plt.show()
方案2:手动指定分箱(仅用于验证,无实际统计意义)
如果非要保留无放回全采样(这种抽样本身没有统计价值),可以手动设置分箱范围,把唯一的均值包含进去:
plt.hist(ini_sample, bins=[86.8, 87, 87.2]) plt.axvline(x=ini_data['revenue'].mean()) plt.show()
内容的提问来源于stack exchange,提问作者L'Ri Talent
相关产品推荐
相关产品推荐

