Pandas实战
读取我们的案例源数据:
时间范围是2020年5月-6月两个月的数据,一共40270条,目标是计算两月期的复购率。
先对客户ID和付款时间做升序排列,方便后续计算:
复购计算是建立在按客户ID分组的基础之上,下面的重点工作是搞定apply里面的函数。
首先,用一个空列 lst 来记录客户的复购间隔时间。当客户在时间范围内购买次数大于1时,再对客户的购买时间进行循环遍历,否则返回空列表:
接着,重点研究购买次数大于1的客户,为了有一个锚定的日期,我们引入变量anchor,当客户第二次购买时间间隔在2天以内,则用第三次购买时间和anchor做计算,依次遍历,直到找到购买时间间隔大于2的消费行为或者循环匹配完客户所有订单信息:
为了避免索引超出范围,在while循环内部,当 i 等于len(x) - 2时,跳出内部循环,否则index + 1
一旦客户两次购买行为间隔超过2天,则判定为复购行为,并且把复购时间间隔记录在lst列表
一遍复购间隔计算完之后,进行下次的循环(这里判断index同样是为了避免超出索引),最终得到的是每个客户符合定义的间隔时间列表。
把定义好的函数应用到我们的数据集上,结果如丝般顺滑:
大功已经告成。计算复购率已然是信手拈来,只需要统计复购次数大于等于1的:
以2天作为我们的复购时间间隔,最终复购率是17.76%。
apply强大不止于此,我们对count函数略加修改,加入一个变量作为间隔,就可以自定义复购时间间隔,想大于3天就大于3天,想大于7天就大于7天,完全实现复购率的灵活计算。
整个复购计算到此为止,问题的关键在于count函数,如何把规则用函数复现,以及索引怎样递进,需要花一些时间来思考。