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

如何使用Pandas为整个矩阵生成单个箱线图

如何使用Pandas为整个矩阵生成单个箱线图

嗨,我来帮你搞定这个问题!你当前的代码会生成4个箱线图,是因为Pandas的boxplot()默认会对DataFrame的每一列单独统计并绘图。要给整个矩阵生成单个箱线图,关键是把所有数据合并成一个一维的数据集,再进行绘图操作,这里有两种简单的实现方式:

方法一:将数据展平为一维序列后绘图

把DataFrame里的所有数据通过flatten()展平成一维数组,再转成Pandas Series,之后调用boxplot()就会生成单个箱线图了:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt  # 导入matplotlib用于显示图像

# 生成随机矩阵数据
data = np.random.random(size=(4,4))
df = pd.DataFrame(data)

# 展平所有数据为一维序列
all_data = df.values.flatten()
# 基于一维序列绘制单个箱线图
pd.Series(all_data).boxplot()

plt.show()  # 手动显示图像,有些环境可能不需要,但加上更保险

方法二:将宽格式数据转成长格式后绘图

用Pandas的melt()方法把原来的宽格式DataFrame转成长格式,指定统一的数值列,再针对这个列绘制箱线图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = np.random.random(size=(4,4))
df = pd.DataFrame(data)

# 转换为长格式数据
long_format_df = df.melt(value_name='all_values')
# 仅针对all_values列绘制箱线图
long_format_df.boxplot(column='all_values')

plt.show()

简单说下原理:你原来的df.boxplot()会自动按列分组,每个列对应一个箱线图。而上面两种方法都把所有数据归到了同一个分组下,这样Pandas就只会生成一个包含所有数据分布的箱线图啦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:08:07