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

Python绘制DataFrame分类列计数图仅显示Parch列的问题排查

问题原因

  • 代码在循环中多次调用sns.countplot()时,默认会复用matplotlib的同一活动坐标轴,新绘制的图会直接覆盖上一次的绘图结果,因此循环执行完成后仅会保留最后一次绘制的Parch列计数图。

修复方案

方案1:为每个分类列生成独立画布

每次循环时新建空白画布,避免绘图内容互相覆盖:

for column in df.select_dtypes(include='category'):
    if df[column].nunique() > 1:
        plt.figure() # 新建独立画布
        sns.countplot(y=column, data=df)
        plt.title(f"{column} 计数分布") # 增加标题区分不同列
plt.show()

如果需要每绘制一张就立即展示,可以把plt.show()放到循环内部。

方案2:所有计数图排列在同一张画布的子图网格中

适合多图对比查看,避免弹出大量独立窗口:

# 先筛选符合条件的分类列
valid_cat_cols = [col for col in df.select_dtypes(include='category') if df[col].nunique() > 1]
col_count = len(valid_cat_cols)
# 计算子图行列数,按每行2个排列
row_count = (col_count + 1) // 2
plt.figure(figsize=(12, 5 * row_count))

for idx, col in enumerate(valid_cat_cols):
    plt.subplot(row_count, 2, idx + 1)
    sns.countplot(y=col, data=df)
    plt.title(f"{col} 计数分布")

plt.tight_layout() # 自动调整子图间距避免内容重叠
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:06