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

栏目: 数据库 · 发布时间: 7年前

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

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

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

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

具体数据如下:

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

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

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

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

处理结果:

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

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

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

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

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

2.按照id和时间排序:

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

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

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

偏移的结果:

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

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

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

做差结果如下:

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

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

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

最终结果如下:

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

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

<b style="font-size:14px;font-family:"Helvetica Neue", STHeiti, 微软雅黑, "Microsoft YaHei", Helvetica, Arial, sans-serif;">技术没有高低之分,只是使用技术人的水平不同而已,献丑献丑!</b>

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

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

本文由马修 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。

转载、引用前需联系作者,并署名作者且注明文章出处。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python for Data Analysis

Python for Data Analysis

Wes McKinney / O'Reilly Media / 2012-11-1 / USD 39.99

Finding great data analysts is difficult. Despite the explosive growth of data in industries ranging from manufacturing and retail to high technology, finance, and healthcare, learning and accessing d......一起来看看 《Python for Data Analysis》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具