目录

一、import

二、导入数据

三、借款人籍贯分布图

四、性别分布

五、教育程度分布

六、借款人年龄分布

七、借款人职位分布

​八、借款人行业分布

九、借款金额分布图

十、借款人收入分布

十一、婚姻状况分布

十二、车贷情况

十三、房贷情况


零、写在前面

①28W条数据我会尽快传到CSDN的资源里,大家有兴趣的可以自己下载

②文章只是列举最简单的分布情况,比如还可以看看各年龄段学历组成等

③数据里有一条贷款理由,可以画出词云图

④数据里有对各个借款人的信用进行评级,可以尝试使用深度学习等方法训练预测模型

⑤pandas、matplotlib都是较为基础的用法,不做过多注释

⑥爬虫参考代码:人人贷散标爬虫实例进阶-使用异步io_小zhan柯基-CSDN博客、人人贷散标爬虫实例_小zhan柯基-CSDN博客

一、import

import numpy as np
import matplotlib.pyplot as plt
import pandas as pdimport matplotlib.ticker as ticker
import mpl_toolkits.axisartist as AA
from mpl_toolkits.axisartist.axislines import SubplotZero
import pylabimport jieba
from wordcloud import WordCloudpylab.mpl.rcParams['font.sans-serif'] = ['SimHei'] #显示中文
plt.rcParams['axes.unicode_minus']=False  #用于解决不能显示负号的问题

二、导入数据

①使用read_csv导入数据

②设置列名

③花式索引

④将“id”设置为索引index

⑤去除所有都是nan的数据

data = pd.read_csv("all.csv",encoding="gbk",header=None,parse_dates=True)
data.columns = ["id","借款时间(月)","剩余还款时间(月)","借款金额","notPayInterest","productRepayType","贷款类型","利率","性别","籍贯","出生日期","教育程度","工作单位","行业","公司规模","职位","收入","车贷","汽车数量","婚姻状况","房贷","房子数量","信用等级","none","none","none","借款理由"]conciseData = data[["id","借款时间(月)","剩余还款时间(月)","借款金额","贷款类型","利率","性别","籍贯","出生日期","教育程度","工作单位","行业","公司规模","职位","收入","车贷","汽车数量","婚姻状况","房贷","房子数量","信用等级","借款理由"]]
conciseData = conciseData.set_index("id")
conciseData = conciseData.dropna(how="all")

三、借款人籍贯分布图

reigon = (conciseData["籍贯"].dropna().apply(lambda x:x.split(":")[0])\.apply(lambda x:x.replace("省","").replace("市","").replace("壮族自治区","").replace("古",""))\.value_counts()/(len(conciseData["籍贯"].dropna().apply(lambda x:x.split(":")[0])))*100).drop(index=["保密","null","请选择","深圳"])[:31]
reigon = reigon[["上海","北京","浙江","天津","江苏","广东","福建","山东","辽宁","内蒙","重庆","湖南","安徽","江西","海南","湖北","河北","四川","陕西","吉林","宁夏","山西","黑龙江","河南","广西","青海","新疆","云南","贵州","西藏","甘肃"]]
plt.figure(figsize=(16,8))
plt.title("借款人籍贯分布图(按2020年各省人均可支配收入排序)",fontsize=20)
plt.ylabel("百分比/%",size=20)
# plt.tick_params(labelsize=15)
plt.xticks(rotation=45,fontsize=15)
plt.yticks(fontsize=15)
# plt.grid(linestyle=":", color="b", linewidth=1)
plt.bar(reigon.index,reigon,color=["grey","gold","darkviolet","turquoise","r","g","b","c","k","darkorange","lightgreen","plum", "tan","khaki", "pink", "skyblue","lawngreen","salmon"])
plt.savefig("借款人籍贯分布图.jpg",dpi=500,bbox_inches = "tight")

四、性别分布

conciseData["性别"].dropna().value_counts().plot.pie(figsize=(5,5),autopct='%.2f%%',textprops = {'fontsize':17, 'color':'black'})
plt.ylabel("性别分布",fontsize=20)
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),fontsize=15)
plt.savefig("性别分布图.jpg",dpi=500,bbox_inches = "tight")

五、教育程度分布

conciseData["教育程度"] = conciseData["教育程度"].apply(lambda x:x.replace(",","").replace(" ","").replace("短期周转","") \.replace("","")if isinstance(x,str) else "")
conciseData["教育程度"] = conciseData[~conciseData["教育程度"].isin(["其他借款","投资创业","短期周转","装修借款","请选择","购车借款","专科","大专高中或以下",""])]["教育程度"].dropna()
(conciseData["教育程度"].value_counts()/sum(conciseData["教育程度"].value_counts())).plot.pie(figsize=(5,5),autopct='%.1f%%',textprops = {'fontsize':17, 'color':'black'})plt.title("教育程度分布图",fontsize=20)
plt.ylabel("")
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),fontsize=15)
plt.savefig("教育程度分布图.jpg",dpi=500,bbox_inches = "tight")

六、借款人年龄分布

year = conciseData["出生日期"].apply(lambda x:x.split("/")[0]).value_counts()/len(conciseData["出生日期"])*100year = year.sort_index()[10:-5]
plt.figure(figsize=(16,8))
plt.title("借款人年龄分布图",fontsize=20)
plt.ylabel("百分比/%",size=20)
# plt.tick_params(labelsize=15)
plt.xticks(rotation=45,fontsize=15)
plt.yticks(fontsize=15)
# plt.grid(linestyle=":", color="b", linewidth=1)
plt.bar(year.index,year,color=["grey","gold","darkviolet","turquoise","r","g","b","c","k","darkorange","lightgreen","plum", "tan","khaki", "pink", "skyblue","lawngreen","salmon"])
plt.savefig("借款人年龄分布图.jpg",dpi=500,bbox_inches = "tight")

七、借款人职位分布

position = (conciseData["职位"].value_counts()/len(conciseData["职位"])*100)[:25]plt.figure(figsize=(16,8))
plt.title("借款人职位分布图",fontsize=20)
plt.ylabel("百分比/%",size=20)
# plt.tick_params(labelsize=15)
plt.xticks(rotation=60,fontsize=14)
plt.yticks(fontsize=15)
# plt.grid(linestyle=":", color="b", linewidth=1)
plt.bar(position.index,position,color=["grey","gold","darkviolet","turquoise","r","g","b","c","k","darkorange","lightgreen","plum", "tan","khaki", "pink", "skyblue","lawngreen","salmon"])
plt.savefig("借款人职位分布图.jpg",dpi=500,bbox_inches = "tight")

八、借款人行业分布

ind = (conciseData["行业"].value_counts()/len(conciseData["职位"])*100)[:15]
plt.figure(figsize=(16,8))
plt.title("借款人行业分布图",fontsize=20)
plt.ylabel("百分比/%",size=20)
# plt.tick_params(labelsize=15)
plt.xticks(rotation=60,fontsize=20)
plt.yticks(fontsize=20)
# plt.grid(linestyle=":", color="b", linewidth=1)
plt.bar(ind.index,ind,color=["grey","gold","darkviolet","turquoise","r","g","b","c","k","darkorange","lightgreen","plum", "tan","khaki", "pink", "skyblue","lawngreen","salmon"])
plt.savefig("借款人行业分布图.jpg",dpi=500,bbox_inches = "tight")

九、借款金额分布图

conciseData["借款金额"] = conciseData["借款金额"].apply(lambda x:str(int(x))+"元")
loanAmount = conciseData["借款金额"].value_counts().iloc[:10]/sum(conciseData["借款金额"].value_counts().iloc[:10])*100
# plt.figure(figsize=(16,8))
plt.title("借款金额分布图",fontsize=20)
plt.ylabel("百分比/%",size=20)
plt.xticks(rotation=60,fontsize=20)
plt.yticks(fontsize=15)
# plt.grid(linestyle=":", color="b", linewidth=1)
plt.bar(loanAmount.index,loanAmount,color=["grey","gold","darkviolet","turquoise","r","g","b","c","k","darkorange","lightgreen","plum", "tan","khaki", "pink", "skyblue","lawngreen","salmon"])
plt.savefig("借款人金额分布图.jpg",dpi=500,bbox_inches = "tight")

十、借款人收入分布

salary = (conciseData["收入"].value_counts()[:7]/sum(conciseData["收入"].value_counts()[:7]))*100
salary = salary[["1000元以下","1001-2000元","2000-5000元","5000-10000元","10000-20000元","20000-50000元","50000元以上"]]
# plt.figure(figsize=(16,8))
plt.title("借款人收入分布图",fontsize=20)
plt.ylabel("百分比/%",size=20)
# plt.tick_params(labelsize=15)
plt.xticks(rotation=60,fontsize=20)
plt.yticks(fontsize=15)
# plt.grid(linestyle=":", color="b", linewidth=1)
plt.bar(salary.index,salary,color=["grey","gold","darkviolet","turquoise","r","g","b","c","k","darkorange","lightgreen","plum", "tan","khaki", "pink", "skyblue","lawngreen","salmon"])
plt.savefig("借款人收入分布图.jpg",dpi=500,bbox_inches = "tight")

十一、婚姻状况分布

conciseData["婚姻状况"].dropna().value_counts().plot.pie(figsize=(5,5),autopct='%.1f%%',textprops = {'fontsize':17, 'color':'black'})
plt.title("婚姻状况分布图",fontsize=20)
plt.ylabel("")
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),fontsize=15)
plt.savefig("婚姻状况分布图.jpg",dpi=500,bbox_inches = "tight")

十二、车贷情况

conciseData["车贷"].dropna().value_counts().plot.pie(figsize=(5,5),autopct='%.1f%%',textprops = {'fontsize':17, 'color':'black'})
plt.title("车贷情况分布图",fontsize=20)
plt.ylabel("")
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),fontsize=15)
plt.savefig("车贷情况分布图.jpg",dpi=500,bbox_inches = "tight")

十三、房贷情况

conciseData["房贷"].dropna().value_counts().plot.pie(figsize=(5,5),autopct='%.1f%%',textprops = {'fontsize':17, 'color':'black'})
plt.title("房贷情况分布图",fontsize=20)
plt.ylabel("")
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),fontsize=15)
plt.savefig("房贷情况分布图.jpg",dpi=500,bbox_inches = "tight")

用python处理28万条人人贷数据,告诉你最详细的借款人结构分布情况相关推荐

  1. python房价数据分析统计服_Python 爬取分析全国 12 个城市 4 万条房价信息,告诉你该怎样买房?...

    原标题:Python 爬取分析全国 12 个城市 4 万条房价信息,告诉你该怎样买房? 作者 | 月小水长 责编 | 伍杏玲通过分页.线程池.代理池等技术,快速爬取链家网近4万条在售二手房信息,速度可 ...

  2. python获取游戏数据_Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是.........

    原标题:Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是...... 作者 |量化小白H 责编 | 胡巍巍 本文爬取了豆瓣游戏网站上所有可见的游戏评分数据进行分析,全文包括以下几 ...

  3. Python看春运,万条拼车数据背后的春节迁徙地图

    Python看春运,万条拼车数据背后的春节迁徙地图 今天是正月初九,春运返程也已过半.这篇文章,作者对北京.上海.广州.深圳.杭州等地 1万多条出行数据进行分析,得出了一些有意思的结论,并且绘制了这几 ...

  4. Python爬取2万条相亲网站数据!看看中国单身男女都在挑什么!

    想必昨天的七夕节,一定是有人欢喜有人忧的一天,朋友圈里的晒照惹恼了我的一个程序员朋友,在昨晚怒爬2万条相亲网站数据,做了一次相亲男女画像! 话不多说,我们今天就以"世纪佳缘"这个相 ...

  5. 26万条抖音数据背后的推荐逻辑以及严重失调的男女比例

    数据洞察 1.数据介绍 数据区间是2018年2月1日-5月10日,历时两个月,累计260968条. 采集过程中,对作者做了去重处理,也就是说每个作者只取了TA的一条视频数据. 这也代表着我们拥有26W ...

  6. 用300万考研党的数据告诉你:为什么我们要拼命考研?

    用300万考研党的数据告诉你:为什么我们要拼命考研? 这是黄小斜的第101篇文章 作者 l 黄小斜来源 l 微信公众号[程序员黄小斜](ID:AntCoder) 转载请联系作者微信(ID:john_j ...

  7. Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是......

    作者 | 量化小白H 责编 | 胡巍巍 Python规划学习路线图,速领取? https://edu.csdn.net/topic/python115?utm_source=csdn_bw 本文爬取了 ...

  8. 第六十七期:Python爬虫44万条数据揭秘:如何成为网易音乐评论区的网红段子手

    获取数据,其实逻辑并不复杂:爬取歌单列表里的所有歌单url.进入每篇歌单爬取所有歌曲url,去重.进入每首歌曲首页爬取热评,汇总. 作者:嗨学python来源:今日头条 获取数据 其实逻辑并不复杂: ...

  9. Python 爬取分析全国 12 个城市 4 万条房价信息,告诉你该怎样买房?

    作者 | 月小水长 责编 | 伍杏玲 2019程序员转型学什么? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 通过分页.线程池.代理池等技术, ...

最新文章

  1. BEP 7:CUDA外部内存管理插件(下)
  2. android id 重名_Android App 自定义权限重名不能安装解决办法
  3. oracle离线文档查dbms_小白小记-logminer工具分析离线归档日志
  4. ABAP实例:如何设计和使用自定义的权限对象
  5. 参加JavaEE培训需要什么条件
  6. 使用Eclipsephp工具打开Thinkphp为什么会有红色的波浪线报警?
  7. ASP.NET Core Web 项目文件介绍
  8. MSP430F5529 DriverLib 库函数学习笔记(五)定时器A
  9. HTML4基本编译原理,Stanford公开课《编译原理》学习笔记(1~4课)
  10. samba在企业网应用
  11. CF935D Fafa and Ancient Alphabet 概率dp(递推)
  12. 不是没想过放弃,就觉得还能再坚持
  13. mac实用小技巧分享之使Mac快速锁屏与睡眠
  14. oracle not like优化,oracle的like优化,对比了一下,效果确实比like好些。
  15. Python进阶笔记(2):自动化处理文件
  16. Java中Arrays.sort()的三种常用用法(自定义排序规则)
  17. 2021-11-12 (2018 CCPC 吉林站)
  18. vue实现横向或竖向滑动轮播
  19. 高等数学(第七版)同济大学 习题12-1 个人解答
  20. 3d渲染服务器系统,3d渲染云服务器

热门文章

  1. java生成wav格式文件_Python--生成Wav格式文件
  2. 史蒂夫·乔布斯刚刚杀死Windows Mobile
  3. return的用法?
  4. oracle dcd设置,叶摇 » Blog Archive » os.tcp_keepalive 和ORACLE DCD
  5. 如何进行销售团队建设?
  6. 搭建NTP时间同步服务器
  7. 数值分析:数据插值方法
  8. 【Hexo搭建个人博客】:yilia主题配置(七) - 自定义Subnav图标
  9. 新站如何推广 新站推广的基础方法
  10. 小米要以万元折叠手机赶超三星和华为?这可能是虚幻的梦想