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

无需嵌套for循环绘制Pandas pivot table中trial/cluster分组数据的方法

解决方案

可以通过groupby配合apply实现,性能远高于手动嵌套循环,pandas的内置分组逻辑做了底层优化,非常适合处理大规模数据集的批量操作。

实现步骤

  1. 先定义分组后的绘图处理函数:
import matplotlib.pyplot as plt

def plot_cluster_trial(group):
    # 从分组名中直接获取当前组的trial_id和cluster编号
    trial_id, cluster = group.name
    # 遍历当前组的所有orientation绘制曲线(如果不需要区分orientation可直接打平values绘图)
    for orientation in group.index:
        plt.plot(group.columns, group.loc[orientation], label=f"方位角 {orientation}")
    # 标注图信息
    plt.title(f"试验ID: {trial_id} | 簇编号: {cluster}")
    plt.xlabel("空间频率")
    plt.ylabel("放电率")
    plt.legend()
    # 可替换为plt.savefig批量保存图片,保存后调用plt.close()避免内存占用过高
    plt.show()
  1. 对pivot table按前两级索引分组,批量执行绘图函数:
# level=[0,1]对应索引的第一级trial_id、第二级cluster
piv.groupby(level=[0, 1]).apply(plot_cluster_trial)

补充说明

  • 如果不需要按方位角区分曲线,直接用plt.plot(group.columns, group.values.flatten())替换遍历orientation的逻辑即可
  • 批量生成图片时建议不要每次都plt.show(),改用保存到本地的方式,避免绘图窗口过多导致程序卡顿

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:54:02