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

pandas绘制每日数值分布直方图时分箱过宽如何解决

问题说明

待处理的DataFrame结构如下,目标是绘制直方图查看每日数值分布,默认生成的直方图分箱过宽,无法清晰识别分布特征:

date        x1_count    x2_count    x3_count    x4_count    x5_count    x6_count
0   2022-04-01  1981        0           0           0           0           0
1   2022-04-02  1434        1202        1802        1202        1102        1902
2   2022-04-03  1768        1869        1869        1869        1969        1189
3   2022-04-04  1823        1310        1210        1110        1610        1710
...
29  2022-04-30  1833        1890        1810        1830        1834        1870

当前使用的代码:

df[['date','x1_count']].set_index(by='date').hist()
解决方法

分箱过宽是因为hist()方法默认采用自动分箱策略,直接通过bins参数调整分箱规则即可,另外原代码中set_index的参数写法有误,该方法不需要传by参数,直接传入列名即可。

  • 快速调整:直接指定分箱总数,传入整数即可,数值越大分箱粒度越细
# 示例设置20个分箱,可根据实际观察效果调整数值
df[['date','x1_count']].set_index('date').hist(bins=20, figsize=(10,6))
  • 精准控制分箱:传入列表手动定义每个分箱的边界,适合需要固定统计区间的场景
import numpy as np
# 示例:以100为步长,划分0到2100的统计区间
custom_bins = np.arange(0, 2100, 100)
df[['date','x1_count']].set_index('date').hist(bins=custom_bins, figsize=(10,6))

如果需要同时查看所有count字段的分布,可以批量筛选列后直接绘图,方法会自动生成排布好的子图:

# 筛选所有以_count结尾的列
count_columns = [c for c in df.columns if c.endswith('_count')]
# 2行3列排布子图,每个字段15个分箱
df[count_columns].hist(bins=15, figsize=(12,8), layout=(2,3))

补充提示:如果要对比每日不同指标的数值差异,直方图不适合这类时序对比场景,建议换用折线图或分组柱状图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:27:25