和鲸社区数据分析每周挑战【第九十八期:企业贷款审批分析】

news2024/11/26 16:44:20

和鲸社区数据分析每周挑战【第九十八期:企业贷款审批分析】

文章目录

  • 和鲸社区数据分析每周挑战【第九十八期:企业贷款审批分析】
    • 一、背景描述
    • 二、数据说明
    • 三、问题描述
    • 四、数据加载
    • 五、数据清洗和预处理
    • 六、数据探索与分析
      • 1、贷款金额分布
      • 2、各州的贷款数量分布
      • 3、贷款批准日期分布
      • 4、非营利组织和营利组织的贷款数量比较
      • 5、各种银行的贷款数量分布
    • 七、总结

在这里插入图片描述

一、背景描述

本数据集为美国PPP计划的贷款数据集,包含了贷款金额为15万美元及以上的贷款记录信息。

工资保障计划(PPP)
美国的Paycheck Protection Program法案是一项旨在帮助美国中小企业度过新冠疫情的经济援助计划。该法案额度为美国GDP的10%(约2-2.2万亿美元),3490亿美元面向500人以下中小企业,即PPP项目。
PPP全称为“Paycheck Protection Program”,即薪资保护项目。 它通过美国中小企业署SBA(Small Business Agency)贷款的形式来发放补助,而非以现金或拨款形式发放。 该法案旨在帮助企业留住员工,不至于他们被裁员,PPP的借款利率非常低,还款条件优惠。 如果公司保持员工数量以及工资水平,符合条件的企业可以免除部分或全部的利息和本金。

二、数据说明

字段翻译说明
LoanRange贷款金额获批准的贷款金额范围
BusinessName公司名称
Address地址
City城市
State
Zip邮政编码
NAICSCodeNAICS编号NAICS: 北美行业分类系统
BusinessType企业类型
RaceEthnicity种族
Gender性别
Veteran退伍军人申请者是否为退伍军人
NonProfit非营利组织是否是非营利组织
JobsRetained保留岗位有多少工作岗位获得了贷款批准
DateApproved批准日期贷款批准的日期
Lender银行贷款银行
CDCD企业对应国会选区

三、问题描述

  • 中小企业贷款需求EDA
  • 贷款获批企业数据分析

四、数据加载

import pandas as pd

data_path = "PPP_data_150k_plus.csv"
df = pd.read_csv(data_path)

df.head()

在这里插入图片描述

数据集包括以下字段:

  • LoanRange:获批准的贷款金额范围
  • BusinessName:公司名称
  • Address:地址
  • City:城市
  • State:州
  • Zip:邮政编码
  • NAICSCode:NAICS编号(北美行业分类系统)
  • BusinessType:企业类型
  • RaceEthnicity:种族
  • Gender:性别
  • Veteran:申请者是否为退伍军人
  • NonProfit:是否是非营利组织
  • JobsRetained:有多少工作岗位获得了贷款批准
  • DateApproved:贷款批准的日期
  • Lender:贷款银行
  • CD:企业对应国会选区

接下来,我们将进一步探索这些数据。

五、数据清洗和预处理

在进行数据分析之前,我们需要先进行数据清洗和预处理,包括处理缺失值、错误值、异常值等,让我们先查看数据的概况。

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 661218 entries, 0 to 661217
Data columns (total 16 columns):
 #   Column         Non-Null Count   Dtype  
---  ------         --------------   -----  
 0   LoanRange      661218 non-null  object 
 1   BusinessName   661210 non-null  object 
 2   Address        661201 non-null  object 
 3   City           661203 non-null  object 
 4   State          661218 non-null  object 
 5   Zip            661202 non-null  float64
 6   NAICSCode      654435 non-null  float64
 7   BusinessType   659789 non-null  object 
 8   RaceEthnicity  661218 non-null  object 
 9   Gender         661218 non-null  object 
 10  Veteran        661218 non-null  object 
 11  NonProfit      42462 non-null   object 
 12  JobsRetained   620712 non-null  float64
 13  DateApproved   661218 non-null  object 
 14  Lender         661218 non-null  object 
 15  CD             661218 non-null  object 
dtypes: float64(3), object(13)
memory usage: 80.7+ MB

数据集中有661218条记录,16个字段。其中,有一些字段存在缺失值,比如 BusinessNameAddressCityZipNAICSCodeBusinessTypeJobsRetained。特别是 NonProfit 字段,只有42462个非空值,这可能是因为只有非营利组织才在这个字段中填写了信息。

接下来我们需要决定如何处理这些缺失值。一种可能的策略是对于数值型字段(如 JobsRetained),我们可以使用平均值或中位数进行填充。对于类别型字段(如 BusinessType),我们可以选择使用最常见的类别进行填充。然而,对于 NonProfit 字段,由于缺失值过多,我们可能需要更深入地研究如何处理。

此外我们还需要注意到 DateApproved 字段目前是对象类型,为了后续的时间序列分析,我们需要将其转换为日期类型。

下面让我们先处理 DateApproved 字段,将其转换为日期类型,然后再处理其他的缺失值。

# 将 DateApproved 转换为日期类型
df['DateApproved'] = pd.to_datetime(df['DateApproved'])

# 使用中位数填充 JobsRetained 字段的缺失值
df['JobsRetained'] = df['JobsRetained'].fillna(df['JobsRetained'].median())

# 使用最常见的值填充 BusinessType 字段的缺失值
df['BusinessType'] = df['BusinessType'].fillna(df['BusinessType'].mode()[0])

# 将 NonProfit 字段的缺失值视为非非营利组织,填充为 'N'
df['NonProfit'] = df['NonProfit'].fillna('N')

# 检查处理后的数据
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 661218 entries, 0 to 661217
Data columns (total 16 columns):
 #   Column         Non-Null Count   Dtype         
---  ------         --------------   -----         
 0   LoanRange      661218 non-null  object        
 1   BusinessName   661210 non-null  object        
 2   Address        661201 non-null  object        
 3   City           661203 non-null  object        
 4   State          661218 non-null  object        
 5   Zip            661202 non-null  float64       
 6   NAICSCode      654435 non-null  float64       
 7   BusinessType   661218 non-null  object        
 8   RaceEthnicity  661218 non-null  object        
 9   Gender         661218 non-null  object        
 10  Veteran        661218 non-null  object        
 11  NonProfit      661218 non-null  object        
 12  JobsRetained   661218 non-null  float64       
 13  DateApproved   661218 non-null  datetime64[ns]
 14  Lender         661218 non-null  object        
 15  CD             661218 non-null  object        
dtypes: datetime64[ns](1), float64(3), object(12)
memory usage: 80.7+ MB

现在大部分字段的缺失值已经被填充。然而对于 BusinessNameAddressCityZipNAICSCode,这些字段缺失的数据相对较少,我们可以选择删除这些含有缺失值的记录,因为它们对整个数据集的影响较小。

我们将删除这些含有缺失值的记录,然后再次查看数据的概况。

# 删除含有缺失值的记录
df = df.dropna()

# 检查处理后的数据
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 654411 entries, 0 to 661209
Data columns (total 16 columns):
 #   Column         Non-Null Count   Dtype         
---  ------         --------------   -----         
 0   LoanRange      654411 non-null  object        
 1   BusinessName   654411 non-null  object        
 2   Address        654411 non-null  object        
 3   City           654411 non-null  object        
 4   State          654411 non-null  object        
 5   Zip            654411 non-null  float64       
 6   NAICSCode      654411 non-null  float64       
 7   BusinessType   654411 non-null  object        
 8   RaceEthnicity  654411 non-null  object        
 9   Gender         654411 non-null  object        
 10  Veteran        654411 non-null  object        
 11  NonProfit      654411 non-null  object        
 12  JobsRetained   654411 non-null  float64       
 13  DateApproved   654411 non-null  datetime64[ns]
 14  Lender         654411 non-null  object        
 15  CD             654411 non-null  object        
dtypes: datetime64[ns](1), float64(3), object(12)
memory usage: 84.9+ MB

现在数据集中的所有字段都不再包含缺失值。

六、数据探索与分析

1、贷款金额分布

首先让我们看一下贷款金额的分布情况。由于 LoanRange 字段给出的是贷款金额的范围,我们无法得到精确的贷款金额,但我们可以通过计数每个范围的数量来获取一些大致的信息。

import cufflinks as cf

# 设置cufflinks为离线模式
cf.go_offline()

# 设置主题
cf.set_config_file(theme='pearl')

# 贷款金额范围的计数
loan_range_counts = df['LoanRange'].value_counts()
loan_range_counts = loan_range_counts.sort_values(ascending=False)
loan_range_counts.iplot(kind='bar', title='贷款金额范围分布', color='blue', xTitle='贷款金额范围', yTitle='数量')

在这里插入图片描述

从上图可以看出,不同范围的贷款数量有显著的差异。具体来说,150,000-350,000美元的贷款数量最多,其次是350,000-1,000,000美元的贷款。这可能反映了大多数公司的贷款需求较小,只有少数公司需要较大的贷款。

2、各州的贷款数量分布

我们再来看一下各州的贷款数量分布,这可以帮助我们了解哪些州的公司更多地利用了PPP贷款。

# 各州的贷款数量
state_counts = df['State'].value_counts()
state_counts = state_counts.sort_values(ascending=False)
state_counts.iplot(kind='bar', title='各州的贷款数量分布', color='blue', xTitle='州', yTitle='数量')

在这里插入图片描述

从上图可以看出,各州的贷款数量差异较大。具体来说,加利福尼亚州、德克萨斯州、纽约州的贷款数量最多。这可能与这些州的经济规模和企业数量有关。

3、贷款批准日期分布

我们再来看一下贷款批准日期的分布,这可以帮助我们了解贷款批准的时间趋势。我们将按月统计贷款批准的数量。

# 贷款批准日期分布
df['DateApproved'] = pd.to_datetime(df['DateApproved'])
df['YearMonth'] = df['DateApproved'].dt.to_period('M')
date_counts = df['YearMonth'].value_counts().sort_index()
date_counts.iplot(kind='line', title='贷款批准日期分布', color='blue', xTitle='年月', yTitle='数量')

在这里插入图片描述

从上图可以看出,贷款批准的日期主要集中在2020年的4月和5月,这可能是因为PPP计划在2020年春季开始实施,许多公司在这个时期提交了贷款申请。

4、非营利组织和营利组织的贷款数量比较

我们再来看一下非营利组织和营利组织的贷款数量比较。这可以帮助我们了解这两类组织在利用PPP贷款方面的差异。

# 非营利组织和营利组织的贷款数量比较
nonprofit_counts = df['NonProfit'].value_counts()
nonprofit_counts = nonprofit_counts.sort_values(ascending=False)
nonprofit_counts.iplot(kind='bar', title='非营利组织和营利组织的贷款数量比较', color='blue', xTitle='是否为非营利组织', yTitle='数量')

在这里插入图片描述

从上图可以看出,获得PPP贷款的大部分是营利组织,非营利组织的数量较少,这可能反映了PPP计划的主要目标是帮助营利组织,尤其是中小企业。

5、各种银行的贷款数量分布

最后让我们看一下各种银行的贷款数量分布。这可以帮助我们了解哪些银行在PPP计划中扮演了主要角色。由于银行数量可能较多,我们只查看贷款数量最多的前10个银行。

# 贷款数量最多的前10个银行
lender_counts = df['Lender'].value_counts()
lender_counts = lender_counts.sort_values(ascending=False)
lender_counts[:10].iplot(kind='bar', title='贷款数量最多的前10个银行', color='blue', xTitle='银行', yTitle='数量')

在这里插入图片描述

从上图可以看出,贷款数量最多的前10个银行中,JPMorgan Chase Bank和Bank of America等大型银行处于领先地位,这可能反映了这些大型银行在PPP计划中扮演了重要的角色。

七、总结

在这个项目中,我们对美国PPP计划的贷款数据集进行了一系列的探索和分析,我们查看了贷款金额、保留的工作岗位数量、各州的贷款数量、贷款批准日期、非营利组织和营利组织的贷款数量,以及各种银行的贷款数量等各个方面。

我们发现,大部分的贷款金额在150,000-350,000美元之间,贷款批准主要在2020年的4月和5月,贷款数量最多的是营利组织,以及JPMorgan Chase Bank和Bank of America等大型银行在贷款数量上处于领先地位。

这些发现可以帮助我们理解PPP计划的实施情况,以及哪些因素可能影响到贷款的批准和分配。这对于政策制定者和公司来说都有重要的参考价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue渲染系统模块

我们想要实现一个简洁版的Mini-Vue框架&#xff0c;应该包含三个模块&#xff1a;分别是&#xff1a;渲染系统模块、可响应式系统模块、应用程序入库模块。 这篇就来写一下渲染系统模块。剩下两个模块后面有时间再更新。 vue渲染系统实现&#xff0c;应该包含三个功能&#x…

linux之Ubuntu系列(二)远程管理指令

shutdown shutdown 选项 时间 关机或重启 选项&#xff1a; -r 重新启动 提示 不指定选项和参数&#xff0c;默认表示1分钟之后 关闭电脑用SSH远程维护服务器时&#xff0c;最好不要关闭系统&#xff0c;而应该重新启动系统 -r shutdown常用示例 # 1分钟后关机 shutdown …

【C语言初阶(17)】初阶指针

文章目录 Ⅰ指针的概念Ⅱ 指针和指针类型⒈指针 - 整数⒉指针的解引用 Ⅲ 野指针⒈野指针成因⒉规避野指针 Ⅳ 指针运算⒈指针 - 整数⒉指针 - 指针⒊指针的关系运算 Ⅴ 指针和数组Ⅵ 二级指针Ⅶ 指针数组 Ⅰ指针的概念 指针的两个要点 指针是内存中一个最小单元的编号&#…

使用 torch.stft 进行短时傅里叶变换

python 常规的 stft 都是在 cpu 上进行计算&#xff0c;如果网络训练是在 GPU 上进行&#xff0c;那么就涉及到数据传输的问题&#xff0c;降低计算效率&#xff1b;而 torch 自带的 stft 可以直接在 GPU 上进行计算&#xff0c;因此可以节省计算时间。 import torch import t…

简单版本视频播放服务器V3-前端优化-播放器在左,列表在右侧【推荐】【完成】

做个家用版本的家庭影院&#xff0c;通过这个服务器可以给电脑&#xff0c;平板&#xff0c;手机等设备提供直接播放电影的作用&#xff0c;通过离线下载电影放入目录里就是就可以给全家提供电影播放了&#xff0c;通过浏览器就是可以访问电脑里面的视频&#xff0c;实现简单的…

Html基础知识学习——圣杯布局、margin负值、等高布局

文章目录 圣杯布局margin负值等高布局 圣杯布局 两边页面固定中间页面宽度随着浏览器大小自适应 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

代码随想录算法训练营day6 | 242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

目录 242. 有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 242. 有效的字母异位词 242. 有效的字母异位词 难度&#xff1a;easy 类型&#xff1a;哈希表 思路&#xff1a; 代码&#xff1a; class Solution {public boolean isAnagram(String s, St…

计算机网络 day9 DNAT实验

目录 DNAT DNAT策略的典型应用环境 DNAT策略的原理 在网关中使用DNAT策略发布内网服务器 DNAT实验&#xff1a; 实验环境&#xff1a; DNAT网络规划拓扑图&#xff1a; 步骤&#xff1a; 1、创建linux客户端Web网站&#xff08;go语言&#xff09;&#xff0c;实现Web服…

二、DDL-1.数据库操作

一、查询 1、查询所有数据库 show databases; MySQL自带的默认的数据库有四个&#xff1a; 二、创建 1、创建一个新的数据库itcast&#xff08;不区分大小写&#xff09;&#xff1a; create database itcast; 查询所有数据库&#xff1a;多了itcast 2、再创建同名的数据库…

Latex合并多个公式且居中

要求&#xff1a;1&#xff1a;多个公式居中对齐 2&#xff1a;多个公式组合只有一个编号。 结果类似于这一种&#xff1a; 代码&#xff1a;使用gathered可以。 \begin{equation}\begin{gathered}\vspace{0.6em}{E} {A(I)}\\\vspace{0.6em}{F} Conv(\sum_{i1}^3{M_i}) \\{…

可移植性测试包括哪些

可移植性测试 可移植性是指应用程序能够安装到不同的环境中&#xff0c;在不同的环境中使用&#xff0c;甚至可以移动到不同的环境中。当然&#xff0c;前两者对所有系统都很重要。就PC软件而言&#xff0c;鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速…

AutoSAR EM执行管理模块01

1执行管理的作用&#xff1f; 管理应用AA的生命周期&#xff0c;啥时候启动&#xff0c;啥时候shut down。管理板子的启动和关闭&#xff0c;这里的板子跑的程序是最基本的程序&#xff0c;不包含业务逻辑的AA&#xff0c;可以理解为最小系统的程序。根据定义的执行依赖关系加载…

Appium Android ——利用 TestNG 并行执行用例

目录 前言&#xff1a; 一、测试类 二、连接两个 Android 设备或启动两个虚拟机 三、项目路径下新建两个 testng.xml 四、开启两个 appium server 五、导出依赖 六、执行测试 七、查看报告 前言&#xff1a; Appium是一个流行的移动应用自动化测试工具&#xff0c;…

PHP与Golang对战:两种语言的比较与应用场景探讨

引言 在软件开发领域&#xff0c;选择一种合适的编程语言对于项目的成功至关重要。而在今天的文中&#xff0c;我们将探讨两个备受争议的编程语言——PHP与Golang之间的对战。通过比较它们的优势和应用场景&#xff0c;帮助开发者更好地了解如何选择适合自己项目的语言。 PHP的…

vue3和vue2主要的一些区别?

一、Vue3介绍 关于vue3的重构背景&#xff0c;尤大是这样说的&#xff1a; 「Vue 新版本的理念成型于 2018 年末&#xff0c;当时 Vue 2 的代码库已经有两岁半了。比起通用软件的生命周期来这好像也没那么久&#xff0c;但在这段时期&#xff0c;前端世界已经今昔非比了 在我…

Spring 框架——事件驱动模型

目录 1.概述2.三种角色2.1.事件角色2.2.事件监听者角色2.3.事件发布者角色 3.示例 1.概述 &#xff08;1&#xff09;Spring 事件驱动模型是 Spring 框架中的一种编程模型&#xff0c;也被称为发布/订阅模型&#xff0c;通过使用观察者模式和事件机制&#xff0c;实现了组件之…

Flask_自定义flask的cmd命令

创建自定义命令 from flask import Flaskapp Flask(__name__)app.cli.command() def hello():"""命令说明写这里"""print("hello python")if __name__ __main__:app.run() 执行flask --help 可以在命令查看定义的命令 注意事项&a…

网络工程基础框架3层次模型 ,1接入层2 汇聚层 3核心层

网络工程基础框架3层次模型 ,1接入层2 汇聚层 3核心层_「已注销」的博客-CSDN博客 CISCO有自己的3层层次模型 1&#xff0c;接入层 2&#xff0c;汇聚层 3&#xff0c;核心层 区别&#xff1a;通常将网络中直接面向用户连接或访问网络的部分称为接入层&#xff0c;将位于接入层…

盛元广通科研院所实验室安全管理系统LIMS

实验室的管理与安全直接影响着教学与科研质量&#xff0c;从科研角度出发&#xff0c;实验室安全风险特点与生产现场安全风险特点存在较大差异&#xff0c;危险源种类复杂实验内容变更频繁&#xff0c;缺乏有效监管&#xff0c;实验室安全运行及管理长期游离于重点监管领域外&a…

抖音seo矩阵源码SaaS搭建代码分享-可二开

场景&#xff1a;适用于抖音seo源码&#xff0c;抖音矩阵源码&#xff0c;短视频seo源码&#xff0c;短视频矩阵源码&#xff0c;抖音短视频seo矩阵系统源码开发搭建等。 抖音seo源码优化逻辑 抖音SEO是通过一系列的技术手段和优化策略来提升视频内容在抖音平台内的曝光率和排名…