专栏首页诸葛青云的专栏老板丢给我60万行的Excel数据,幸亏我会Python,不然就惨了
原创

老板丢给我60万行的Excel数据,幸亏我会Python,不然就惨了

一个朋友在某运动品牌公司上班,老板给他布置了一个处理客户订单数据的任务。要求是根据订单时间和客户id判断生成四个新的数据:

1、记录该客户是第几次光顾

2、上一次的日期时间是什么时候

3、与上次订单的间隔时间

4、这是一个existing客户还是一个new客户(见定义)

文件说明:

1、第一列是订单日期和时间(乱序)

2、第二列是客户的id

3、第三列不需要使用

4、60+万行数据

相关定义如下:

1、existing:此次下单日期时间与上次日期时间的距离在N天以内,精确到时间(时分秒)

2、new:即超过N天

整体思路

1、读取表格的行数据存储成list,并按照时间列的升序排序。

2、维护一个map(在python里是字典dict),每个用户 id 作为key,一个二元组(第几次下单,上一次的日期时间)作为value。

3、遍历表格行数据的list。判断客户 id 是否已经存在于map中,若首次出现,则置该客户 id 在map中的value为[1,'首次下单'],对应行数据新增的4个数据为[1,'首次下单',该次日期时间与上次日期时间差,'new']。若已经存在,则更新map中对应的value为[原次数+1,该次日期时间],对应行数据新增的4个数据为[原次数+1,上次日期时间,间隔时间,new/existing取决于间隔时间与预设N]。

4、将修改过后的行数据list写入到Excel工作簿并保存。

读取表格数据

我们可以用xlrd模块对Excel文件进行读取,以便进一步分析处理数据。示例代码如下:

以上代码成功输出前100行的日期则说明已经成功读取到数据。输出结果如下:

既然读取文件没有问题,进一步浏览整个文件发现存在多余的空行和重复的标题行在读取和转存中可以用正则匹配过滤掉这些行。

将读取的行数据转存到list中,以便进行排序。

将修改后的行数据list写入Excel表格并保存为xslx格式

结果展示

完整代码

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 老板丢给我60万行的Excel数据,幸亏我会Python,不然就惨了

    一个朋友在某运动品牌公司上班,老板给他布置了一个处理客户订单数据的任务。要求是根据订单时间和客户id判断生成四个新的数据:

    诸葛青云
  • 一步一步教你从零开始写C语言链表——构建一个链表

    今天小编给大家带来c语言难点--链表的讲解,一步一步教你从零开始写C语言链表---构建一个链表。

    诸葛青云
  • Python切割图片成九宫格

    这篇文字讲述如何使用Python把一张完整的大图切割成9份小图片,制作朋友圈九宫格图文分享。 原图如下:

    诸葛青云
  • 老板丢给我60万行的Excel数据,幸亏我会Python,不然就惨了

    一个朋友在某运动品牌公司上班,老板给他布置了一个处理客户订单数据的任务。要求是根据订单时间和客户id判断生成四个新的数据:

    诸葛青云
  • [UWP 自定义控件]了解模板化控件(10):原则与技巧

    一个控件是否好用,很大一部分取决于名称。好的命名能让使用者用起来更得心应手,坏的命名只会让代码更混淆。下面总结了UWP控件命名的一般模式:

    dino.c
  • Qt编写自定义控件65-光晕日历

    操作系统的更新迭代速度非常快,基本上三五年就有个新版本出来,WIN10操作系统还是一个比较成功的系统,据说现在市场份额越来越大,XP的份额已经很小,WIN7的份...

    feiyangqingyun
  • Redis应用总结

    首先, 我带大家简单的了解一下Redis Redis常用数据类型(最为常用的数据类型主要有以下五种) ●String ●Hash ●List ●Set ●Sor...

    范蠡
  • beego web提高后端速度的尝试——改循环查询数据库为递归算法

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • maven 之 setting.xm 的配置详解、说明

    转自:https://www.cnblogs.com/shangxiaofei/p/5416552.html

    微风-- 轻许--
  • 高可用的本质: 复制

    服务和数据的高可用性本质上是靠“复制”来解决的,比如服务通过集群部署多台机器来完成,数据通过冗余的多副本机制来完成。对于服务来说,只需要部署多个实例即可,特别是...

    luoxn28

扫码关注云+社区

领取腾讯云代金券