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

如何按轴1分组绘制箱线图?基于DataFrame行的箱线图实现求助

解决方案:按每行(Meter)绘制箱线图

你现在的代码是按列(每个availability指标)来绘制箱线图的,要实现按每行(每个meter)展示三个availability值的分布,只需要调整数据融合的方式,同时保留meter的标识即可,完全不需要修改原DataFrame结构。

以下是修正后的可运行代码:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Windows路径建议用原始字符串避免转义问题
file = r'D:\test_box_plot.csv'
# 读取数据时保留meters列(作为每个meter的唯一标识)和三个availability列
df = pd.read_csv(file, sep=";", usecols=['meters', 'availability1','availability2','availability3'])

# 融合数据:以meters为分组基准,将三个availability列转为统一的数值列
melted_df = pd.melt(df, id_vars='meters', var_name='availability_type', value_name='availability_value')

# 绘制箱线图:x轴对应meter数值,y轴对应availability的取值
sns.boxplot(x='meters', y='availability_value', data=melted_df)
plt.xlabel('Meter')
plt.ylabel('Availability')
plt.title('Availability Distribution per Meter')
plt.show()

关键调整说明:

  • 保留分组标识:读取数据时加入meters列,确保我们能区分每个数据点属于哪个meter。
  • 定向融合数据:pd.melt的id_vars参数指定meters作为分组依据,这样每个meter会对应3行数据(分别对应三个availability指标),刚好适配箱线图按分组展示分布的需求。
  • 适配箱线图逻辑:x轴设为meters,y轴设为融合后的availability_value,这样x轴的每个刻度(0、50、100等)就对应一个meter的箱线图,直观展示该行三个availability值的范围、中位数等统计信息。

如果你更倾向用id列作为meter的标识,只需要把usecols里的meters换成id,再同步修改melt和boxplot中的参数即可。

内容的提问来源于stack exchange,提问作者Kateryna Lubyk - Slava Ukraini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:00:45