You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的pandas.plot自定义直方图X轴非等距区间?

如何为Pandas直方图设置自定义区间?

没问题,要实现你需要的自定义区间直方图其实很简单,我给你两种实用的方法,都能完美匹配你的需求:

方法一:先分箱再绘制柱状图(直观可控)

这种方法先把数据按你的自定义区间分组,再统计每组的数量绘制柱状图,好处是能清晰看到每个区间的具体计数,x轴直接显示区间标签。

步骤:

  1. 定义你的自定义区间边界
  2. 使用pd.cut()将数据分到对应的区间里
  3. 统计每个区间的数量并绘制柱状图

完整代码示例:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据(替换成你自己的DataFrame即可)
df = pd.DataFrame({'A': np.random.uniform(0, 500, 1000)})

# 定义你需要的自定义区间
custom_bins = [0, 20, 40, 60, 80, 100, 500]

# 对A列进行分箱,include_lowest=True确保0被包含在第一个区间里
df['A_binned'] = pd.cut(df['A'], bins=custom_bins, include_lowest=True)

# 绘制分布柱状图,sort_index保证区间按顺序显示
df['A_binned'].value_counts().sort_index().plot(
    kind='bar',
    title='Custom Interval Distribution',
    edgecolor='black',  # 添加边框区分每个柱子
    figsize=(8, 5)
)
plt.xlabel('Interval')
plt.ylabel('Number of Samples')
plt.show()

方法二:直接在直方图中指定bins参数(简洁高效)

如果你不想新增列,可以直接把自定义区间传给plot(kind='hist')的bins参数,一步生成符合要求的直方图。

完整代码示例:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据(替换成你自己的DataFrame即可)
df = pd.DataFrame({'A': np.random.uniform(0, 500, 1000)})

# 定义自定义区间
custom_bins = [0, 20, 40, 60, 80, 100, 500]

# 直接绘制自定义区间的直方图
df['A'].plot(
    kind='hist',
    bins=custom_bins,
    edgecolor='black',  # 添加边框区分区间
    title='Custom Interval Histogram',
    figsize=(8, 5)
)
plt.xlabel('Value of Column A')
plt.ylabel('Count')
plt.show()

注意事项:

  • include_lowest=True:在方法一中必须加上这个参数,因为pd.cut()默认是左开右闭区间,不加的话等于0的数据会被分到NaN里,无法统计。
  • edgecolor='black':添加这个参数可以让每个区间的边界更清晰,避免柱子连在一起分不清区间。

内容的提问来源于stack exchange,提问作者ggupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:57:24