当前位置: 首页 > 工具软件 > PSI > 使用案例 >

PSI的模拟计算——01数据准备

毕衡
2023-12-01

数据来源

本次用于PSI模拟计算的数据来自于天池零基础入门金融风控-贷款违约预测使用其中的train.csv数据集,个字段的含义见原网页地址。

PSI指标的计算

有关PSI指标是如何计算的请见风控模型—群体稳定性指标(PSI)深入理解应用

数据处理思路

在理解了如何计算PSI指标后,那么对train.csv的处理可大致划分为用于训练模型的开发样本和用于计算PSI指标的月度进件数据。

划分思路

  1. 原始数据中给出了字段issueDate和term两个有关时间的字段那么就可据此计算出endDate=issueDate+term;
  2. 通过逻辑回归算法对数据进行建模就要求数据有标签并且要求数据量最好在5W左右,那么根据endDate统计出可将2016年之前的数据用于开发模型;
  3. 那么将issueDate在2016年之后的数据按月度进行划分即可计算模型每月的PSI值;
  4. 这么做必然会导致部分数据的缺失,例如一个样本的issueDate为2015-12但endDate在2018-12那么该样本就会被抛弃掉。

执行脚本(Python)

import pandas as pd
from datetime import datetime, timedelta

def splitDate(data):
    # 计算结束日期
    issueDate = pd.to_datetime(data['issueDate'])
    endDate = []
    for i in range(len(issueDate)):
        days = data['term'][i]*365
        deltaDays = timedelta(int(days))
        end = issueDate[i] + deltaDays
        endDate.append(end)
    endDate = pd.Series(endDate)
    # 按endDate对数据集进行划分
    data['endDate'] = endDate
    data['endDate_month'] = data.endDate.apply(lambda x: datetime.strftime(x, '%Y-%m'))
    # 以5W条数据作为划分依据确定划分时间为2016年,分析过程略
    # endDate在2016年之前的数据用于训练,issueDate从2016年开始
    train = data.loc[data['endDate_month'] < '2016-01', :]
    data_after_2016 = data.loc[data.issueDate >= '2016-01-01', :]
    # 提取issuDate的年-月作为之后的划分依据
    data_after_2016['issueDate_month'] = data_after_2016['issueDate'].apply(lambda x: x[:7])
    
    return train, data_after_2016
    
if __name__ == "__main__":
    import_path = input("Please enter the path of the data:")
    export_path = input("Please enter the data output path:")
    data = pd.read_csv(import_path, index_col=0)
    train, data_after_2016 = splitDate(data)
    # 存储数据
    train.to_csv(export_path+'\\train.csv')
    # 拆分文件
    dict_ = {}
    for year_month in set(data_after_2016['issueDate_month']):
        dict_[year_month] = data_after_2016.loc[data_after_2016['issueDate_month']==year_month, :]
    # 保存数据
    for key in dict_.keys():
        dict_[key].index = range(len(dict_[key]))
        dict_[key].to_csv(export_path+'\\%s.csv' % (key))
 类似资料: