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

seaborn histplot含异常值绘制直方图导致Jupyter Notebook崩溃如何解决

问题原因

你的数据里-999和正常RESULT值(0.0004~0.0007区间)的极差过大,seaborn的histplot默认会根据全量数据的极值自动生成bins,会产生数量极多的空bins(覆盖-999到0.0007的整个区间),占用过量内存导致进程崩溃。

解决方法

方法1:指定直方图的统计范围(不显示异常值,不删除原始数据)

直接用histplot的binrange参数限制统计的数值范围,不会修改原始数据集,仅在绘图时忽略范围外的-999值:

import seaborn as sns
import matplotlib.pyplot as plt

sns.histplot(
    data = test_df_1, 
    x='RESULT',
    hue='Category', 
    edgecolor="none",
    binrange=(0, 0.001) # 根据你的正常数值区间灵活调整即可
)
plt.show()

方法2:保留异常值展示,手动设置bins

如果你需要把-999的异常值也展示在图中,手动设置bins区间避免生成过多无效bins:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 手动设置bins:第一个bin覆盖-999,后面的bin覆盖正常数值区间
custom_bins = [-1000, -998] + np.arange(0.0003, 0.0008, 0.00005).tolist()

sns.histplot(
    data = test_df_1, 
    x='RESULT',
    hue='Category', 
    edgecolor="none",
    bins=custom_bins
)
# 可自定义x轴刻度让展示更清晰
plt.xticks([-999, 0.0005], ['异常值(-999)', '正常值区间'])
plt.show()

额外优化建议

  • 绘制带极端值的直方图时,也可以选择对数轴来压缩极差避免内存问题:添加log_scale=True参数即可,注意你的正常值均大于0,-999为负数无法取对数,需要配合binrange参数使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:18:00