python - 为什么密度直方图在 y 轴上显示有点奇怪的值?
问题描述
A 有一个带有值的数据框:
user value
1 0
2 1
3 4
4 2
5 1
当我试图用它绘制一个直方图时,density=True
它显示出非常奇怪的结果
df.plot(kind='hist', denisty=True)
我非常清楚第一个 bin 几乎涵盖了 100% 的值。这种情况下的密度应该大于0.8。但情节显示大约 0.04。
怎么会这样?也许我理解density
错了。顺便说一句,数据框中有大约 800 000 个值,以防万一。这是数据框的一个describe
:
count 795846.000000
mean 5.220350
std 20.600285
min -3.000000
25% 0.000000
50% 0.000000
75% 1.000000
max 247.000000
解决方案
如果您对概率而不是概率密度感兴趣,我认为您想使用weights
而不是density
. 看一下这个例子,看看有什么区别:
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)
如果您使用density
绘图的面积进行归一化,则相反,如果您使用weights
,则通过箱的高度之和进行归一化。
推荐阅读
- php - 使用 PHP curl 查询 mongodb
- c++ - 在 OpenGL 中使用光线投射进行鼠标拾取?
- webrtc - TURN 服务器中的“领域”是什么?
- javascript - 如何将 HTML 元素固定到他的初始位置?
- javascript - 在同一引用上有多个侦听器时从 Firebase 中删除侦听器
- kubectl - 将 EKS 令牌传递给其他 kubectl cli 命令
- amazon-web-services - JSON List of Dictionaries Querying in AWS Athena/Glue vs Quicksight
- javascript - 使用 React 高阶组件获取所有子组件 href
- java - 是什么导致 Mover 从屏幕上掉下来?
- sql - SQL 自动舍入变量