python - 为什么密度直方图在 y 轴上显示有点奇怪的值?

标签 python pandas matplotlib

A 有一个包含值的数据框:

user value
1    0
2    1
3    4
4    2
5    1

当我尝试用密度=True绘制直方图时,它显示了非常奇怪的结果

df.plot(kind='hist', denisty=True)

enter image description here

我确切地知道第一个 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)

如果您使用密度,则通过图的面积进行标准化,相反,如果您使用权重,则通过箱的高度总和进行标准化。

enter image description here

关于python - 为什么密度直方图在 y 轴上显示有点奇怪的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59074280/

相关文章:

python - 如何按顺序比较列表中的项目?

python - 在字典中对互斥 ID 进行分组

python - NLTK NaiveBayesClassifier 输入格式

python - 为什么我的系统运行的是 python2,尽管我竭尽全力运行 python3?

python - simple_salesforce python 中的父子关系查询,从有序字典中提取

python - Matplotlib:用 A、B、C 注释图中的子图

python - 在 matplotlib 中同时更改线宽和颜色

python - Cartopy:轴标签 - 解决方法

python - 将 PIL/PILLOW 图像复制到 Windows 剪贴板

python - 在 PySpark 中读取文件并将其转换为 Pandas Dataframe 时如何将第一行作为标题