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

一个具有值的数据框:

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

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

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

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

我很清楚地知道,第一个bin几乎覆盖了所有值的100%。在这种情况下,密度应大于0.8。但是情节显示大约是0.04。

怎么会这样也许我弄错了density的含义。
顺便说一句,如果有关联的话,数据帧中大约有80万个值。这是数据框的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,则按箱的高度之和进行归一化。

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

Matplotlib'粗体'字体 - python

跟随this example:import numpy as np import matplotlib.pyplot as plt fig = plt.figure() for i, label in enumerate(('A', 'B', 'C', 'D')): ax = f…

Python Pandas:按分组分组,平均? - python

我有一个像这样的数据框:cluster org time 1 a 8 1 a 6 2 h 34 1 c 23 2 d 74 3 w 6 我想计算每个集群每个组织的平均时间。预期结果:cluster mean(time) 1 15 ((8+6)/2+23)/2 2 54 (74+34)/2 3 6 我不知道如何在熊猫中做到这一点,有人可以帮忙吗? 参考方案 如…

python :安装 python 后,如何导入 Pandas - python

我已经安装了 python 。现在,当我尝试跑步时import pandas as pd 我收到以下错误Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import pandasFile ImportError: …

Python Pandas:在多列上建立布尔索引 - python

尽管至少有关于如何在Python的pandas库中为DataFrame编制索引的two good教程,但我仍然无法在一个以上的列上找到一种优雅的SELECT编码方式。>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]}) >…

matplotlib:使加号变粗 - python

在Matplotlib中,我想绘制一个粗体加号(或一个十字),但是marker set中提供的那个太 thin 。即使增加它的大小,它也不会变厚。对于example:绘制红色加号的lines of code是:# Draw median marker. if plot_opts.get('bean_show_median', True):…