实现按天更新vintage并热力图可视化
数据准备
我们将含mob的月度vintage数据和更新到 T-1的vintage数据拼合在一起,里面有如下字段:
借据号、其他我们需要的字段,必备的要有:‘use_mon’,‘mob(更新到T-1的数据要到最新的mob)’, ‘m2_add_ovd_bal’, ‘m1_add_ovd_bal’, ‘principal’
那么我们就能实现vintage数据的可视化监控,能跟踪到T-1的vintage数据,对于我们及时评估策略情况在日益专业日益激烈的信贷行业非常有必要。当然也能稍微改改代码实现分组监控。
定义可视化函数
def pivot_heatmap1(df,figsize_ini):A = df.groupby(['use_mon','mob']).agg({'m2_add_ovd_bal':np.sum,'m1_add_ovd_bal':np.sum,'principal':np.sum}).reset_index() A['$M2+%'] = A['m2_add_ovd_bal']/A['principal']A['$M1+%'] = A['m1_add_ovd_bal']/A['principal']piovt_table= A.pivot(index='use_mon',columns='mob',values='$M1+%') # M1+这里改为M1,#pivot的其他参数 index可以=['a','b'],values也可以['a','b'],aggfunc='sum'piovt_table.index.name='use_mon'piovt_table.columns.name='mob'piovt_table=piovt_table.query(('use_mon>="2023-07"'))## 额外筛选条件piovt_table=pd.DataFrame(piovt_table)plt.figure(figsize=figsize_ini) # 画布重叠或者稀疏,更改画布大小,(15,10)分别是横轴和竖轴heatmap = sns.heatmap(piovt_table,annot=True,fmt=".2%",cmap='Oranges', # Reds 填充红色 cool 蓝色 Oranges颜色轻重合适linewidths=.5, annot_kws={'size': 8, 'weight': 'bold', 'color': 'black'})plt.ylabel('month')plt.xlabel('mob')#ax1.set_xticklabels(xticks, rotation=35, fontsize=9)#ax1.set_yticklabels(yticks, rotation=50, fontsize=9)plt.title('vintage_$M1+')# M1+这里改为M1plt.show()
使用示例
pivot_heatmap1(data[(data['label_360']=='0')&(data['mob']>=0)#&(data['price_label']=='6,(22-24%]')&(data['use_mon']>='2023-07')],(11,6))