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

Pandas与Matplotlib新手求助:绘制数组行/列均值关系图出错

问题排查与修正方案

你的代码存在几个关键问题,导致图表不符合预期:

核心问题分析

  1. 错误获取列数:cols = df.count(axis=1)统计的是每行的非空值数量,不是数组的固定列数。数组的列数是df.shape[1],每行的列数都是这个固定值。
  2. 数据长度不匹配:列均值(col_mean)的长度等于数组列数,行均值(row_mean)的长度等于数组行数,强行合并会导致大量缺失值,无法正常绘图。
  3. 索引设置错误:用每行非空值数作为DataFrame索引,完全不符合“X轴表示数组列数”的需求。
  4. 无用代码:col_mean.tolist()和row_mean.tolist()仅转换为列表但未赋值,对后续逻辑无作用。

修正后的代码

import pandas as pd
import matplotlib.pyplot as plt

# 替换成你的目标数组
arr = [[1,2,3,4], [5,6,7,8], [9,10,11,12]]

df = pd.DataFrame(arr)

# 计算列均值:X轴为列序号(1到总列数)
total_cols = df.shape[1]
col_mean = df.mean(axis=0)
col_mean.index = col_mean.index + 1  # 将索引从0起始改为1起始,更符合列数直觉

# 计算行均值:所有行均值的X轴固定为数组总列数
row_mean = pd.Series(
    df.mean(axis=1).values,
    index=[total_cols] * len(df.mean(axis=1))
)

# 合并数据并绘图
dados = pd.DataFrame({
    'Colunas': col_mean,
    'Linhas': row_mean
})

lines = dados.plot.line(marker='o', figsize=(8,5))
plt.xlabel('数组的列数')
plt.ylabel('均值')
plt.title('行均值与列均值关系图')
plt.grid(True)
plt.show()

代码说明

  • 列均值曲线:X轴为列的序号(1到总列数),Y轴为对应列的均值,展示各列均值的变化趋势。
  • 行均值曲线:所有行均值的X轴固定为数组总列数,Y轴为对应行的均值,直观对比行均值与各列均值的差异。
  • 若你实际需求是将行均值的X轴设为行号,只需修改row_mean的索引:row_mean.index = df.index + 1,同时调整X轴标注为“行/列序号”即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:35:32