(10-2-03)贷款预测模型

请大家关注我,本文章粉丝可见,我会一直更新下去,完整代码进QQ群获取:323140750,大家一起进步、学习。

2. Numerical Variable(值变量)分析

"Numerical Variable" 是指在统计学和数据分析中,用于表示具有数值或数量意义的变量。这些变量通常代表度量或计数,可以进行数学上的各种运算,包括加法、减法、平均值计算等。数值变量可以是连续的,例如温度、身高、体重等,也可以是离散的,例如年龄、数量、计数等。

数值变量通常用于度量和描述数据的各种特性,它们提供了数据的数量信息,这使得在统计分析和建模中能够进行更多的数学运算和分析。与分类变量不同,数值变量的值是可排序的,并且可以用于建立数学模型,如回归模型、聚类分析、假设检验等。

(1)展示数据集中的三个数值变量:'ApplicantIncome'(申请人月收入)、'CoapplicantIncome'(共同申请人月收入)和'LoanAmount'(贷款金额)。具体实现代码如下所示。

df[['ApplicantIncome','CoapplicantIncome','LoanAmount']].describe()

函数describe()将为每个数值变量生成一些统计摘要信息,包括以下内容:

  1. count(计数):每个变量的非缺失值数量。
  2. mean(均值):每个变量的平均值。
  3. std(标准差):每个变量的标准差,表示数据的分散程度。
  4. min(最小值):每个变量的最小值。
  5. 25%、50%(中位数)、75%:每个变量的百分位数,它们表示数据的分布情况。中位数是数据的中间值,25% 和 75% 分位数分别表示数据的下四分位数和上四分位数。
  6. max(最大值):每个变量的最大值。

执行后会输出:

ApplicantIncome CoapplicantIncome LoanAmount
count 614.000000 614.000000 592.000000
mean 5403.459283 1621.245798 146.412162
std 6109.041673 2926.248369 85.587325
min 150.000000 0.000000 9.000000
25% 2877.500000 0.000000 100.000000
50% 3812.500000 1188.500000 128.000000
75% 5795.000000 2297.250000 168.000000
max 81000.000000 41667.000000 700.000000

这些统计信息有助于了解数值变量的分布、中心趋势和离散度,可以帮助数据分析人员更好地理解数据的特点,为后续的数据探索和建模提供重要的参考。

2使用Seaborn库创建3个直方图,以可视化数据集中的数值变量('ApplicantIncome'、'CoapplicantIncome'和'LoanAmount')的分布情况。具体实现代码如下所示。

sns.set(style="darkgrid")
fig, axs = plt.subplots(2, 2, figsize=(10, 8))

sns.histplot(data=df, x="ApplicantIncome", kde=True, ax=axs[0, 0], color='green')
sns.histplot(data=df, x="CoapplicantIncome", kde=True, ax=axs[0, 1], color='skyblue')
sns.histplot(data=df, x="LoanAmount", kde=True, ax=axs[1, 0], color='orange');

执行效果如图10-9所示,这些直方图有助于理解数值变量的分布特征,包括其集中趋势和分散程度,以及是否存在异常值或离群点。

10-9  数值变量的分布图

(3)使用Seaborn库创建3个小提琴图,以可视化数据集中的数值变量('ApplicantIncome'、'CoapplicantIncome'和'LoanAmount')的分布情况。具体实现代码如下所示。

sns.set(style="darkgrid")
fig, axs1 = plt.subplots(2, 2, figsize=(10, 10))
sns.violinplot(data=df, y="ApplicantIncome", ax=axs1[0, 0], color='green')
sns.violinplot(data=df, y="CoapplicantIncome", ax=axs1[0, 1], color='skyblue')
sns.violinplot(data=df, y="LoanAmount", ax=axs1[1, 0], color='orange');

执行效果如图10-10所示,这些小提琴图不仅展示了数值变量的分布,还可同时显示出分布的密度和可能存在的峰值,这有助于更全面地理解数值变量的性质。

10-10  数值变量的小提琴图

3. 其他变量分析

接下来将展示数据集中每个变量的额外分析,包括双变量分析(分类与分类,分类与数值,数值与数值)热图分析。

(1)使用库Seaborn中的sns.heatmap创建了一个热力图,用于可视化数据集中数值变量之间的相关性。具体实现代码如下所示。

plt.figure(figsize=(10,7))
sns.heatmap(df.corr(), annot=True, cmap='inferno');

执行效果如图10-11所示,以可视化方式表示了数据集中数值变量之间的相关性,带有注释数值以指示相关性的强度和方向。

10-11  数据集中数值变量的热力图

2创建了一个堆叠条形图,用于可视化性别(Gender)与婚姻状况(Married)之间的关系。具体实现代码如下所示。

pd.crosstab(df.Gender,df.Married).plot(kind="bar", stacked=True, figsize=(5,5), color=['#f64f59','#12c2e9'])
plt.title('Gender vs Married')
plt.xlabel('Gender')
plt.ylabel('Frequency')
plt.xticks(rotation=0)
plt.show()

执行效果如图10-12所示,这个图可用于观察性别与婚姻状况之间的关系,以及每个组的频率分布。

10-12  堆叠条形图

(3)创建了一个堆叠条形图,用于可视化自雇(Self Employed)与信用历史(Credit History)之间的关系。具体实现代码如下所示。

pd.crosstab(df.Self_Employed,df.Credit_History).plot(kind="bar", stacked=True, figsize=(5,5), color=['#544a7d','#ffd452'])
plt.title('Self Employed vs Credit History')
plt.xlabel('Self Employed')
plt.ylabel('Frequency')
plt.legend(["Bad Credit", "Good Credit"])
plt.xticks(rotation=0)
plt.show()

执行效果如图10-13所示

10-13  Self Employed与Credit History之间关系图

(4)创建了一个堆叠条形图,用于可视化展示财产地区(Property Area)与贷款状态(Loan Status)之间的关系。具体实现代码如下所示。

pd.crosstab(df.Property_Area,df.Loan_Status).plot(kind="bar", stacked=True, figsize=(5,5), color=['#333333','#dd1818'])
plt.title('Property Area vs Loan Status')
plt.xlabel('Property Area')
plt.ylabel('Frequency')
plt.xticks(rotation=0)
plt.show()

执行效果如图10-14所示,这个图可用于观察不同财产地区与贷款状态之间的关系,以及每个组的频率分布。在这里,"Property Area"表示不同的财产地区,"Loan Status"表示贷款状态(已批准或未批准)。

10-14  Property Area与Loan Status之间的关系

(5)创建一个箱线图,用于比较贷款状态(Loan Status)与申请人收入(Applicant Income)之间的关系。具体实现代码如下所示。

sns.boxplot(x="Loan_Status", y="ApplicantIncome", data=df, palette="mako");

执行效果如图10-15所示,图中有两个箱子,分别对应于"Loan_Status"为"Y"(已批准)和"N"(未批准)的两个类别。箱子的上边界表示上四分位数,下边界表示下四分位数,箱子内部的线表示中位数。图中的"Y"和"N"表示贷款状态,可以看出不同状态下申请人收入的分布情况。

10-15  Loan Status与Applicant Income箱线图

这个箱线图有助于比较不同贷款状态下申请人收入的分布情况,包括中位数、四分位数等统计信息,有助于了解贷款状态与申请人收入之间的关系。

(6)创建了一个箱线图,用于比较贷款状态(Loan Status)与共同申请人收入(Coapplicant Income)之间的关系。具体实现代码如下所示。

sns.boxplot(x="CoapplicantIncome", y="Loan_Status", data=df, palette="rocket");

执行效果如图10-16所示,这个箱线图有助于比较不同贷款状态下共同申请人收入的分布情况,包括中位数、四分位数等统计信息,有助于了解贷款状态与共同申请人收入之间的关系。

10-16  Loan Status与Coapplicant Income箱线图

(7)创建一个箱线图,用于比较贷款状态(Loan Status)与贷款金额(Loan Amount)之间的关系。具体实现代码如下所示。

sns.boxplot(x="Loan_Status", y="LoanAmount", data=df, palette="YlOrBr");

执行效果如图10-17所示,这个箱线图有助于比较不同贷款状态下贷款金额的分布情况,包括中位数、四分位数等统计信息,有助于了解贷款状态与贷款金额之间的关系。

10-17  Loan Status与Loan Amount箱线图

8可视化和分析 'ApplicantIncome' 和 'CoapplicantIncome' 列之间的关系,包括散点图的绘制、相关性的计算以及 t 检验的执行。具体实现代码如下所示。

df.plot(x='ApplicantIncome', y='CoapplicantIncome', style='o')  
plt.title('Applicant Income - Co Applicant Income')  
plt.xlabel('ApplicantIncome')
plt.ylabel('CoapplicantIncome')  
plt.show()
print('Pearson correlation:', df['ApplicantIncome'].corr(df['CoapplicantIncome']))
print('T Test and P value: \n', stats.ttest_ind(df['ApplicantIncome'], df['CoapplicantIncome']))

执行效果如图10-18所示

10-18  可视化和分析 ApplicantIncome和CoapplicantIncome列之间的关系

4. 空值处理

(1)计算DataFrame df 中每一列的空值数量,具体来说,它会返回一个与DataFrame列相同长度的Series,其中包含每列的缺失值数量。具体实现代码如下所示。

df.isnull().sum()

执行后会输出

Loan_ID               0

Gender               13

Married               3

Dependents           15

Education             0

Self_Employed        32

ApplicantIncome       0

CoapplicantIncome     0

LoanAmount           22

Loan_Amount_Term     14

Credit_History       50

Property_Area         0

Loan_Status           0

dtype: int64

通常情况下,数据分析师会使用这些信息来了解数据集中哪些列包含缺失值,以便进一步处理这些缺失值,例如填充它们或者删除包含缺失值的行或列。

(2)创建一个水平的条形图 (bar plot),用于可视化数据框 (DataFrame) df 中每一列的缺失值数量。具体实现代码如下所示。

plt.figure(figsize = (24, 5))
axz = plt.subplot(1,2,2)
mso.bar(df, ax = axz, fontsize = 12);

其中 plt.figure(figsize=(24, 5)) 用于设置图的大小,axz = plt.subplot(1,2,2) 创建了一个子图对象以及其位置,最后 mso.bar(df, ax=axz, fontsize=12) 用于绘制缺失值的条形图,其中 df 是数据框,ax=axz 是子图对象,fontsize=12 设置了字体大小。执行效果如图10-19所示,这个图有助于可视化哪些列具有缺失值,并且可以用于进一步分析数据中的缺失值情况。

10-19  空值统计图

未完待续

  • 24
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值