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

跨多独立DataFrame行均值计算及按问题维度绘图方案咨询

数据处理与可视化实现步骤

第一步:计算每个DataFrame的行平均得分

所有待处理的DataFrame默认行索引为问题编号(Q1/Q2/...),列索引为1~n的数值维度,直接对每行的数值列求均值即可,示例代码如下:

import pandas as pd

# 假设你已将4个待处理DataFrame存入如下列表
dfs = [df1, df2, df3, df4]

# 遍历每个DataFrame新增average列存储行均值
for df in dfs:
    # 仅对数值列求均值,自动忽略非数值的索引相关内容
    df['average'] = df.mean(axis=1, numeric_only=True)

注:如果需要保留缺失值对均值的影响(即该行有一个空值则均值为空),可以在mean方法中添加参数skipna=False。

第二步:按问题维度生成折线图并标注百分比变化

先汇总所有问题在各个DataFrame中的平均得分,再逐个问题绘图。对同时出现在第一个和最后一个DataFrame中的问题,额外计算从首到尾的平均得分百分比变化并标注在图中,完整实现代码如下:

import matplotlib.pyplot as plt
from collections import defaultdict

# 1. 汇总所有问题的均值数据
q_avg_dict = defaultdict(list)
all_ques = set()
for df in dfs:
    all_ques.update(df.index.tolist())
all_ques = sorted(all_ques)

for q in all_ques:
    for df in dfs:
        q_avg_dict[q].append(df.loc[q, 'average'] if q in df.index else None)

# 2. 逐个问题绘图
for q, avg_list in q_avg_dict.items():
    # 过滤掉无数据的位置,保留有值的点和对应的df序号
    x = [i+1 for i, val in enumerate(avg_list) if val is not None]
    y = [val for val in avg_list if val is not None]
    if len(y) < 2:
        # 少于2个数据点无法绘制有效折线,可根据需求调整是否跳过
        continue
    
    plt.figure(figsize=(8,4))
    plt.plot(x, y, marker='o', linewidth=2, label=f'{q}平均得分')
    plt.title(f'{q}各阶段平均得分变化')
    plt.xlabel('DataFrame序号')
    plt.ylabel('平均得分')
    plt.xticks(range(1, len(dfs)+1))
    plt.grid(alpha=0.3)
    
    # 判断是否同时在第一个和最后一个df中存在,计算并标注百分比变化
    if avg_list[0] is not None and avg_list[-1] is not None:
        first_avg = avg_list[0]
        last_avg = avg_list[-1]
        change_pct = ((last_avg - first_avg) / first_avg) * 100
        # 在图的右上角标注变化率
        plt.text(0.95, 0.95, f'首→尾变化率: {change_pct:.2f}%', 
                 transform=plt.gca().transAxes, ha='right', va='top',
                 bbox=dict(facecolor='white', alpha=0.8))
    plt.legend()
    plt.show()

如果需要调整图表样式、标注位置或者批量导出图片,直接修改对应matplotlib参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:05