首页 > 解决方案 > 为什么pandas的概率密度值太大

问题描述

我正在使用熊猫来绘制概率密度,我的数据描述如下:

count    636149.000000
mean          3.040828
std           3.752975
min           0.000000
25%           0.050000
50%           1.050000
75%           5.050000
max          59.200000

我的代码如下:

df['data'].hist(bins=1000,density=1)
plt.show()

结果如图所示。

在此处输入图像描述

我想知道为什么我的值已经达到了5,并且通常不应该小于1?我应该如何纠正它?

标签: pythonpandasmatplotlib

解决方案


正如其中一条评论所指出的,值不一定需要最大为 1,但所有 bin 的面积应该为 1。

正如您在文档中所读到的:

密度:布尔值,可选

如果为 True,则返回元组的第一个元素将是归一化以形成概率密度的计数,即直方图下的面积(或积分)总和为 1。这是通过将计数除以观察次数来实现的bin 宽度,而不是除以观察总数。如果stacked 也是True,则直方图的总和归一化为1。

1 bin 的面积(显然)是频率乘以 bin 宽度。由于您有 1000 个垃圾箱和一系列[0,59.2]. 您的 bin 宽度为0.0592,因此每个 bin 的区域非常小,因此将所有 1000 个“小”区域相加得出曲线下的面积为 1。

你可以用np.histogram.


推荐阅读