mysql 相邻记录时间差_Python与SQL对比:处理用户记录相邻的时间差

文字标题看起来好拗口...的说...

先来一个主题案例吧,方便大家理解:

我有一家超市,运营两年了,系统存储了所有用户的购买记录,我想要分析一下每个用户进店的时间间隔是怎样的(比如A客户第一次进店与第二次进店间隔5天,第二次进店与第三次进店间隔7天......),咋办呢?(听到这里明白了吗...)

我们用 Python 的pandas和SQL同时做一下这个需求,互相比较:

具体数据如下:

id是客户ID,time是进店购买的时间

7e7594b8e0ac46bea30eff017532989c.png

先来一个SQL代码,在 MySQL 上运行的:

b8a165316acaf00f86c6a4da85243c2d.png

处理结果:

f4d8bf2481e0fee24dd83b8a96d8b598.png

乍眼一看,SQL好强大啊,一行搞定需求,但是语言理解上略过逊色,不好读不好懂。

那么如果用Python的pandas来处理呢:

1.先导入一下包和数据源:

82861596e8d6276269942e3d4c87bb3f.png

2.按照id和时间排序:

cc30c1b9b58a405b9e028ff33e349b6f.png

3.groupby与shift组合使用,依据id列将time列进行偏移:

9ae090eb932f25d0766d590ce78c7953.png

偏移的结果:

59ddd01bfd06913b458cd09e92d7b5fc.png

4.基于偏移后的dataframe进行两个时间列做差:

461d7d2446bb486d163b717cce4ff6dd.png

做差结果如下:

6372de85defe51590cedacbf9721b2f4.png

5.这里会发现结果还是不尽人意,diff列的数值不方便后期计算,那么我们自定义一个函数来搞一下:

8e0bf8a168638360f46c07c746b85256.png

最终结果如下:

ad8be95b305140b124cf01ba7fee370e.png

同样是行列之间,pandas的DataFrame操作更加直观,SQL则更加简练,各有春秋!

技术没有高低之分,只是使用技术人的水平不同而已,献丑献丑!

个人原创,转载请联系! 个人原创,转载请联系! 个人原创,转载请联系!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值