Python matplotlib直方图和实际频率不';不匹配

Python matplotlib直方图和实际频率不';不匹配,python,matplotlib,Python,Matplotlib,我有一个名为“年龄”系列的熊猫数据框。在该数据框中,我附加了另一个名为“年龄组”的系列,如下所示: bins = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65] df['Age Group'] = pd.cut(df['Age'], bins=bins) 现在,我已经验证了年龄组,例如(40,45]和(45,50)]应该分别呈现5和10的频率。但是,pyplot直方图呈现了错误的频率(分别为2和13…下面三个和上面三个)。我确定这是

我有一个名为“年龄”系列的熊猫数据框。在该数据框中,我附加了另一个名为“年龄组”的系列,如下所示:

bins = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65]
df['Age Group'] = pd.cut(df['Age'], bins=bins)
现在,我已经验证了年龄组,例如(40,45]和(45,50)]应该分别呈现5和10的频率。但是,pyplot直方图呈现了错误的频率(分别为2和13…下面三个和上面三个)。我确定这是一个左/右垃圾箱边界问题,但我不确定如何解决。有人能帮忙吗?我的可视化代码如下

plt.hist(df['Age'], bins=bins, ec='gray', alpha=0.3)
plt.xlabel('Age')
plt.ylabel('Count')
plt.show()

plt.hist
使用
[a,b)
pd.cut
使用
(a,b]
,将
right=False
传递给
pd.cut
将给出与
plt.hist
相同的答案。谢谢,但是柱状图给出了不准确的表示。是否有方法确保柱状图准确?您可以执行
bin=np.array(bin)+0.01
操作。您还可以使用
pd.cut(df['Age')查看箱子,bins=bins)。value_counts().plot.bar()
…有效!谢谢!你知道为什么需要添加0.01吗?这很直观…边界条件。因为
[40.01,45.01]==(40,45]=={41,42,43,44,45}
在整数方面是有效的。当然,如果
Age
不是整数,它就不起作用:-)。