美文网首页
玩家的充值间隔

玩家的充值间隔

作者: Houtasu | 来源:发表于2021-03-10 17:40 被阅读0次

现在有需求需要统计不同付费等级玩家的充值间隔差异,
简单来说就是玩家平均隔多久充一笔钱。
这需要对单个玩家统计前后两笔订单时间的差值。
订单原始数据如下结构:


主要就是用户id和该笔订单的时间,现在要做的事就是按照uid分组,再按照时间排序,
然后第二笔时间减第一笔时间,第三笔时间减第二笔时间...,得到所有订单的间隔。
最后再统计这个间隔,求个平均值和中位数什么的。
这个需求看起来很简单,核心其实就是知道要怎么做到下一行减上一行。
在BigQuery中需要用到以前讲过的分析函数
核心就是lag这个函数:文档指路
LAG(ts) OVER (PARTITION BY uid ORDER BY ts )
这个函数可以拿到上一行的数据,然后用date_diff相减就好了。
SELECT
  uid,
  ts,
  LAG(ts) OVER (PARTITION BY uid ORDER BY ts ),
  DATE_DIFF(DATE(ts), DATE(LAG(ts) OVER (PARTITION BY uid ORDER BY ts )), day) AS day
FROM
 充值表
WHERE
  DATE(ts, '+08') BETWEEN "2021-1-1"
  AND "2021-1-31"
ORDER BY
  1,
  2

可以看到上图中fo_就是左边ts的下一行,如果玩家只有一笔充值,那就是null。
拿到间隔后该干嘛就干嘛,没啥好讲的,接下来说说pandas怎么实现这个需求。
核心是shift这个函数,这个函数也可以拿到上一行的数据,
准备来说是偏移量下的数据,不过默认就是上一行。

不过相减前还有先按照uid分组
iap['interval'] = iap.groupby('uid').apply(lambda x:(x['ts'] - x['ts'].shift()).dt.days).reset_index(drop=True)
iap

这一行的东西有点多,详细讲一下。
首先groupby函数用来分组,在调用apply函数对分组内的数据做处理。
lambda是匿名函数,内容不多就不写单独的函数了。
然后是本身和本身的shift()相减,就得到了前后两笔订单的差值。
但这个差值实际是一个timedelta64[ns]的Series。

我们实际需要的是day,这里要用到Series.dt.days属性,文档指路
不过这里有点问题,实际文档里属性的是day而不是days,但是直接调day是会报错的。

这里显示的是TimedeltaProperties,而文档里是搜不到这个关键词的。
不过有pandas.Timedelta.days这个属性,但如果不加.dt而直接掉days也是会报错的。

猜测dt属性会把根据数据内容将该列转为对应的时间类型,这里是转为了Timedelta再调用它的days属性。
然后注意的是我们要把分组后的Series赋给原dataframe,直接赋值是不可以的。
因为groupby后是一个二重索引。

必须要是和原索引相等的Series才能正确赋值。
所以还需要用到reset_index()这个函数。
直接reset_index()会转为一个dataframe。

二级索引会转为两列,但我们只需要序数索引那一列记好了,这里需要用到drop参数,表示是否将不需要的索引删掉。

现在在直接赋值给iap['interval']就没什么问题了。

相关文章

  • 玩家的充值间隔

    现在有需求需要统计不同付费等级玩家的充值间隔差异,简单来说就是玩家平均隔多久充一笔钱。这需要对单个玩家统计前后两笔...

  • php实现支付接口签名验证

    前言 游戏服务器的玩家充值流程,如果通过google商店或者app store进行充值的话,需要实现回调支付地址。...

  • 手游运营的常见活动形式(充值、消费)

    1.充值 1.1拉新增用户付费 据数据显示,玩家一旦在一个游戏内开始第一次充值,二次充值的概率也会高于没有过充值记...

  • 复古传奇180,快速入门 攻略

    前方高能:推荐-平民及打金玩家推荐法师,一般玩家建议道士,RMB战士。 小编是个没钱的佛系青年 充值玩家要知道:庄...

  • 复古传奇180,快速入门 攻略

    前方高能:推荐-平民及打金玩家推荐法师,一般玩家建议道士,RMB战士。 小编是个没钱的佛系青年 充值玩家要知道:庄...

  • 复古传奇180,快速入门 攻略

    前方高能:推荐-平民及打金玩家推荐法师,一般玩家建议道士,RMB战士。 小编是个没钱的佛系青年 充值玩家要知道:庄...

  • 复古传奇180,快速入门 攻略

    前方高能:推荐-平民及打金玩家推荐法师,一般玩家建议道士,RMB战士。 小编是个没钱的佛系青年 充值玩家要知道:庄...

  • 白嫖玩家

    最近看到“白嫖玩家”这次词,开始还不理解,后来才知道,这是免费玩家的戏称。 免费玩家,不往游戏里面充值一分钱,因此...

  • 记录一个使用skynet过程中的伪并发问题

    问题描述: 在对一个玩家充值时,如果此时玩家不在线,内存中也没有缓存数据,此时需要从db(先从redis中查询,如...

  • 小游戏有感②

    平民玩家,游戏里就是炮灰,就是被虐的。 人民币玩家就是虐你来的…… 且游戏里各种活动,送资源,需要各种充值,30元...

网友评论

      本文标题:玩家的充值间隔

      本文链接:https://www.haomeiwen.com/subject/iiiwqltx.html