A 有一个包含值的数据框:
user value
1 0
2 1
3 4
4 2
5 1
当我尝试用密度=True
绘制直方图时,它显示了非常奇怪的结果
df.plot(kind='hist', denisty=True)
我确切地知道第一个 bin 几乎覆盖了 100% 的值。这种情况下的密度应该大于0.8。但绘图显示大约为 0.04。
怎么会发生这种事?也许我对密度的理解错误。
顺便说一句,数据框中大约有 800 000 个值,以防相关。这是数据帧的描述
:
count 795846.000000
mean 5.220350
std 20.600285
min -3.000000
25% 0.000000
50% 0.000000
75% 1.000000
max 247.000000
最佳答案
如果您对概率而不是概率密度感兴趣,我认为您想使用权重
而不是密度
。看一下这个例子,看看有什么不同:
df = pd.DataFrame({'x':np.random.normal(loc=5, scale=10, size=80000)})
fig, (ax0, ax1) = plt.subplots(1, 2, figsize=(12, 4))
df.plot(kind='hist', density=True, bins=np.linspace(-100, 100, 30), ax=ax0)
df.plot(kind='hist', bins=np.linspace(-100, 100, 30), weights=np.ones(len(df))/len(df), ax=ax1)
如果您使用密度
,则通过图的面积进行标准化,相反,如果您使用权重
,则通过箱的高度总和进行标准化。
关于python - 为什么密度直方图在 y 轴上显示有点奇怪的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59074280/