一个朋友在某运动品牌公司上班,老板给他布置了一个处理客户订单数据的任务。要求是根据订单时间和客户id判断生成四个新的数据:
python
一、记录该客户是第几回光顾学习
二、上一次的日期时间是何时3d
三、与上次订单的间隔时间cdn
四、这是一个existing客户仍是一个new客户(见定义)blog
推荐下我本身建立的Python学习交流群960410445,这是Python学习交流的地方,无论你是小白仍是大牛,小编都欢迎,不按期分享干货,包括我整理的一份适合零基础学习Python的资料和入门教程。
排序
文件说明:教程
一、第一列是订单日期和时间(乱序)it
二、第二列是客户的idio
三、第三列不须要使用入门
四、60+万行数据
相关定义以下:
一、existing:这次下单日期时间与上第二天期时间的距离在N天之内,精确到时间(时分秒)
二、new:即超过N天
一、读取表格的行数据存储成list,并按照时间列的升序排序。
二、维护一个map(在python里是字典dict),每一个用户 id 做为key,一个二元组(第几回下单,上一次的日期时间)做为value。
三、遍历表格行数据的list。判断客户 id 是否已经存在于map中,若首次出现,则置该客户 id 在map中的value为[1,'首次下单'],对应行数据新增的4个数据为[1,'首次下单',该第二天期时间与上第二天期时间差,'new']。若已经存在,则更新map中对应的value为[原次数+1,该第二天期时间],对应行数据新增的4个数据为[原次数+1,上第二天期时间,间隔时间,new/existing取决于间隔时间与预设N]。
四、将修改事后的行数据list写入到Excel工做簿并保存。
读取表格数据
咱们能够用xlrd模块对Excel文件进行读取,以便进一步分析处理数据。示例代码以下:
以上代码成功输出前100行的日期则说明已经成功读取到数据。输出结果以下:
既然读取文件没有问题,进一步浏览整个文件发现存在多余的空行和重复的标题行在读取和转存中能够用正则匹配过滤掉这些行。
将读取的行数据转存到list中,以便进行排序。
将修改后的行数据list写入Excel表格并保存为xslx格式
结果展现
完整代码