在 python 和 pandas.plot 中自定义直方图中 x 轴的值

customize the value of x axis in histogram in python with pandas.plot

我想在直方图的 x 轴上设置自定义值

我有一个 dataframeA,数据范围从 0 到 500

我想绘制自定义范围的分布图,如 0-20、20-40、40-60、60-80、80-100 和 100-500

我的代码是这样的

df['A'].plot(kind='hist', range=[0,500])

这是提供相等的射程,但不是我要找的。

您可以尝试np.select像这样将数据分组到所需的组中。

>>> data = np.random.randint(0,500, size=15)
>>> data
array([ 44, 271, 293, 158, 479, 303,  32,  79, 314, 240,  95, 412, 150,
       356, 376])
>>> np.select([data <= 20, data <= 40, data <= 60, data <= 80, data <= 100, data <= 500], [1,2,3,4,5,6], data)
array([3, 6, 6, 6, 6, 6, 2, 4, 6, 6, 5, 6, 6, 6, 6])

因此您需要像这样向数据框中添加一个新列

>>> df = pd.DataFrame(np.random.randint(0,500,size=1000), columns = list("A"))
>>> df.head(4)
     A
0  179
1  136
2  114
3  124
>>> df["groups"] = np.select([df.A <= 20, df.A <= 40, df.A <= 60, df.A <= 80, df.A <= 100, df.A <= 500], [1,2,3,4,5,6], df.A)
>>> df.head(4)
     A  groups
0  179       6
1  136       6
2  114       6
3  124       6

然后你可以像这样绘制直方图。

>>> df1 = pd.DataFrame({'count' : df.groups.value_counts(sort=False), 'names' : ["0-20", "20-40", "40-60", "60-80", "80-100", "100-500"]})
>>> df1.plot.bar(x='names', y='count')
<matplotlib.axes._subplots.AxesSubplot object at 0x0000000018CD2808>
>>> plt.show()