Python Jupyter中直方图绘制卡顿加载失败问题求助
解决Pandas绘制直方图时Jupyter内核冻结的问题
遇到这种小数据集反而卡住的情况,大概率是数据本身或者环境配置的小问题,我给你梳理几个排查和解决的方向:
1. 先排查Storage列的数据异常
小数据集卡住往往不是因为数据量,而是数据里藏着异常值、非数值内容或者缺失值,先做个基础检查:
# 查看列的数据类型 print(data['Storage'].dtype) # 检查是否存在非数值的条目(如果类型是object) print(data['Storage'].apply(type).unique()) # 看描述统计,有没有离谱的极端值 print(data['Storage'].describe()) # 统计缺失值数量 print(data['Storage'].isna().sum())
如果发现有非数值数据,先做清洗再尝试绘图:
# 转换为数值型,无法转换的标记为缺失值 data['Storage'] = pd.to_numeric(data['Storage'], errors='coerce') # 移除缺失值行 data_clean = data.dropna(subset=['Storage']) # 重新绘图 plt.hist(data_clean['Storage']) plt.ylabel('No of times') plt.show()
2. 调整Matplotlib的环境配置
你同时用了%pylab inline和%matplotlib inline,两者可能有冲突,而且有时候Jupyter的交互式渲染会出问题。试试:
- 重启Jupyter内核,只保留
%matplotlib inline这一行,删掉%pylab inline - 或者切换到非交互式后端,先保存图片再查看:
matplotlib.use('Agg') plt.hist(data['Storage'].dropna()) plt.ylabel('No of times') plt.savefig('storage_hist.png')
如果图片能正常保存,说明是交互式渲染的问题,后续只用%matplotlib inline即可。
3. 试试Pandas自带的直方图方法
Pandas封装的绘图方法有时候比直接调用Matplotlib更适配DataFrame,稳定性更好:
data['Storage'].dropna().plot.hist(bins=20) plt.ylabel('No of times') plt.show()
4. 过滤极端值再尝试
如果描述统计里发现有极大值,直方图会被迫生成超多区间,导致计算卡住。可以先过滤掉极端值:
# 保留99%分位数以内的数据,根据实际情况调整 q99 = data['Storage'].quantile(0.99) data_filtered = data[data['Storage'] <= q99] plt.hist(data_filtered['Storage']) plt.ylabel('No of times') plt.show()
5. 重启内核释放资源
有时候Jupyter内核运行久了会残留内存占用,哪怕小数据也会卡住。直接点击Kernel -> Restart,然后重新运行必要的代码(只导入需要的库,不要冗余代码)。
你可以从第一步开始排查,应该很快能找到问题所在~
内容的提问来源于stack exchange,提问作者Pymateur
相关产品推荐
相关产品推荐

