banner
大数据平台>大数据技术与应用>python抓取并分析数据

使用python抓取并分析数据—人人贷(urllib)

作者: afenxi来源: afenxi时间:2017-03-01 14:01:43

摘要:本篇文章是使用python抓取数据的第二篇,使用urllib方法对人人贷网站贷款列表页进行抓取。并从中获取贷款用户,金额和期限的分布情况。

本篇文章是使用python抓取数据的第二篇,使用urllib方法对人人贷网站贷款列表页进行抓取。并从中获取贷款用户,金额和期限的分布情况。

使用python抓取并分析数据—人人贷(urllib)-数据分析网

准备工作

首先是准备工作,导入需要使用的库文件,re用于通过正则提取数据,time用于设置Sleep时间,numpy用于数值计算,pandas用于数据汇总和分析,urllib用于数据抓取,matplotlib用于数据可视化。

#导入所需库文件

import re

import time

import numpy as np

import pandas as pd

import urllib.request

import matplotlib.pyplot as plt

抓取列表页

开始抓取前设置列表页的URL地址,其中page-后面的部分是页码,将在后面动态生成。url=http://www.we.com/loan#page-

设置请求的头文件信息,这部分内容可以在Chrome的开发者工具中获得,或者在网站搜索头文件信息。

#设置请求头文件信息

headers = )

#查看表的维度,1020行,4列

rrd.shape

(1020, 4)

#查看数据表前5行

rrd.head()

使用python抓取并分析数据—人人贷(urllib)-数据分析网

#查看字段类型

rrd.dtypes

amount      object

interest    object

months      object

title       object

dtype: object

#更改amount,interest和months字段的格式

rrd[[amount,interest,months]]=rrd[[amount,interest,months]].astype(np.float64)

#再次查看更改后的字段格式

rrd.dtypes

amount      float64

interest    float64

months      float64

title        object

dtype: object

贷款数据关键指标

查看数据表中的贷款数据的关键指标,如贷款总金额,总笔数,人均贷款金额和贷款金额范围等等。

#总贷款金额和笔数

rrd[amount].sum(),rrd[amount].count()

(95390400.0, 1020)

#平均贷款金额

rrd[amount].sum()/rrd[amount].count()

93520.0

#贷款金额的最大值和最小值

rrd[amount].max(),rrd[amount].min()

(262000.0, 15400.0)

贷款总金额9539万元,笔数1020笔。每一笔的平均贷款金额为93520元。贷款金额最大值为262000元,最小值为15400元。

贷款目的金额及笔数分布

按贷款目的对比贷款金额及笔数的分布情况,首先分别按贷款目的汇总贷款金额和笔数数据。

#按贷款目的汇总贷款笔数

title_count=rrd.groupby(title)[amount].agg(count)

#按贷款目的汇总贷款金额

title_sum=rrd.groupby(title)[amount].agg(sum)

绘制图表查看金额和笔数分布情况。从图表中可以看出日常生活消费的贷款笔数最多,但总金额较低,而资金周转的贷款笔数较低,但总贷款金额较大。

#绘制贷款用户金额及笔数分布图

plt.rc(font, family=STXihei, size=15)

a=np.array([1,2,3,4,5])

plt.figure()

plt.barh([1,2,3,4,5],title_count,color=#99CC01,alpha=0.8,align=center,edgecolor=white)

plt.barh([1,2,3,4,5],-rrd_title,color=#39A2E1,alpha=0.8,align=center,edgecolor=white)

plt.ylabel(贷款用途分类)

plt.title(贷款用户金额及笔数)

plt.xticks(a,())

plt.yticks(a,(资金周转,装修,增购新车,购买货物,日常生活消费))

plt.show()

使用python抓取并分析数据—人人贷(urllib)-数据分析网

贷款期限分布

按贷款期限对贷款笔数进行汇总,查看不同期限的贷款笔数分布情况。首先对数据按期限进行汇总。

#按期限汇总贷款笔数

month_count=rrd.groupby(months)[amount].agg(count)

绘制图表,查看贷款期限分布情况,大部分贷款期限为36个月,24个月和48个月的贷款数量明显较少。

#汇总不同期限贷款笔数分布图

plt.rc(font, family=STXihei, size=15)

a=np.array([1,2,3])

plt.bar([1,2,3],month_count,color=#99CC01,alpha=0.8,align=center,edgecolor=white)

plt.xlabel(期限分布)

plt.ylabel(贷款笔数)

plt.title(不同期限的贷款笔数分布)

plt.legend([贷款笔数], loc=best)

plt.grid(color=#95a5a6,linestyle=--, linewidth=1,axis=y,alpha=0.4)

plt.xticks(a,([24个月,36个月,48个月]))

plt.show()

使用python抓取并分析数据—人人贷(urllib)-数据分析网

贷款金额分布

对贷款金额进行分组,5万元一组,共分为6组。然后查看各个分组内贷款金额的情况。首先对贷款金额进行分组,然后按分组对金额进行汇总。

#对贷款金额进行分组

bins = [0, 50000, 100000, 150000, 200000, 250000, 300000]

amount_group = [0-5万, 5-10万, 10-15万, 15-20万,20-25万,25-30万]

rrd[amount_group] = pd.cut(rrd[amount], bins, labels=amount_group)

#查看分组后的数据表

rrd.head()

使用python抓取并分析数据—人人贷(urllib)-数据分析网

#按贷款金额分组汇总笔数

amount_group=rrd.groupby(amount_group)[amount_group].agg(len)

绘制贷款用户金额分布图,从图表中可以看出,5-10万元的贷款笔数做多,其次为0-5万元。大金额的贷款笔数较少。

#绘制贷款用户金额分布图

plt.rc(font, family=STXihei, size=13)

a=np.array([1,2,3,4,5,6])

plt.bar([1,2,3,4,5,6],amount_group,color=#99CC01,alpha=0.8,align=center,edgecolor=white)

plt.xlabel(金额分组)

plt.ylabel(贷款笔数)

plt.title(贷款用户金额分布)

plt.legend([笔数], loc=upper right)

plt.grid(color=#95a5a6,linestyle=--, linewidth=1,axis=y,alpha=0.4)

plt.xticks(a,(0-5万, 5-10万, 10-15万, 15-20万,20-25万,25-30万))

plt.show()

使用python抓取并分析数据—人人贷(urllib)-数据分析网

banner
看过还想看
可能还想看
最新文章
Yonghong Z-Suite一站式大数据分析平台 —— 以卓越的数据技术为客户创造价值,实现客户成功。