pandas groupby聚合结果如何正确提取列向量用于多字段对Duration的绘图
列向量提取实现方法
基于你生成的df_duration_means聚合表,提取对应列向量并完成折线图绘制的实现完全不需要复杂的重构操作:
- 核心提取逻辑:聚合表的索引本身就是Duration维度,直接将索引和数值列转成numpy数组即可得到绘图可用的纯数值向量
# 提取Duration作为x轴向量 dur = df_duration_means.index.to_numpy() # 分别提取三个指标列作为对应y轴向量 interest_vec = df_duration_means['Interest'].to_numpy() loan_amount_vec = df_duration_means['Loan amount'].to_numpy() ltv_vec = df_duration_means['LTV'].to_numpy() - 现有提取代码的可优化点:
- 直接将pandas Index、Series对象传入matplotlib绘图,在部分版本下会触发类型适配警告,加
.to_numpy()转成纯数值数组即可完全规避这类问题 - 之前提取
Loan amount列时将变量命名为interest_mx,变量名和实际存储内容不匹配,后续绘图容易出现参数传错的问题
- 直接将pandas Index、Series对象传入matplotlib绘图,在部分版本下会触发类型适配警告,加
适配现有绘图框架的代码实现
按照你现有matplotlib代码框架,逐列绘制对应折线只需要将提取好的向量传入绘图方法即可:
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_axes([0,0,1,1]) # 逐线绘制,通过颜色和标签区分不同指标 ax.plot(dur, interest_vec, color='#2E86AB', label='Interest') ax.plot(dur, loan_amount_vec, color='#A23B72', label='Loan amount') ax.plot(dur, ltv_vec, color='#F18F01', label='LTV') # 增加图例避免不同系列的线条混淆 ax.legend()
注意:
groupby的聚合结果天然按分组键(Duration)排序对齐,提取出的三个y轴向量元素顺序和Duration向量的元素顺序完全一一对应,不会出现x、y值错位的问题。
内容的提问来源于stack exchange,提问作者Wurschti
相关产品推荐
相关产品推荐

