新闻| 文章| 资讯| 行情| 企业| wap手机版| article文章| 首页|会员中心|保存桌面|手机浏览
普通会员

冠县市夏槐科技有限公司

什么是用户的复购周期

在这里我们结合一个电商销售数据来感受下shift函数的使用。我们有一份客户和购买时间的数据,现在想统计每位用户在今年的平均复购周期和全部用户的平均复购周期。

通过一个例子来解释用户的平均复购周期,假设某位用户购买情况如下

张三用户的复购间隔分别为:6(1号和7号的间隔,3(7号和10号,10,8;也就是相邻两次购买时间之间的间隔。

那么张三的平均复购周期(6+3+8+10)/ 4 = 6.75

模拟数据

模拟了一份电商数据,多位用户购买了一次或者多次

下面通过Pandas来求解每位用户的平均复购周期和全部的平均复购周期

确定哪些用户存在复购行为

复购的用户指的是:在统计时间范围内,存在多次购买的用户。所以我们首先找到那些至少购买两次的用户

统计发现小王同学只购买了一次,没有复购行为

筛选出复购用户

从原始数据中提取出复购用户的数据

根据每位用户的购买时间来升序排列

根据每位复购用户的数据移动一个单位

在行方向上移动一个单位

拼接数据

将排序后的df3和我们根据df3平移后的数据在列方向上拼接起来

字段时间1相当于每个购买时间的前一个购买时间点

上面的数据框中

将NaT数据删除

使用dropna函数来删除缺失值的数据

求出复购时间间隔

两个字段时间时间1的差值,就是每位用户的复购时间间隔,可能存在多个

查看数据的字段类型,我们发现间隔这个字段是一个timedelta64[ns]的类型

企业列表
新闻列表
  • 暂无新闻
推荐企业新闻
联系方式
  • 联系人:汪女士
首页 > 新闻中心 > 【Python】电商用户复购数据实战:图解Pandas的移动函数shift
新闻中心
【Python】电商用户复购数据实战:图解Pandas的移动函数shift
发布时间:2024-11-15        浏览次数:2        返回列表

公众号:尤而小屋作者:Peter编辑:Peter

【Python】电商用户复购数据实战:图解Pandas的移动函数shift

本文主要介绍的是pandas中的一个移动函数:shift。最后结合一个具体的电商领域中用户的复购案例来说明如何使用shift函数。

这个案例综合性很强,除了需要掌握shift函数,你还会复习到以下pandas中的多个函数使用技巧,建议认真阅读、理解并收藏,欢迎点赞呀~

  • 分组统计:groupby

  • 过滤筛选数据:query

  • 排序函数:sort_values

  • 合并函数:concat

  • 字段重命名:rename

  • 缺失值删除:dropna

  • 宝藏函数:apply

Pandas文章连载系列已经到了第20篇,主要分为3类

基础部分:1-16篇,主要是介绍Pandas中基础和常用操作,比如数据创建、检索查询、排名排序、缺失值/重复值处理等

进阶部分:第17篇开始讲解Pandas中的高级操作方法;后续主要是以时间序列相关为主

对比SQL,学习Pandas:将SQL和Pandas的操作对比起来进行学习

14种方式,34个案例:对比SQL,学习Pandas操作

  • periods:表示移动的幅度可正可负;默认值是1,1就表示移动一次。注意这里移动的都是数据,而索引是不移动的移动之后没有对应值的,就赋值为NaN

  • freq:DateOffset, timedelta, or time rule string,可选参数,默认值为None,只适用于时间序列。如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。

  • axis:表示按照哪个轴移动。axis=0表示index,横轴;axis=1表示columns,纵轴

  • fill_value:表示当我们数据发生了移动之后,产生的缺失值用什么数据填充。如果是数值型的缺失值,用np.nan;如果是时间类型的缺失值,用NaT(not a time

模拟了两份数据,其中一份和时间相关。

另一份是和时间相关的

表示每次移动的幅度

可以看到默认情况下,shift函数是在行方向上移动一个单位

用来表示在哪个方向上进行移动,上面的例子默认是在axis=0,或者表示成:axis="index"

如果我们想在列方向上移动,可以使用axis=1或者axis="columns"

同时移动的幅度是可正可负的

移动之后缺失值的填充数据

表示移动的频率,专门用于时间序列的移动中

频率

时间序列变化频率有间隔相同的,也有不同的。许多字符串别名被赋予有用的普通时间序列频率。我们将这些别名称为偏移别名。上面的shift函数中使用的就是这些别名,具体如下表所示

别名描述
B工作日频率
C自定义工作日频率
D日历日频率
W每周频率
M每月最后一个日历日
SM每半个月最后一个日历日(15日和月末
BM每月最后一个工作日
CBM自定义每月最后一个工作日
MS每月第一个日历日
SMS每半月第一个日历日(第1和第15
BMS每月第一个工作日
CBMS自定义每月第一个工作日
Q每季度最后一个月的最后一个日历日
BQ每季度最后一个月的最后一个工作日
QS每季度最后一个月的第一个日历日
BQS每季度最后一个月的第一个工作日
A, Y每年的最后一个日历日
BA, BY每年的最后一个工作日
AS, YS每年的第一个日历日
BAS, BYS每年的第一个工作日
BH工作日按“时”计算频率
H每小时频率
T, min每分钟频率
S每秒频率
L, ms毫秒频率
U, us微秒频率
N纳秒频率