热线电话:13121318867

登录
2019-02-25 阅读量: 884
如何设置pandas直方图的x值以匹配bin

假设我有一个数据框,如:

test = pandas.DataFrame([[0,1],[0,1],[0,2],[1,0],[1,0],[1,1],[1,2],[1,2]], columns=["A","B"])

因此,对于第一列中的值1,第二列中的值为0,1,2,频率不同。

假设我想为我看到0,1和2多少次创建直方图,所以我这样做:

ax = test[test["A"]==1]["B"].hist(bins=3)

在此输入图像描述

然而,我得到一个有三个箱子的图片,第一个从0到0.7,第二个从0.7到1.4,第三个从1.4到2,而我希望每个箱子以0,1和2为中心。我甚至尝试过使用ax.set_lim,但它没有用。

如何使我的直方图以我感兴趣的值为中心(所以一个bin从-0.5到0.5,一个从0.5到1.5,一个从1.5到2.5)?

PS我明白这个答案有一个解决方法,我想要一个使用pandas.hist的解决方案,如果可能的话。

解决办法:可以通过使用list / sequence for bins参数来完成此操作。

test = pd.DataFrame([[0,1],[0,1],[0,2],[1,0],[1,0],[1,1],[1,2],[1,2]], columns=["A","B"])

test

df = test[test["A"]==1]["B"]

df.hist(bins = np.arange(4)-0.5)

我使用4作为范围,因为这将为xtick标签产生[0,1,2,3],一个条形将放置在0-1,一个放置在[1,2],然后再放置一个[2-3] ,我可以通过从所有中减去0.5来将所有这些移动到中心对齐。

解决办法:我想我只是通过玩各种参数找到答案,虽然我不太清楚我是否理解范围是如何工作的。

test = pandas.DataFrame([[0,1],[0,1],[0,2],[1,0],[1,0],[1,1],[1,2],[1,2]], columns=["A","B"])

test[test["A"]==1]["B"]

ax = test[test["A"]==1]["B"].hist(bins=3, range=(-0.5,2.5))

ax.set_xlim((-0.5, 2.5))

这将产生以下直方图:

在此输入图像描述

如果有人想要添加另一个能够改进这个问题的答案,或者解释范围和set_xlim的组合是如何工作的,我会乐意接受别人的答案而不是我的答案。

在此输入图像描述

6.8407
0
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子