用户复购周期计算

2023-11-20

用户复购周期(两次购买之间的时间间隔)
一、首先使用SQL进行计算
注:用户在一天中发生多次购买则只记为1次购买。
1.根据用户id与购买日期进行分组,将一天内发生多次消费记录进行合并。
DROP TABLE member_Repurchase_cycle_01;
CREATE TABLE member_Repurchase_cycle_01
AS
SELECT * FROM member_Repurchase_cycle_all# member_Repurchase_cycle_all是全部数据表
GROUP BY memberid,DATE(createdatetime)
ORDER BY memberid,createdatetime
2. 选出具有复购行为的用户id(复购指的是具有多天消费记录)
DROP TABLE Repurchase_cycle_memberid;
CREATE TABLE Repurchase_cycle_memberid
AS
SELECT memberid ,COUNT(memberid) FROM member_Repurchase_cycle_01
GROUP BY memberid
HAVING COUNT(memberid)>1
ORDER BY memberid
3.复购用户记录,包括消费时间
DROP TABLE member_Repurchase_cycle_duble;
CREATE TABLE member_Repurchase_cycle_duble
AS
SELECT * FROM member_Repurchase_cycle_01
WHERE memberid IN(SELECT memberid FROM Repurchase_cycle_memberid)
4.复购用户两次相邻消费之间时间间隔
DROP TABLE member_Repurchase_cycle_priod;
CREATE TABLE member_Repurchase_cycle_priod
AS
SELECT memberid,createdatetime,
DATEDIFF(a.createdatetime,(SELECT MAX(b.createdatetime) FROM member_Repurchase_cycle_duble b WHERE b.memberid=a.memberid
AND b.createdatetime<a.createdatetime)) AS diff
FROM member_Repurchase_cycle_duble a
ORDER BY memberid,createdatetime
5.用户第一次消费与第二次消费之间的时间间隔(第一次指的是第一天,第二次指的是第二天)
DROP TABLE member_Repurchase_cycle_priod_fir_sec;
CREATE TABLE member_Repurchase_cycle_priod_fir_sec
AS
SELECT * FROM member_Repurchase_cycle_priod AS a WHERE (SELECT COUNT(*) FROM member_Repurchase_cycle_priod
WHERE memberid=a.memberid AND createdatetime<=a.createdatetime)<=2
二、使用python进行处理
1.加载数据包

import pandas as pd
import numpy as np
from pandas import DataFrame,Series

2.加载excel

shift=pd.read_excel('D:/FBS/member_repurchase_cycle_duble.xlsx')

3.使用python的group函数和shift函数进行操作,通过shift函数里面的值来控制向前还是向后偏移, 缺少的值会填充NaN.groupby函数里的参数控制基于什么字段进行shift.

shift['time_diff']=shift.groupby('memberid')['createdatetime'].shift(1)

4.对偏移后的时间做减法

shift['diff']=pd.to_datetime(shift['createdatetime'])-pd.to_datetime(shift['time_diff'])

5.自定义一个函数,让结果看起来更直观

def y(x):
    try:
        return int(x.days)+int(x.seconds)/3600/24
    except:
        return x
shift['diff_s']=shift['diff'].apply(y)

结果如图所示:
实例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用户复购周期计算 的相关文章

  • Python 如何使用 ExcelWriter 写入现有工作表

    我正在尝试使用 ExcelWriter 将一些信息写入 添加到包含多个工作表的工作簿中 当我第一次使用该功能时 我正在使用一些数据创建工作簿 在第二次通话中 我想将一些信息添加到工作簿中不同位置的所有工作表中 def Out Excel f
  • 这个 cProfile 结果告诉我需要修复什么?

    我想提高Python脚本的性能并且一直在使用cProfile生成性能报告 python m cProfile o chrX prof bgchr py args 我打开这个chrX prof使用 Python 的文件pstats并打印出统计
  • pyspark 中的 Pandas UDF

    我正在尝试在 Spark 数据帧上填充一系列观察结果 基本上我有一个日期列表 我应该为每个组创建缺失的日期 在熊猫中有reindex函数 这是 pyspark 中不可用的 我尝试实现 pandas UDF pandas udf schema
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 如何只获取父类对象的属性

    我有两节课 class Parent object def init self id name self id id self name name self parent vars id name make a copy def print
  • 在Python中检测re(regexp)对象

    我想知道什么是正确的 pythonic 向后和向前兼容的方法如何检查对象是否已编译re object isinstance方法不能轻易使用 而生成的对象声称是 sre SRE Pattern object gt gt gt import r
  • 谷歌应用程序引擎 urlfetch gzip 到字符串

    使用 Google App Engine 我尝试从包含一个 csv 文件的 URL 中获取 gzip 文件 最终我想在我的网页上输出csv文件的内容 我现在有以下代码 usr bin env python import webapp2 fr
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • 拆分列中的字符串并在列中添加值

    我有一个包含几行数据的表 如下所示 16 W 2 Work ALBO 00 Proposal ALxO Amendement 1 20091022 signed pdf 17 W 2 Work ALBO 00 Proposal Level1
  • Python 和 C#:IronPython 是绝对必要的吗?

    我主要是一名 C 程序员 但剩下的一个项目让我有 2 个选择 调用 python 脚本 保存为 py 文件 并处理返回值 或者 用C 重写整个python脚本 共6个 py文件 当然 如果我可以简单地实现选项 1 选项 2 就是一个主要的时
  • scipy.special.binom 和 scipy.misc.comb 之间有什么区别?

    scipy special binom 和 scipy misc comb 之间有什么区别 在 ipython 中我可以看到它们返回不同的类型并且也有不同的精度 scipy special binom 4 3 4 0 scipy misc
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 将字符串转换为带有毫秒和时区的日期时间 - Python

    我有以下 python 片段 from datetime import datetime timestamp 05 Jan 2015 17 47 59 000 0800 datetime object datetime strptime t
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看

随机推荐

  • 约瑟夫环生死小游戏-报数下船

    30 个人在一条船上 超载 需要 15 人下船 于是人们排成一队 排队的位置即为他们的编号 报数 从 1 开始 数到 9 的人下船 如此循环 直到船上仅剩 15 人为止 问都有哪些编号的人下船了呢 totalNumber 30 总共人数 n
  • 【网络】传输层-UDP协议

    文章目录 UDP报文格式 UDP协议特性 无连接 不可靠 面向数据报 UDP缓冲区 UDP特性对于编程的影响 基于UDP的应用层协议 netstat工具 pidof命令 UDP报文格式 查看Linux系统下的 usr include net
  • 使用opencv实现简单的人脸识别

    一 opencv模块的使用 1 简介 opencv python是一个python绑定库 旨在解决计算机视觉问题 使用opencv模块 可以实现一些对图片和视频的操作 2 安装 安装opencv之前需要先安装numpy matplotlib
  • kubernetes RC 与 Deployment ,Pod,Horizontal Pod Autoscaling ,replica set资源

    Pod Pod是 kubernetes 的最基本的操作单元 包含一个或多个紧密相关的容器 kubernetes 使用pod在容器之上再封装一层 其一个很重要的原因是 docker容器之间的通信受到docker网络机制的限制 在docker中
  • 华为OD机试真题- Linux发行版的数量【2023Q1】【JAVA、Python、C++】

    题目描述 Linux操作系统有多个发行版 distrowatch com提供了各个发行版的资料 这些发行版互相存在关联 例如Ubuntu基于Debian开发 而Mint又基于Ubuntu开发 那么我们认为Mint同Debian也存在关联 发
  • C++11新特性:四种类型转换cast说明

    目录 引言 1 static cast 1 1 基本类型转换 1 2 类的上行转换 安全 1 3 类的下行转换 不安全 2 const cast 2 1 改变常量属性 3 dynamic cast 3 1 类的上行转换 安全 3 2 类的下
  • <Linux开发>驱动开发 -之- Linux LCD 驱动

    Linux开发 驱动开发 之 Linux LCD 驱动 交叉编译环境搭建 Linux开发 linux开发工具 之 交叉编译环境搭建 uboot移植可参考以下 Linux开发 之 系统移植 uboot移植过程详细记录 第一部分 Linux开发
  • 碎碎念之工作②

  • [Transformer] PVT系列:PVT & CPVT & Twins

    PVT Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions 论文 https arxiv org abs 210
  • Windows环境下使用GTK

    一 前言 维基百科 GTK 原名GTK 最初是GIMP的专用开发库 GIMP Toolkit 后来发展为Unix like系统下开发图形界面的应用程序的主流开发工具之一 GTK是自由软件 并且是GNU计划的一部分 自2019年2月6日起 G
  • C语言函数大全-- x 开头的函数(4)

    x 开头的函数 4 1 xdr struct 1 1 函数说明 1 2 演示示例 2 xdr u char 2 1 函数说明 2 2 演示示例 3 xdr u hyper 3 1 函数说明 3 2 演示示例 4 xdr u int 4 1
  • 【瑞吉外卖day04】

    菜品管理业务 1 文件上传下载 1 1 文件上传介绍 1 2 文件下载介绍 1 3 文件上传代码实现 前端页面直接使用现成的 源码这里
  • Freertos代码之临界函数

    芯 片 STM32F427VITx 指 令 集 ARMV7 Thumb2 编译环境 arm gcc FreeRTOS有如下临界节管理的宏定义 define portSET INTERRUPT MASK FROM ISR ulPortRais
  • Java上传文件大小受限怎么解决

    一般控制台上会出现像这样 1048576 bytes 这大小限制 org springframework web multipart MaxUploadSizeExceededException Maximum upload size ex
  • rttread-nano 使用记录:rt_kprintf函数格式化打印无法左对齐

    rttread nano 使用记录 rt kprintf函数格式化打印无法左对齐 今天用rt kprintf函数打印输出一个表格 为了表格好看每一列我都使用格式化参数 负号符号设置为了左对齐 但是发现无法打印 也无法打印浮点数 换成微库的p
  • 使用presto调用hive

    启动hive metastore服务 hive service hivestore 关于最后的一个 告诉小白一下是后台运行的意思 presto配置使用hive插件 presto所在的文件中etc 自建 的catalog 自建 中hive p
  • 输出数组的最大值、最小值及其位置

    题目 输入一个长度为10的数组 输出数组的最大值 最小值及其最大值 最小值在数组里的位置 思路 如果只需找出最大值 我们可以假定最大值max为数组的第一个元素 然后将剩余的元素逐个和max比较 如果有比max更大的元素 就将其记录下来 直到
  • Qt HTTP POST json 访问服务器

    form格式访问服务器 QByteArray postArray postArray append grant type authorization code postArray append client id 32u2w95f200D4
  • 数据中台与数据仓库区别

    1 数据源不同 先从数据来源上来说 数据中台的数据来源可以是结构化数据或者非结构化的数据 而传统数仓的数据来源主要是业务数据库 数据格式也是以结构化数据为主 2 数据的处理不同 数据中台不仅仅是汇聚企业各种数据 而且让这些数据遵循相同的标准
  • 用户复购周期计算

    用户复购周期 两次购买之间的时间间隔 一 首先使用SQL进行计算 注 用户在一天中发生多次购买则只记为1次购买 1 根据用户id与购买日期进行分组 将一天内发生多次消费记录进行合并 DROP TABLE member Repurchase