如何将Pandas DataFrame透视转为3D数组以绘制多T_id维度3D热力图
问题原因
pivot方法仅支持单维度行、单维度列的透视逻辑,无法直接处理三个维度的透视需求,另外你原有尝试代码中还存在未定义的df_date_sum、df_date_error_rate变量,也是运行报错的原因之一。
实现方案
完整适配三维维度的代码如下:
- 分组聚合计算错误率
# 移除原有T_id=3的筛选行,按三个维度分组,一次性聚合得到错误总和与总条目数 df_grouped = df.groupby(['Timestamp', 'T_id', 'Pos_id'], as_index=False)['Error'].agg( error_sum='sum', entry_count='count' ) # 计算错误率并填充空值 df_grouped['error_rate'] = df_grouped['error_sum'] / df_grouped['entry_count'] df_grouped['error_rate'] = df_grouped['error_rate'].fillna(0)
- 生成适配3D绘图的数据集
如果需要透视表格式的结构化数据,可以用set_index+unstack实现三维透视:
# 索引为Timestamp,列依次为T_id、Pos_id,值为error_rate df_pivot = df_grouped.set_index(['Timestamp', 'T_id', 'Pos_id'])['error_rate'].unstack(['T_id', 'Pos_id'])
如果需要直接传入3D绘图接口的一维数组,直接提取对应字段即可:
x = df_grouped['Timestamp'].values # X轴:时间 y = df_grouped['Pos_id'].values # Y轴:位置ID z = df_grouped['T_id'].values # Z轴:T_id color = df_grouped['error_rate'].values # 颜色:错误率
上述四个数组可直接传入3D散点/体素热力图接口完成可视化。
内容的提问来源于stack exchange,提问作者Drimer
相关产品推荐
相关产品推荐

