数据框绘制直方图边界箱

问题描述 投票:0回答:1
bins  = [x for x in range(-10, 11)]
df['val'].plot(kind='hist', bins=bins)

我想将所有超出范围的值 >10 或 <-10 into the boundary right/left bin but not change their widths. btw suppose the max/min value of

df
设为动态。

我可以构建两个边界箱,如

[-9999, 0]
[0, 9999]
,但它们的宽度会非常大。另一种方法是通过
裁剪
df['val']

的数据
np.clip(df['val'], a_max= bins[-1], a_min=bins[0])

有没有一种简单的方法可以在不改变的情况下实现我的目标

df

python pandas plot
1个回答
0
投票

如果你想要等宽的条形代表不同宽度的间隔,你需要在条形上放置间隔标签,否则会不清楚。

这是一个带有截止值的示例:

import numpy as np
import pandas as pd

np.random.seed(42)
df = pd.DataFrame({'val': 10 * np.random.randn(1000)})

bins = list(range(-10,11))
df.plot.hist(bins=bins)

enter image description here

现在,要添加超出范围的条形,我们使用

cut
来计算间隔,并使用
value_counts
来计算值:

pd.cut(df.val, [-9999] + bins + [9999]).value_counts(sort=False).plot.bar(width=1)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.