1

对 python 和 pandas 来说相对较新。我有一个数据框:df说 2 列(比如01)和 n 行。我想绘制两列中表示的两个时间序列数据的直方图。我还需要访问直方图中每个 bin 的确切计数,以便以后进行操作。

b_counts, b_bins = np.histogram(df[0], bins = 10)
a_counts, a_bins = np.histogram(df[1], bins = 10)

plt.bar(b_bins, b_counts)
plt.pbar(a_bins, a_counts)

但是我得到一个不兼容大小的错误,即 bins 数组的长度是 11,而 counts 数组的长度是 10。两个问题:1)为什么 numpy 中的直方图有一个额外的 bin?即,11 个而不是 10 个垃圾箱 2) 假设上面的问题 1) 可以解决,这是解决此问题的最佳/最简单方法吗?

4

1 回答 1

2

我会直接使用 Pyplot 内置的直方图函数:

b_counts, b_bins, _ = plt.hist(df[0], bins = 10)
a_counts, a_bins, _ = plt.hist(df[1], bins = 10)

根据numpy.histogram的文档(如果您向下滚动到足以阅读Returns参数定义中的部分):

hist : array直方图的值。有关可能语义的描述,请参见密度和权重。

bin_edges: dtype数组 float返回 bin 边缘(length(hist)+1)

很清楚,不是吗?

于 2016-09-22T05:14:57.887 回答