新闻中心
利用SQL分析数据-互联网金融(怎么用sql分析数据)
一、简介
互联网金融由于其门槛极低,灵活方便等特点,成为了现在人们投资理财的一个重要选择。本次对某互联网金融公司的业务进行分析。
二、数据来源
数据来源于数据分析学习社区,由猴子老师提供。
三、构建问题
用户的男女比例、年龄分布情况如何?用户的地域分布如何?用户对产品的偏好如何?用户的行为偏好是怎么样的?1).字段解释
首先,我们先看一看数据字段的解释:

由于我使用的英文版的naviat数据库管理软件,因此为了方便我将列名进行了修改,如下:

2). 分析数据
下来开始分析数据
年龄分析首先我想查看一下用户的年龄分别情况,分析这一个完全是出于好奇
-- max and min values of age and invest amountselect MAX(age+0) As max_age, Min(age+0) as min_age,round(AVG(age+0),0) as avg_age from dataset;这里代码有个地方要注意,当需要找出最大值max和最小值min的时候,因为这里的数据类型是VATCHAR,所以一定要在后面加上一个‘0’,不然的话会出错,不知道其他平台是不是也是这样,我使用的是MAC的OS。得到结果:

最大年龄87,最小年龄10,平均年龄为41. 接下来研究一下用户年龄的分布:
-- age attribution select age, count(age), ROUND(COUNT(age) / (select count(age) from dataset)*100, 2) as percentage from dataset group by age order by COUNT(age) DESC;得到的结果(部分):

这样并不能很直观的看出用户年龄的分布,于是我制作了一张简单的分布图:

这样可以比较清楚的看到用户的年龄分布,比例最高的用户年龄在25岁到50左右,随着年龄的减小\增大,用户人数逐渐变少。从这里可以看出主要是一些中青年在使用互联网投资的产品。
2. 性别分析
接下来,我们看看用户的性别比例情况:
-- gender attribution select gender, COUNT(*), ROUND(count(*) / (select Count(gender) from dataset)* 100,2) as Percent from dataset group by gender order by COUNT(gender) desc;从代码可以得到如下结果:

这里可以稍稍再优化一点,在百分比的后面加上‘%’,百分号:
-- calculate gender percentage select gende, count(*), concat(round(count(*) / (select count(gender) from dataset) * 100,2), %) as percentage from dataset group by gender order by COUNT(*);
从图可以看出男性人数多于女性人数,说明男性更乐于使用在线投资产品。
3. 资金数量
接下里,我们看看用户投资的资金数量情况。
-- describe invest invest amount select MAX(amount_of_invest+0) as max_amount,MIN(amount_of_invest+0) as min_amount, round(avg(amount_of_invest),2) as avg_amount from dataset;同样先看看最大的投资数、最小投资数还有平均投资数额:

下面看看投资的分布情况:
-- invest arrtibute select amount_of_invest,COUNT(amount_of_invest+0) from dataset -- where count(amount_of_invest) >= 11 group by amount_of_invest order by COUNT(amount_of_invest) DESC;
这里可以看出投资得最多的数额在72000元,投资的数量有大有小,但总的分布情况人民币3.5W到15W区间最多。
4. 地域分布
接下来看看用户的地域分布情况,首先看看哪个省注册的人数最多:
-- location attribute select RANK() OVER (ORDER BY COUNT(*) DESC) as ranking, cellphone_of_provence, count(*), round(count(*) / (select count(*) from dataset),2) as percent from dataset group by cellphone_of_provence order by count(*) desc;用户注册

从上面可以看出广东省注册的用户数是最多的,其次是北京市,江苏省....基本都是我国经济比较发达的省份。
这里我利用Tableau制作了一个对比注册地址和最近一次登录地址的对比图,通过观察数据我发现一个很意思的情况,如下:

蓝色代表的最近一次登录地址,红色代表的注册地址。

上图两张图中红色代表注册地址和蓝色代表最近一次登录地址,可以很清楚的看到,注册地来自世界各国,而在国外登录的却很少,这里可以推断出大家在旅游或者出差的时候注册了,但是并没有使用,回国到家后才开始使用。拥有73位注册用户的广西省,没有一个用户最近在广西登录,并且所在的位置也很奇怪,可以推断出它是一个异常值。
下面看看各个城市的注册用户数量分布情况:
-- attibution of city select cellphone_of_city, COUNT(cellphone_of_city) from dataset group by cellphone_of_city order by COUNT(cellphone_of_city) desc;
这里可以看到北京市注册人数最多,其次是广州市,上海深圳紧随其后,四大一线城市占据了排行榜前四,其次是新一线的南京、直辖市天津,同样是新一线的杭州、武汉也在位列前十。说明客户主要还是集中在大城市,再次应证了用户主要分布在经济比较发达的地区。
5. 终端使用情况
接下来的看看用户终端情况。
首先,我们简单查看一下用户注册的终端使用分布情况。
-- recent_sign_in_terminalselect rank() over(order by count(*) desc) as RANKING, terminal, count(*), round(count(*) / (select count(*) from dataset),4) as percent from dataset group by terminal order by count(*);
下面看看用户最近一次使用的产品终端:
-- sort terminalselect RANK() OVER (ORDER BY COUNT(*) DESC) as RANKING, recent_terminal, count(*) from dataset group by terminal order by count(*) desc;从上面的图片对比可以得知,用户喜爱在WEB网站上注册,更爱在移动端使用产品。
6. 注册时间分析
接下来我们分享一下用户的注册时间。
为了方便查看和统计呢,我创建了一张临时的列表(视图)
-- create a view create view date as select mid(regist_date,1,10) as date from dataset;这里我用到一个字符串截取函数MID,因为本来的日期数据是一个时间戳,而我们这里并不需要那么精确的时间。所以截取了年月日进行分析。
原始的时间数据截取后的日期数据通过截取后的数据我们进行分布排序,列出注册时间最多的前十个月份:
-- date attribute select date, count(*) from date group by date order by count(*) desc limit 10;可以很容易看出来,在2016年10月15日到23日是用户注册的一个高峰,这个时候应该是平台推出来一些活动,可以看出效果很不错。
7. 行为偏好
接下来我们看看用户注册情况。
-- if_sign_in_7 select SUM( CASE WHEN if_sign_in_7 = 是 THEN 1 ELSE 0 END) AS sign_in_7, SUM( CASE WHEN if_sign_in_7 = 否 THEN 1 ELSE 0 END) AS Non_sign_in_7 from dataset;左边为7日内注册,右边为7日内位注册从上面的图中,可以很清楚的看出七日内注册的用户数量远远少于未注册的用户数量。
分析完注册情况,下面我们重点分析一下用户七日内的活动情况。
首先是七日内投资的情况:
-- invest in 7 select count(if_invest_in_7) as total , SUM( CASE WHEN if_invest_in_7 = 是 THEN 1 ELSE 0 END) AS invest_in_7, concat( round( SUM( CASE WHEN if_invest_in_7 = 是 THEN 1 ELSE 0 END ) /COUNT(if_invest_in_7) ,2) ,%) as percent from dataset; 左边为7日内投资的数量,右边为未投资的数量可以看到的是七日内用户投资的比率远远大于未投资的比率。
下面看看用户七日内托管投资的情况。
-- trusteeship in 7select count(if_trusteeship_invest_in_7) as total, sum(case when if_trusteeship_invest_in_7 = 是 then 1 else 0 end) as trusteeship_invset, concat( round( sum( case when if_trusteeship_invest_in_7 = 是 then 1 else 0 end)/count(if_trusteeship_invest_in_7),2),%) as percent from dataset;上面图有一个问题,就是在percent那一列中‘0.76%’,需要修改。
左边为七日内托管投资的数量,右边为未托管投资的数量。通过以上的数据,可以看出用户在七日内的投资率还是很高的,然后七日内用户托管的比率也很高,达到了76%。
下面看看用户七日内充值的情况:
-- if recharge in 7 select count(if_recharge_in_7) as total, sum( case WHEN if_recharge_in_7=是 then 1 else 0 end) as recharge_in_7, concat(round(sum( case when if_recharge_in_7= 是 then 1 else 0 end)/count(if_recharge_in_7),2)*100,%) as percentage from dataset;接下来看一下托管充值的情况:
select count(if_trusteeship_recharge_in_7) as total, sum( CASE when if_trusteeship_recharge_in_7 = 是 then 1 else 0 end) as trusteeship_recharge_in_7, concat( round( sum( CASE when if_trusteeship_recharge_in_7 = 是 then 1 else 0 end) / count(if_trusteeship_recharge_in_7) ,2)*100, %) as percentage from dataset;然后得到结果:
七日内托管充值这里可以看到,七日以内的充值率和七日内托管充值等比率都只有百分之二十几,远不如七日内投资率和七日内托管投资率的比率高。因此这里我们可以得出一个简单的结论,如果托管率提高,那么用户的投资和充值率也会提高。
下面我们在看看用户第一次投资的时间距离注册时间的情况。
-- first invest time to regist time calculate select rank() over(order by count(first_invest_to_regist) desc) as RANKING, first_invest_to_regist as days, count(first_invest_to_regist) as count_amount, CONCAT(round(count(*) / (select count(first_invest_to_regist) from dataset)*100,2),%) as percent from dataset group by first_invest_to_regist order by count(*)desc limit 15;首次投资时间以上的图片可以看出,在用户注册的当天投资的人数占到了总人数的36%,距离注册时间第一为12.72%,呈阶梯状,断崖式下跌。可以得出如果想要提高用户投资的比率,一定要让用户在注册之后就尽快投资。
最后,我们来看看用户对产品的偏好。
-- visit product intrest trenderselect Rank() over(order by count(*) desc) as ranking, user_visit_product_interst_trender, count(user_visit_product_interst_trender), concat( round( count(user_visit_product_interst_trender) / (select count(user_visit_product_interst_trender) from dataset)*100,2),%) as percetage from dataset group by user_visit_product_interst_trender order by count(user_visit_product_interst_trender)DESC;从上面的数据可以看出,将一半的用户对利率4%到5.5%的产品感兴趣,有将近20%的客户对利率为7%的产品感兴趣,说明用户在寻求稳定的同时追求更高的投资回报率。
最后看一下用户对投资产品时间的倾向。
-- visit product time trenderselect Rank() over(order by count(*) desc) as ranking, user_visit_product_time_trender, count(user_visit_product_time_trender), concat( round( count(user_visit_product_time_trender) / (select count(user_visit_product_time_trender) from dataset)*100,2),%) as percetage from dataset group by user_visit_product_time_trender order by count(user_visit_product_time_trender)DESC;从上图和数据可以看出,有将近一半的用户对1年3年时间的投资感兴趣,超过25%的用户对7年以上的投资抱有兴趣。
四、结论与建议
综合以上分析可以得出结果,首先,男性用户比女性用户更加喜爱利用互联网进行投资,用户的年龄主要集中在25岁到50左右的人群中,这部分用户不论是在人的数量上还是在投资的数量上都远远超过其他年龄段段用户。因此在选择目标客户的时候应当这部分的客户作为重点对象。其次,用户主要来自于我国经济比较发达的地区和城市,尤其是四大一线城市,新一线城市紧随其后。因此在对产品进行推广的时候着重考虑大城市。然后,用户更喜欢在电脑上面进行注册,在移动端上使用产品,可以考虑将移动端的注册形式设计成类似电脑端端形式,增加移动端端注册率。再次,从用户注册时间的分析可以看出,用户注册呈集中式爆发注册,说明用户对产品推出的活动非常敏感,可以考虑增加推出更多的活动获取更多的客户来源。然后,应当想办法引导客户使用产品的托管功能,这样能够增加客户投资率和充值率。再次,用户在注册当天进行投资的比率远远大于其他时间,因此,应当首次用户进行其他活动的时间,直接引导客户进行投资。最后,在推荐用户进行投资的时候将投资回报率在4%到5.5的产品或者投资时间在1到3年的产品上进行重点的推荐。