A轮公司数据分析面试经验
时间:2022-07-28
本文章向大家介绍A轮公司数据分析面试经验,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Part. 1 介绍
最近疫情参加了线上面试,面试官给了一个csv数据集。
数据字段含义:
item_id: 商品ID;
shop_id: 店铺ID;
insert_time: 更新时间;
volume: 月销量;
cprice: 实际价格
任务:(分别使用SQL和python代码完成)
1、找出一天内有多次更新的商品ID
2、对于一天内有多次更新的商品,只保留当天最后一条记录,去掉其他记录
3、分析商品的最后更新时间分布,看能否得出有价值结论
Part. 2 SQL方法:
数据格式化
alter table taobao_data add 日期 date;
update taobao_data set 日期=cast(insert_time as date);
alter table taobao_data add 精准日期 datetime;
update taobao_data set 精准日期=cast(insert_time as datetime);
当我将cvs导入MySQL的时候发现日期他是varchar形式的,所以要用cast函数进行格式转换。因为2,3题需要计算当天的指标,所以我们日期格式化的时候要加上以天为单位的日期。
第一题:
select item_id,日期,count(item_id) as 修改量
from
taobao_data
GROUP BY 日期,item_id
having 修改量>=2
ORDER BY 修改量 desc
一天内更新多次的记录也就是数据是>1 或者是>=2 两种写法都可以,顺序是先按照每天日期分组,再按照item_id,也就是商品分组。比如说1月8号为一组,在这组里面再以某个商品为一组,就可以count出他一天的交易量。
第二题:
delete from taobao_data
where 精准日期=
(select 精准日期
from
(select item_id,row_number() over (partition by item_id,日期 order by 精准日期 desc) as 排序,精准日期
from
taobao_data
where item_id in
(select item_id
from taobao_data
GROUP BY 日期,item_id
having count(item_id)>=2
)
)a
where 排序 >1
)
这题写的复杂,应该有效率更高的写法。
思路:顺延第一题,找出一天内修改多次的数据,因为只有这些数据需要删除。之后按照窗口函数,先对item分组再对日期分组,之后按照精准日期就是具体哪一秒的时间进行排序,下图查询结果可以看到,按照降序后的结果最新的日期会排在第一位,所以我们直接进行where 排序>1 筛选即可,然后删除。
第三题:
导出到Excel进行透视表操作:
得出结论:发现在24点和22点是更新商品的高峰期。
- 猜测可能根据店铺下单量在晚上的时候降低的数据,卖家认为在这个时间段去修改宝贝不会造成用户看到的宝贝详细和实际内容不符合导致用户误解。
- 猜测对于店铺人员不多,那么初步推测店铺人员在上班的过程当中是充当客服的角色,所以白天上班是没有机会和时间去更新商品内容的,所以选择夜晚修改宝贝。
- 考虑到卖家修改时间集中在夜晚,为了不影响卖家休息,建议开发定时修改宝贝模块。
Part. 3 Python方法
导入数据,日期格式化:
第一题:
直接用groupby,计算count,在筛选>1即可
第二题:
用rank方法可以实现SQL的 窗口函数,对day和itemid分组,在进行insert_time排序,然后row_number<2 也就是等于1的保留,因为这条数据是当天最新数据。
第三题:
转换成小时,导入matplotlib 进行绘图,结论同上。
这次的面试题题目是顺承关系,起到提示作用,所以比较友好。主要还是涉及到SQL和pandas库的基本操作。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 后端服务慢成狗?试试这 7 招!
- 高性能无锁并发框架 Disruptor,太强了!
- Spring Boot 太狠了,一口气发布了 3 个版本!
- 贷款违约预测-Task2 数据分析
- Redis 最牛实践:业务层面和运维层面优化!
- 一个 randomkey 命令导致的 Redis 事故。。
- 分布式锁(数据库、Redis、ZK)拍了拍你
- 贷款违约预测-Task3 特征工程
- 用SQL代替DSL查询ElasticSearch怎样?
- 面试造飞机:面对Redis持久化连环Call,你还顶得住吗?
- 体验spring-boot-devtools热部署,流畅且不失强大,Jrebel呢?
- 贷款诈骗 x 摸版0day + 实战预警脚本
- 你不知道的 Linux 使用技巧
- 一文详解 Websocket 的前世今生
- 实例 | 教你用Python写一个电信客户流失预测模型