我正在为可能包含多个NaN值的大型数据集创建直方图。但是,我发现当我不从数据中删除NaN时,数据被错误地分箱。如果我运行以下代码:
nan_list = [1, 1, 2, np.nan, 2, 3, 3]
h = plt.hist(nan_list, bins=range(5))
print h
我得到以下直方图:
(array([0, 2, 1, 0]), array([0, 1, 2, 3, 4]), <a list of 4 Patch objects>)
现在,这似乎是合理的,因为它只是在第一个NaN之后跳过了所有内容。但是,如果我将另一个NaN添加到列表中,那么它将变为:
[1, 1, 2, np.nan, 2, 3, np.nan, 3]
我得到以下结果:
(array([0, 2, 3, 1]), array([0, 1, 2, 3, 4]), <a list of 4 Patch objects>)
在这种情况下,它会在[2,3] bin中放置三个项目,即使我在该范围内只有两个值。它也只在[3,4]范围内放置一个值。这个奇怪的分箱可能是什么原因?
顺便说一句,我知道我可以从数据中删除NaN以获得正确的直方图。我只是想知道为什么会发生这种奇怪的行为。