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

拆分数据绘制Python箱线图时变量赋值报错,请求排查代码问题

问题排查与修复方案

代码中的核心问题

  • 重复打开文件:多次调用with open读取同一文件,冗余且低效,一次读取所有行即可完成操作
  • 未处理原始字符串数据:readlines()返回的每一行是包含换行符的完整字符串,你没有将其分割为单个数值,也没有转换为float/int类型——plt.boxplot只接受数值型数组,无法解析字符串
  • 列表结构错误:直接把整行字符串放入列表(比如value1 = [mental_disorders]),得到的是包含单个字符串元素的列表,不是箱线图需要的数值序列

修正后的代码

假设你的data2.txt格式为:每行是用空格(或逗号)分隔的数值,例如:

12 15 18 20 16
8 10 9 11 12

修正代码如下:

import matplotlib.pyplot as plt

# 一次读取所有行,避免重复打开文件
with open('data2.txt', 'r') as f2:
    lines = f2.readlines()

# 处理第一行:去除换行符,分割为字符串列表,再转为float数值
mental_disorders = [float(num.strip()) for num in lines[0].split()]
# 处理第二行:同理转换
healthy_persons = [float(num.strip()) for num in lines[1].split()]

# 直接传入数值列表即可
box_plot_data = [mental_disorders, healthy_persons]
plt.boxplot(box_plot_data, patch_artist=True, labels=['Mental', 'Healthy'])
plt.show()

额外说明

如果你的数据是用逗号分隔,把split()改成split(',')即可;如果存在空行或多余空格,strip()会帮你清理掉无效字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:50:25