【面试题

下表是某金融App的数据,请结合Excel数据集中的数据完成下列问题(某金融公司面试题,文末有数据下载 )

原始数据如下所示:

为方便后期分析,我们对数据进行分类。数据通常分为3类:用户数据、行为数据、产品数据。

用户数据指用户基本情况,行为数据指用户做过什么,产品数据是指平台卖的东西。

原始数据中年龄、性别、手机省份、手机城市、注册时间、用户注册终端、用户注册渠道、会员级别等信息为用户数据,其余数据为行为数据,无产品数据。

因为行为数据过多不利于分析,我们把行为数据中与最近一次登陆相关的信息提取出来,列为最近登录数据。

把是否...7天内...类的问题提取出来,作为活跃数据。

行为数据如下:

问题:

1.理解数据

如果将该数据建立一个数据库,有哪些表,各表之间的关系是什么?

2.数据整理

假设该Excel数据是一个数据表(Datatable),请用SQL写出:

(1)最近一次登录城市各有多少用户在表中?

(2)“用户ID”之间的可能关系?(比如家庭成员,情侣等)

(3)请找出数据表中的异常值,并以此阐述你如何控制数据质量并以本数据为例设计数据质量报表。

【解题思路】

1.理解数据

如果将该数据建立一个数据,有哪些表,各表之间的关系是什么?

和面试官沟通该金融App后,了解了该产品的业务流程,画出下图:

拆分为4个表(也就是Excel对应的各个sheet表):

(1)“用户信息”表中包含用户id,年龄,性别等基本信息。

其中用户id已进行加密,手机省份和手机城市是注册所在地,用户注册终端是注册时的终端(电脑端web、苹果手机、安卓手机),用户注册渠道展示的是渠道ID。

(2)“最近登录”表中是最近一次登陆ip,展示的是已加密的ip。

(3)“行为数据”表中,投资金额经过等比例放大。

表中字段含义,首投距今时间(天)是固收(含债转)_首次投资时间距今天的时间。

最近一次投资距今时间(天)是固收(含债转)_最近一次投资时间 距今天的时间。

首投距注册时长(天)是首次投资距离注册时间,以天为单位。

用户浏览产品期限倾向是指固收含转让区(产品期限:1-3,4-6,7-12,12以上(PC+H5+APP))。

用户浏览产品利率倾向是指固收含转让区(利率:(0,4%],(4%,5.5%],(5.5%,6%],(6%,7.5%],7.5%以上(PC+H5+APP))。

(4)“活跃数据”表中,本月是否有大额回款指本月回款额度1万及以上。

表中字段含义,

是否访问7天内未注册:首次访问到注册时间>7天,或有访问已超过7天但未注册。

是否注册7天内未充值:注册到首次充值时间>7天,或有注册已超过7天但未充值。

是否注册7天内未投资:注册到首次投资时间>7天,或有注册已超过7天但未投资。

是否托管7天内未充值:托管到首次充值时间>7天,或有托管已超过7天但未充值。

是否托管7天内未投资:托管到首次投资时间>7天,或有托管已超过7天但未投资。

是否充值7天内未投资:最近一次充值到最近一次投资时间>7天,或最近一次充值已超过7天但未投资。

根据上面的业务分析,建立数据库,建立4个表有用户数据、行为数据、最近登录数据、活跃数据表,各表之间以用户id为主键联结,关系如下图。

2.数据整理

(1)最近一次登录城市各有多少用户在表中?

“最近一次登录”在“最近登陆数据“表中。

“各有”,翻译过来就是“每个城市”。涉及到“每个”到业务问题,要想到《猴子 从零学会SQL》里讲过的用“分组汇总”来实现。

这里分组按用户id,汇总使用count函数进行计数。

select 最近一次登录城市,count(用户id) as 人数
from 最近登陆数据
group by 最近一次登录城市;

输出结果(数据过多仅展示前8行数据):

(2)“用户ID”之间的可能关系?(比如家庭成员,情侣等)

使用多维度拆解分析方法来拆解问题:当最近登录ip相同时,用户之间可能会存在关系。因此,分两步解决该业务问题。

(1)找出ip重复的数据;

(2)找出重复ip对应的用户信息。也就是输出用户id、性别、年龄,最近一次登陆ip等信息,并对最近一次登陆ip进行升序排列。

第1步:找出ip重复的数据

“最近一次登录ip”在“最近登陆数据表“中。

该问题是“找重复数据”类问题,按“最近一次登陆ip”分组(group by),然后使用having来筛选出每组里面次数>1次的就是重复数据。

select 最近一次登陆ip
from 最近登陆数据
group by 最近一次登陆ip
having count(最近一次登陆ip)>1;

第2步:找出重复ip对应的用户信息

输出用户id、性别,年龄,最近一次登陆ip等信息。

select 用户id,最近一次登陆ip
FROM 最近登陆数据
where 最近一次登陆ip in(
select 最近一次登陆ip
from 最近登陆数据
group by 最近一次登陆ip
having count(最近一次登陆ip)>1
);

第3步:联结用户数据表,输出信息

把用户数据作为临时表a,第二步得出的结果作为临时表b,并对所有数据进行升序排列。

select a.用户id,a.性别,a.年龄,b.最近一次登陆ip
from 用户数据 as a right join(
select 用户id,最近一次登陆ip
from 最近登陆数据
where 最近一次登陆ip in(
select 最近一次登陆ip
from 最近登陆数据
group by 最近一次登陆ip
having count(最近一次登陆ip)>1)) as b
on a.用户id=b.用户id
order by b.最近一次登陆ip asc;

查询结果:

可以看出用户id(1、2)具有相同ip地址,都为女性,年龄相差20岁,可以推测是母女关系。

用户id(3、4)具有相同ip地址,性别一男一女,年龄相差6岁,可以推测是夫妻关系。

用户id(5、6)具有相同ip地址,性别一男一女,年龄相差8岁,可以推测是夫妻关系。

用户id(7、8)具有相同ip地址,性别一男一女,年龄相差3岁,可以推测是夫妻关系。

(3)请找出数据表中的异常值,并以此阐述你如何控制数据质量并以本数据为例设计数据质量报表。

根据《描述统计分析》里讲过的异常值方法,我们可以使用Tukey's test方法找出宜昌至的范围。

我们以该案例中的“年龄”为例,展示如何找出异常值。

第一步:计算出上四分位数

首先我们增加一列行号,使用“@”自定义“行号”这一变量,并用赋值运算符::=对“@行号”赋值为0。

select @行号 := 0;

结果如下:

然后,我们使用内联结把原表格和新增的一列联结在一起,形成新的表格,记为临时表r。

select 年龄,@行号 := 0
from 用户数据
inner join ( select @行号 := 0 ) as c;

结果如下:

然后,用赋值运算符“:=”赋值行号为“@行号:=@行号+1”,并该列名为行号,进行升序排列,把该表结果记为临时表t。

select 年龄,@行号 := @行号 + 1 as 行号
from 用户数据
inner join ( select @行号 := 0 ) as c
order by 年龄 asc;

最后,使用sql的floor函数来计算下四分位数,floor函数:向下舍入为指定小数位数。

select avg(年龄) as 下四分位数
from(
select 年龄,@行号 := @行号 + 1 as 行号
from 用户数据
inner join ( select @行号 := 0 ) as c
order by 年龄 asc ) as d
where 行号 = floor(( @行号+1) /4 );

同理,使用3*(n+1)/4可以用来计算上四分位数。查询结果如下:

第二步,用Tukey's test方法中k=1.5来找出中度异常值。

可以使用where函数找出异常值——在最大估算值和最小估算值之外的数据。

select 年龄,count(*) as 人数,count(*)/5000 as 人数占比
from 用户数据
where 年龄>(48+1.5*(48-32)) or 年龄<(32-1.5*(48-32))
group by 年龄;

查询结果如下:

用同样的方法我们可以计算出投资金额的异常值。结果如下(因数据较多只选取部分数据呈现):

第三步:制作数据质量报表,以年龄数据为例。

把第二步中得到的结果作为临时表e,用sum函数计算出年龄异常值的总人数与总人数占比。

select 年龄,sum(人数) as 总人数,sum(人数)/5000 as 总人数占比
from 临时表e ;

结果如下:

按照上述步骤可得投资金额异常值的总人数与总人数占比,结果如下:

数据质量报表如下:

异常值的发生原因可以分为两类:人为异常值和自然异常值。

自然异常值不是由于错误产生的,无需避免。

人为异常值可能由于数据输入错误,故意填写错误,数据处理错误等原因产生,这些情况是可以尽量避免的,这就要求我们做到以下几点:

  1. 认真细心。避免数据输入错误。

  2. 做好用户宣传,尽量填写真实信息。

  3. 提高提取数据的正确率,确保数据来源准确。

【本题考点】

1.考察对业务的理解能力,拿到数据以后,不是立马开始分析,而是要先理解数据,对数据分类。

2.“每个问题”要想到用分组汇总来实现。

3.查找出重复数据。对数据项进行分组,找出数量大于2的数据即为重复值。

4.利用sql计算四分位数,找出异常值。增加一列行号并升序排列,利用公式取出上四分位数和下四分位数,找出最小和最大估计值,在此范围外的即为异常值。

5.excel观察数据特征:平均数、中位数、众数。

6.掌握常用的分析方法解决问题的能力。

推荐:人工智能时代的必学技能

金融行业实战项目:如何理解业务?相关推荐

  1. 通过STC12C5A08S2实战项目来理解单片机是怎么工作的

    通过STC12C5A08S2实战项目来理解单片机是怎么工作的 在原理图当中,实际上也把按键流到了外部中断接口上,也就是会把外部中断零和外部中断一实际上是留了两个按键,留了两个按键的接口,这样的话,你也 ...

  2. 如何将dataset中的值赋值给datatable_金融行业实战项目:如何理解业务?

    [面试题] 下表是某金融App的数据,请结合Excel数据集中的数据完成下列问题(某金融公司面试题,文末有数据下载 ) 原始数据如下所示: 为方便后期分析,我们对数据进行分类.数据通常分为3类:用户数 ...

  3. .NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务

    连着两天更新叙述性的文章大家可别以为我转行了!哈哈!今天就继续讲讲我们的.NET Core实战项目之CMS系统的教程吧!这个系列教程拖得太久了,所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层 ...

  4. redis的实战项目01_模拟短信登录业务

    redis的实战项目01_短信登录 一.导入黑马点评项目 1. 数据库: 2. 单体项目介绍: 二.基于session实现登录 1.发送短信验证码 1.理论流程 2.代码操作: 2.短信验证码登录.注 ...

  5. 未明学院:量化金融训练营全新升级加量不加价,全副武装金融行业实战技能!

    在当下的"互联网+""大数据"社会,金融科技(FinTech)已经成为了金融行业新的发展方向.根据金融稳定理事会(FSB)的定义,金融科技主要是指由大数据.区块 ...

  6. react实战项目_前端学习路线图--从网页设计到项目开发

    前端学习路线是螺旋上升的,需要耗费的时间和精力不比其他编程的少,由于其稳健性的特点,使其成为大多数企业开发的刚需编程语言.在网上看到有很多的前端学习路线图,但大部分的前端学习路线图是很零碎的,没有系统 ...

  7. C# WebApi+Task+WebSocket实战项目演练(四)

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第四部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...

  8. 01Prism WPF 入门实战 - 项目准备

    1.概要 这一系列将进行Prism+WPF技术的实战讲解.实战项目内容选型为Email邮件收发的客户端(WeMail),项目结构简单方便大家理解. 相关技术:C#.WPF.Prism 软件开发环境:V ...

  9. .NET Core实战项目之CMS 第十七章 CMS网站系统的部署

    目前我们的.NET Core实战项目之CMS系列教程基本走到尾声了,通过这一系列的学习你应该能够轻松应对.NET Core的日常开发了!当然这个CMS系统的一些逻辑处理还需要优化,如没有引入日志组件以 ...

  10. .NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计

    这两天比较忙,周末也在加班,所以更新的就慢了一点,不过没关系,今天我们就进行千呼万唤的系统开发框架的设计.不知道上篇关于架构设计的文章大家有没有阅读,如果阅读后相信一定对架构设计有了更近一部的理解,如 ...

最新文章

  1. [YTU]_2383 ( 矩形类定义【C++】)
  2. 抓项目、惠民生、促发展,雨花铿锵前进
  3. python相比于excel的优势_都在讨论Python能否取代Excel,那有没有人想到它
  4. stats | 使用(偏)自相关函数判断ARMA模型的阶数
  5. 微机原理8086汇编语言上机——Masm环境搭建与常用汇编调试指令
  6. mysql中表结构语句_mysql中表数据与表结构复制语句
  7. 今天遇到一个SQL的问题
  8. $.type 怎么精确判断对象类型的 --(源码学习2)
  9. 高响应比优先调度算法(HRRN)
  10. 分享几个纯净版Windows系统下载网站
  11. 01_01_三步开启C语言编程_小白篇
  12. DSP中EALLOW,EDIS,EINT,DINT,ERTM,DRTM的作用
  13. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
  14. 随机函数(随机取数)
  15. pdb 符号文件 如何生成的,作用
  16. U盘启动制作教程/实例 新手制作启动盘必看! [20081120]
  17. Cucumber 1 -- 什么是BDD、Cucumber?它们的关系是什么?
  18. CTO技术前瞻性预测:移动互联网十大趋势
  19. 理工科Word论文排版(章节自动标号、公式自动标号、图片自动标号、表格自动标号、标号交叉引用、公式参数介绍等),持续更新
  20. 谁动了我的奶酪读后感一篇

热门文章

  1. 分区助手克隆linux,PartAssist 9.1+7.0 AOMEI 分区助手 免安装版 (简/繁/英 PE/Win 通用)...
  2. csgo安全服务器显示我无法加入vac,为什么进入CSGO之后显示我无法加入VAC安全服务器?在线等!急...
  3. 高仿小米盒子UI桌面
  4. 新东方的全套英语资料,相当权威版!!!
  5. [译]区块链技术全解析入门版
  6. 淘宝天猫商城的推广方法大总结
  7. c语言实验报告模板电子版,c语言实验报告模板1.pdf
  8. android投屏小米盒子,Mibox S 小米盒子国际版:可能是 2019 新年最值的原生 AndroidTV...
  9. 微信模板消息,动态配置
  10. c语言皮尔森系数程序,皮尔森相关系数(Pearson correlation coefficient)-Go语言中文社区...