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

如何通过循环遍历Pandas DataFrame,使用Seaborn批量绘制箱线图

批量绘制DataFrame所有列的Seaborn箱线图

太懂这种重复写代码的痛苦了!手动给每一列写箱线图代码不仅低效,还容易漏列或者打错列名。用循环遍历DataFrame的列就能完美解决这个问题,我给你两种实用的方案:

方案1:逐列单独生成箱线图

这个方案会为每一列单独创建一个绘图窗口,适合需要单独查看每列细节的场景:

import seaborn as sns
import matplotlib.pyplot as plt

# 假设你的数据集存储在box_df_1中
for column in box_df_1.columns:
    # 每次循环创建新的绘图画布
    plt.figure(figsize=(6, 4))
    # 绘制当前列的箱线图
    sns.boxplot(y=column, data=box_df_1)
    # 添加标题,明确当前图对应的列
    plt.title(f'Boxplot for {column}', fontsize=12)
    # 显示图像
    plt.show()

方案2:将所有箱线图排列在同一张画布上

这个方案会把所有列的箱线图排列成网格状,非常适合对比查看多列的异常值分布:

import seaborn as sns
import matplotlib.pyplot as plt

# 获取DataFrame的列数
total_columns = box_df_1.shape[1]
# 设置子图的列数(这里选3列,你可以根据需求调整)
cols_per_row = 3
# 计算需要的行数
rows = (total_columns + cols_per_row - 1) // cols_per_row

# 创建画布和子图网格
fig, axes = plt.subplots(rows, cols_per_row, figsize=(15, rows*4))
# 将二维的子图数组转为一维,方便循环遍历
axes = axes.flatten()

# 遍历每一列,绘制箱线图
for idx, column in enumerate(box_df_1.columns):
    sns.boxplot(y=column, data=box_df_1, ax=axes[idx])
    axes[idx].set_title(f'{column}', fontsize=10)
    axes[idx].set_ylabel('Value')

# 如果列数不能被cols_per_row整除,隐藏多余的空图
for empty_ax in axes[idx+1:]:
    empty_ax.axis('off')

# 自动调整子图间距,避免标题和标签重叠
plt.tight_layout()
plt.show()

代码说明

  • 两种方案都通过box_df_1.columns获取所有列名,实现了完全自动化的批量绘图,不管你的DataFrame有多少列,代码都能适配。
  • 方案2中的cols_per_row可以根据你的需求调整,比如列数多的话可以设为4,让布局更紧凑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:02:39