1、项目背景
对信贷数据进行业务数据分析,并且分析出以下内容:
- 每个季度账单金额和坏账率(逾期90天以上);
坏账率 = (账单金额-实收金额)/所有账单金额- 每个季度60天账期入催率,90天账单 入催率;
- 不同逾期天数的回款情况
分为历史逾期和当前逾期,其中历史逾期表示之前逾期但现在已经还完了,当前逾期表示现在欠钱并没有还完。
2、代码实现
2.1 导入包和数据
# 导入包和数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
df = pd.read_excel('业务数据.xls')
df_copy = df.copy()
df.head()
df_copy.info()
以上数据信息可以看出,关键数据存在一定的缺失,需要根据实际情况进行填充,而日期数据需要转化为日期格式。
df_copy.describe()
2.2 数据处理
对缺失数据进行填充,对时间数据进行日期转化。
# 到账日期采用实际到账日最大的日期
today_time = pd.to_datetime(df_copy['实际到账日'].fillna(0)).max()
df_copy['实际到账日'] = pd.to_datetime(df_copy['实际到账日']).fillna(today_time)
df_copy['账单周期'] = pd.to_datetime(df_copy['账单周期'])
df_copy['应付日期'] = pd.to_datetime(df_copy['应付日期'])
df_copy['开票金额'] = df_copy['开票金额'].fillna(0)
df_copy['实收金额'] = df_copy['实收金额'].fillna(0)
df_copy['未收金额'] = df_copy['未收金额'].fillna(0)
df_copy.head()
添加新的特征项
# 为了后续计算,在原始数据基础上构造新的字段:是否逾期,是否逾期90天,未收金额2(校验原始数据中的未收金额),当前逾期天数,历史逾期天数
df_copy['未收金额2'] = df_copy['账单金额'] - df_copy['实收金额']
df_copy['是否逾期'] = df_copy.apply(lambda x: 1 if today_time>x.应付日期 else 0, axis=1)
df_copy['是否逾期90天'] = (today_time-df_copy.应付日期).map(lambda x:1 if x.days>=