精华内容
下载资源
问答
  • data = pd.read_excel('data留存率数据.xlsx')data.head(5) 要计算1-7日的留存率,首先我们需要知道用户在激活后的第n天是否活跃,所以对于上面的数据,我们可以计算用户活跃日期和激活日期的天数的差值来判断...

    1.前言

    Hi大家好,因为工作的原因最近更新有些慢,在此借这篇文章也给大家梳理一下后续的一些更新规划,整体来说主要规划了以下三个方向:

    • 工具侧:主要是Python、SQL的一些技巧,在工作中有时候会感觉自己对这方面的使用还是有一些粗糙,效率还不够高,最近也在进行一些自我复盘,所以说这里的话会结合我在工作中遇到的一些问题去给大家分享一些技巧。

    • 知识侧:主要是统计学、机器学习相关

    • 分析侧:A/B Test、一些分析方法等等

    以上主要的规划三个方向(三个大坑,以后慢慢填坑..),除了这些之外,大家有感兴趣的话题,欢迎在后台留言。


    2. 留存率计算

    下面我们进入正题,首先看一下数据的格式,数据一共3列,字段分别是用户编码,激活日期和活跃日期,目标是要求根据这3个字段计算出每个用户的1-7日留存的明细情况和最终1-7日的留存率。

    data = pd.read_excel('data留存率数据.xlsx')data.head(5)

    cf3551eb5e90ae0c4bc6266bbb07c1f2.png

    要计算1-7日的留存率,首先我们需要知道用户在激活后的第n天是否活跃,所以对于上面的数据,我们可以计算用户活跃日期和激活日期的天数的差值来判断用户活跃日期是激活后的第几天。

    #因为之前的日期是string格式,转换成日期格式def time_function(x):    return datetime.strptime(str(x),'%Y-%m-%d')data['活跃日期'] =data['活跃日期'].apply(time_function)data['激活日期'] =data['激活日期'].apply(time_function)data['第n天活跃'] = data['活跃日期']-data['激活日期']data['第n天活跃'] =data['第n天活跃'].apply(lambda x:x.days)data.head(10)

    0aea047a79889d983eea88449c3d5558.png

    通过上面的计算,我们就知道了用户活跃的日期是在激活后的第几天,下面就是计算整体的留存率了,怎么计算呢?有些同学可能会想到可以直接对第n天活跃做groupby求当天活跃的用户数是多少来计算,这个思路是可以的,不过会有局限性并且不能得到每个用户的明细留存情况。

    那么该怎么算呢?在学会pivot函数之前,我的思路是这样的:

    方法一:Left Join循环

    筛选出第0天活跃的用户(相当于是筛选全量用户),以这部分用户作为底表,用循环去left join 第1、2、3....n天活跃的用户,如果能匹配到,说明这个用户在当天有活跃,代码如下:

    ret_fm = data[data.第n天活跃==0]for i in range(1,8):    ret_fz = data[data.第n天活跃==i][['用户编码']]    ret_fz[str(i)] = 1    ret_fm = pd.merge(ret_fm,ret_fz,on='用户编码',how='left')ret_fm = ret_fm.fillna(0) #没有匹配到的就是空值,用0填补代表没有活跃ret_fm.head(10)

    最终结果如下所示,可以得到一张每个用户在1-7天是否活跃的明细表

    54b62fff7234d383ff8c8ecac9209759.png

    通过这张明细表,就可以轻松的计算出1-7日的留存率

    f=ret_fm.iloc[:,1:].mean().reset_index()f

    812adaccc67e1fe3cd760437d3c86543.png

    方法二:Pivot函数

    上面这种方法虽然可行,但比较麻烦,并且需要通过循环去解决,数据量大时效率会比较低,下面我们来看一种更简单的办法-pivot函数,这个函数的效果大家可以看一下下面这张图,应该比较清楚了,如果不清楚的话,我们来看一下下面的应用。

    c989a4c745b444e8bbe98df94654862f.png

    首先再来回顾一下数据的格式,在这里我们给数据添加新的一列ret,赋值为1

    data['ret']=1data.head(10)

    12ee77910ff2b366be6fc0f65394354e.png

    之后我们来应用一下pivot函数,函数中有3个参数

    • index:指定一列作为新的index(每一行的唯一标识),因为我们想要的是一张用户维度的留存表,所以每一行应该代表一个用户,这里的index我们选“用户编码”

    • column:指定一列并将里面的取值展开作为不同的列,选择“第n天活跃”

    • value:数据表里面的取值选哪一列,这里我们选“ret“

    df_new = data.pivot(index = '用户编码',columns='第n天活跃', values='ret')df_new

    结果如下图所示,可以看到,我们通过一个函数就达到了上面依靠循环才能达到的结果!

    8210757cbba9c746942f621a68592c70.png

    #数据中有缺失值,代表用户在当天没有活跃,用0填充df_new=df_new.fillna(0df_new

    f51dad4e0e269ee755789813e4657235.png

    #计算均值df_new.mean().reset_index()

    99f7c6add18b7fb4a05115b3da1574f9.png

    这样我们通过一个pivot函数就完成了之前要靠循环才能完成的步骤,可以说是非常方便了,pandas中还有很多很好用的函数,以后再和大家分享。

    ps:文档中用到的数据和代码,大家可以后台回复 “pivot案例”下载。

    展开全文
  • 如何高效计算用户留存率 简单介绍留存率的概念,说明数仓建设中对留存率计算的优化思路 什么是留存率 在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是留存用户...

    如何高效计算用户留存率

    简单介绍留存率的概念,说明数仓建设中对留存率计算的优化思路

    什么是留存率

    在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是留存用户。

    留存率就是留存用户与全部用户的比值,计算公式

    留存率 = 留存用户数 / 用户数 * 100%

    比如昨天来了100个人,今天这100个人里面的60个人又来了,那么留存率就是60%。

    留存率反应了一个产品的用户黏性,留存越高说明用户在使用这个产品之后,继续使用的概率越大。
    在用户运营越来越重要的今天,留存率作为公司的重要指标,也越来越被重视起来。

    留存率的口径

    留存率有很多计算口径,适用于不同的分析场景。但都是要确定两个时间窗口,第一个时间段用来圈人,第二个时间段用来观察被圈的人有没有再次访问。一般来说看的比较多的有如下几种口径

    口径名称 前一时间段 下一时间段
    次日留存 1天 1天
    次三日留存 1天 3天
    次七日留存 1天 7天
    次30日留存 1天 30天
    周留存 7天 7天
    月留存 30天 30天
    自然月留存 上个自然月 下个自然月

    此外游戏产品还很看重用户注册之后的第一日留存、第二日留存…一直到第7日留存,含义是第0天来的人,在第1天、第2天…第7天的留存,是一个不断下降的曲线,游戏策划的一大目标就是让这条曲线下降变慢一点。

    可以看到留存率的计算口径众多,时间跨度广,如果再摊上用户数量巨大,计算起来就是一件费时费力的工作了。

    留存率计算方式零: 在用到的地方计算

    简单来说就是没有统一计算的底层留存表,数据开发者在需要计算留存的时候,自己把两块用户数据left join起来,然后计算留存。
    这样好处是简单快速;缺点是有数据口径不统一的隐患,逻辑很难复用。只适用于初级的数仓报表建设。因为这种没有任何设计思路,这里就不再展开。

    留存率计算方式一: 全量用户访问情况表

    思路是很简单的,如果我们知道了每一个用户,在前一段时间的访问天数M,在后一段时间的访问天数N,那么留存率就是 sum(M>0 and N>0) / sum(M > 0) * 100%
    而我们一般用到的时间段是可以枚举的:1、2、3、4、5、6、7、14、28、29、30、31。那么,如果我们有一张表包含了12 * 2 = 24个字段(前后要*2),就能方便计算留存率了。

    但是,这种方法会遇到一个问题,就是未来是不知道的,在可以计算次日留存的时候,月留存还无法得到结果,总不能等到一个月之后才拿到次日留存吧。所以就遇到需要回刷的问题。在每一个时间点都需要回刷一次,假设关注12个时间点,一张表就相当于12张表的计算量。虽然看起来计算量大了,但是如果很多地方都需要用到,比起粗放的前一种方式还是提升了很多的。

    留存率计算方式二: 用户访问情况字段

    这是本篇文章主要想讲述的内容,它继承了上面保存用户访问情况的思想,计算量不会太大,口径也可以更加灵活。

    假设我们可以把用户两个月的访问情况都保存在表里,1就是来了,0就是没来,两个月算62天,一天一个字段,就是62列。那么这份数据就可以完全覆盖上面从次日留存到月留存,不需要回刷。为什么呢,因为在最新日期的数据里面,可以看到用户在过去60天,每一天的访问情况,假设用户在60~30这30个日期来访是M,30~1这30个日期来访是N,那么依然可以通过公式sum(M>0 and N>0) / sum(M > 0) * 100%计算留存。

    有人觉得62个字段太多了,放在一个表里不值得,这个完全是可以优化的,一个bigint有64位,64 - 62 = 2 还能剩余两位。所以我们只需要一个bigint,理论上就可以计算绝大多数的留存口径。

    在这里先做一个约定,0代表没来,1代表来,从右到左第1到第62位,分别代表距今天0到61天,用户是否来访。

    那么我们就可以定义一个UDF来计算任意口径用户来访天数,假设叫get_range, 这个函数需要4个信息

    • 用户访问情况: bigint
    • 制作用户访问情况的日期: string
    • 计算留存目标日期: string
    • 计算时间范围: int

    简单示例如下

    public int evaluate(final bigint info, final String baseDate, final String targetDate, int range) {
        int r = 0;
        int diff = datediff(baseDate, targetDate);
        if (diff >= 1 && diff <= 62  && range > 0){  // 保证没有越界
        	for (int i = 0; i < range && i <= diff; i++){
    			r += ((info >> (diff - i)) & 1);
        	}
        }
        return r;
    }
    

    以计算次日留存为例, 就可以

    get_range(info, '20190901', '20190831', 1) as M, 
    get_range(info, '20190901', '20190901', 1) as N
    

    然后 sum(M>0 and N>0) / sum(M > 0) * 100% 来计算留存了

    总结一下,通过一个bigint来存储用户的访问情况,可以非常方便的计算用户的留存,但是也需要很好的工具链来保障这个bigint生成的正确性,对软实力要求很高。
    如果不追求极致的性能,使用回刷的方式也可以达到方便计算的目的。最不推荐的就是在各个用到地方算一次留存,虽然看起来简单,但是最后维护最麻烦,使用的资源也随着时间越来越多。

    展开全文
  • 衡量一款产品是否健康,用户留存率是一个关键的指标,常见的有7日留存率,14天留存率,30天留存...分组留存率计算起来比较简单,对用户进行分组,先维度分,再粒度分。什么是维度?以Tableau自带的超市数据为例,...

    衡量一款产品是否健康,用户的留存率是一个关键的指标,常见的有7日留存率,14天留存率,30天留存率,60天留存率等等。今天Tay哥先讲一下如何用Tableau做Cohort Analysis ,中文一般译为分组留存率。上面提到的留存率,可以通过分组留存率进一步计算出来。

    如何做分组留存率?

    分组留存率计算起来比较简单,对用户进行分组,先维度分,再粒度分。

    什么是维度?以Tableau自带的超市数据为例,如果按用户的首次购买时间对用户进行分组,购买时间就是维度;所谓粒度,就是时间维度是按日、周、月、季度,还是按年为分析的颗粒度?也即粒度上的差异。维度也可以是新增用户的渠道,那么新增的来源产品,还是来源的具体网址,这也属于粒度上的差异。通过这两方面的分组可以将对比的差异值逐级锁定,寻找数据表象差异背后的原因。

    通常来讲,对于用户的留存分析有两个比较常用的的分组方向:

    ** 从用户的获取角度分组

    ** 从用户的行为角度分组

    从用户获取的角度分组

    如果按用户购买的时间分,粒度可选日、周、月、季度等,我们就可以分析后看出,各个时间段获取的客户在留存率表现上是不是有差异,例如在一个时间段内留存曲线是收敛并趋于稳定,还是强烈。通过留存率分析我们能够对流失的用户做用户画像分析,并在流失率高的时间段进行适当的干预。

    在获取用户的角度,还可以对获客渠道进行划分,分析不同渠道的用户后续的留存情况。通过渠道维度的分析也可以判定不同渠道表现的优劣情况 ,好的渠道可以加大促销或者广告投入,差的渠道可以淘汰不用。

    从用户行为角度分组

    从用户行为角度分组对于功能比较复杂的产品也非常重要。比如一个浏览器产品,已不单单是解决用户访问网页的需求,通过浏览器,还可以向用户推送新闻、小说、视频等服务,浏览器俨然已经变成了一个内容的综合载体。一个用户选择用一个浏览器来看小说,并不代表他也一定会用浏览器来看新闻或视频。所以同样是用户流失,可能是对产品不同功能模块体验上的不满结果。

    这个时候,产品团队就可以通过用户行为角度分组来具体分析存在哪些问题。还是以浏览器为例,新闻,小说,视频都应该是每日活跃的模块,如果做的好,应该表现出很高留存比例,如果分组分析中发现使用过某个功能的用户在之后的时间中留存情况很差,那就需要对这个功能进行优化了。同时,可以做竞品分析,看看相对于竞争对手,产品在哪些方面可以做进一步的优化和改进。

    分组分析是一种简单成熟的分析方法,不但能够告诉我们用户在什么时候离开了我们的产品,而且能进一步告诉我们用户为什么离开,帮助我们找到优化产品的方向。同时,为了更好地使用分组分析,需要我们从一开始的数据收集和存储结构就为后续的分析做好准备。

    Tableau分组留存分析实践

    打开Tableau的Superstore样本数据,我们可以看见左侧数据栏中有一个维度是购买时间(Order Date),一个用户可能会来这个超市购买过多次的产品,那么如果我们需要对用户按首次购买时间进行分组,那我们就需要计算出每个用户的首次购买日期。

    在Tableau新建计算字段,命名为 1st Order Date,然后在表达式中,写下如下的公式:

    {fixed [Customer Name]: min([Order Date])}

    这个公式用到了两个知识点,一个是Fixed详细表达式 (LOD),Tay哥以后为详细说明什么是详细表达式,什么情况下可以用详细表达式,以及三种不同的详细表达的区别。 第二个知识点是表计算函数 Min()。 这个公式用文字解释一下就是 “对每个用户,求他/她所有购买日期的最小值”,换句话,即首次购买日期。

    如果按季度来看用户的留在率,那么就需要对每个用户,按照他/她的首次购买时间,对所有的购买时间进行坐标0点的统一,相对第X周,不同购买日期的用户分组留存率是多少。

    在Tableau新建计算字段,命名为 Retention,然后在表达式中,写下如下的公式:

    DATEDIFF(‘quarter’,[1st Order Day],[Order Date])

    这个公式里,又用到一个新的函数,Datediff,它可以计算两个日期之间的天、周、月、季度等差值,这里是按季度来计算(quarter)。

    然后将1st Order Date放入列,并右键,选择季度(Quarter)为粒度,同时选则为 非连续(discrete)。将Retention放入行,也选则为非连续(discrete)。

    再新建一个计算字段,命名为 Number of Customers, 在表达式中,写下如下的公式:

    COUNTD([Customer Name])

    Number of Customer 拖入标记(Marks)>文本(text)上,可以看见,按首次购买时间分组,在随后的第X季度,这些用户中,有多少人返回Superstore购买东西。

    876f13e1c42fae14ab3c0162c29c0081.png

    那么我们希望得到的结果是,第X周里,某个季度内首次购物的人,有多少返回购买,需要增加对上面这个,再增加一个表计算,percent of total,然后按照行的方向,进行计算。

    2cc19bd66a478848a7218ab091115620.png

    得到如下结果,Tableau默认的百分数是2位小数,下图已经改为0位小数。

    24c0a25560cfd7189be6f21a4ac73c21.png

    图中倒三角形部分的百分比正是我们想要的,比如2015年Q1首次购买的用户,在第2周,有23%的用户再次购买。但是Grand Total里,有没有发现什么问题?按理Grand Total中,只有2015Q1首次购买的的用户达到了第15季,其它月首次购买的,其实都还没有达到他们的第15季,所以Grand Total应该是55%,但结果却显示为8%,这是为什么? 这个我们将在下一篇中详细说明,如何算聚合的分组留存率。

    敬请关注下一讲,分组留存率的聚合计算。

    展开全文
  • 数据源:来自猴子老师的留存率分析教程链家面试题:如何分析留存率?​mp.weixin.qq.com【面试题】手机中的相机是深受大家喜爱的应用之一,下图是某手机厂商数据库中的用户行为信息表中部分数据的截图。用户id:用户...

    50e4531945a704657a6450e9c35ab4e3.png

    数据源:来自猴子老师的留存率分析教程

    链家面试题:如何分析留存率?mp.weixin.qq.com

    【面试题】

    手机中的相机是深受大家喜爱的应用之一,下图是某手机厂商数据库中的用户行为信息表中部分数据的截图。

    12b4ae24559f7455ae924745b0611463.png

    用户id:用户唯一标识;
    应用名称:是手机中的某个应用,例如相机、微信、大众点评等。
    启动时长:某一天中使用某应用多长时间(分钟)。启动次数:某一天中启动了某应用多少次。
    登陆时间:使用手机的日期。例如2018-05-01。

    现在该手机厂商想要分析手机中的应用(相机)的活跃情况,需统计如下数据:

    某日活跃用户(用户id)在后续的一周内的留存情况(计算次日留存用户数,3日留存用户数,7日留存用户数)

    指标定义:

    某日活跃用户数,某日活跃的去重用户数。

    N日活跃用户数,某日活跃的用户数在之后的第N日活跃用户数。

    N日活跃留存率,N日留存用户数/某日活跃用户数

    例:登陆时间(20180501日)去重用户数10000,这批用户在20180503日仍有7000人活跃,则3日活跃留存率为7000/10000=70%

    求解过程:

    第一步:通过数据自联结,然后找出数据a和数据b都是相机,且b的时间小于a的时间的数据(例如a中日期为2020-05-02,b中则为5月2日之后的数据)。

    select a.用户id, a_t, b_t from
    (select 用户id, 登陆时间 a_t from 留存率题目 
    where 应用名称 = '相机') a left join 
    (select 用户id, 登陆时间 b_t from 留存率题目 
    where 应用名称 = '相机') b 
    on a.用户id = b.用户id and a_t < b_t[1]

    b5826db5425ba2a43069c3fe34c3585c.png

    第二步:求出at 和 b_t 的时间间隔,使用函数datediff[2]

    select *, datediff(b_t, a_t) as 时间间隔 from
    (select a.用户id, a_t, b_t from
    (select 用户id, 登陆时间 a_t from 留存率题目 
    where 应用名称 = '相机') a left join 
    (select 用户id, 登陆时间 b_t from 留存率题目 
    where 应用名称 = '相机') b 
    on a.用户id = b.用户id and a_t < b_t) c

    6dfe97d711425a85c516886ee6efb141.png

    第三步:使用case when分组计算

    select a_t, count(distinct case when 时间间隔=1 then 用户id else null end) 次日留存数,
    count(distinct case when 时间间隔=1 then 用户id else null end)/count(distinct 用户id) 次日留存率,
    count(distinct case when 时间间隔=3 then 用户id else null end) 3日留存数,
    count(distinct case when 时间间隔=3 then 用户id else null end)/count(distinct 用户id) 3日留存率,
    count(distinct case when 时间间隔=7 then 用户id else null end) 7日留存数,
    count(distinct case when 时间间隔=7 then 用户id else null end)/count(distinct 用户id) 7日留存率
    from
    (select *, datediff(b_t, a_t) as 时间间隔 from
    (select a.用户id, a_t, b_t from
    (select 用户id, 登陆时间 a_t  from 留存率题目 
    where 应用名称 = '相机') a left join 
    (select 用户id, 登陆时间 b_t from 留存率题目 
    where 应用名称 = '相机') b 
    on a.用户id = b.用户id and a_t < b_t) c) d
    group by a_t

    b13814e136f9a05c2342b7d029e3f83b.png

    总结:1、涉及到时间间隔,要考虑自连表的使用;

    2、时间间隔的计算,datediff和timestampdiff的用法区别;

    3、分组计算case when的用法。

    参考

    1. ^注意datediff的格式为datediff(a,b),输出的是a-b的结果;此处也可以使用timestampdiff(day,a,b),输出结果为b-a。此外,datediff只用来计算以天为单位的时间间隔,timestampdiff则可以计算month/day/hour/second等时间间隔
    展开全文
  • 在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是留存...了解了什么是留存率,接下来就是留存率到底是如何计算的呢?现在互联网上实用的是Facebook流出来的计算...
  • 在互联网行业中,用户在某段时间内开始使用应用,经过一段时间...留存用户留存率体现了应用的质量和保留用户的能力,那么我们怎么样计算留存率呢?看下面这个例子: 如上示例所示,我们如何通过Hive Sql 或者 ...
  • 计算app用户留存率

    千次阅读 2016-02-16 11:50:40
    现在各种app盛行,与此同时,运营app也变得非常重要,关注app用户的留存情况是运营中的重要的一项,那么如何计算app的用户留存率呢?在该功能实现过程中,我使用了mysql的存储过程,每天定时任务执行调用存储过程,...
  • hive 关于用户留存率计算

    千次阅读 2018-12-18 16:26:07
    最近接到一个需求,需要统计用户留存率,而且要一次统计多个模块,多个日期的留存率,那如何通过一段hive(SQL)来实现该需求呢,在网上看到一篇很精妙的文章,参考这篇文章实现了需求,可以说是目前见过的一次性统计...
  • 用户留存率

    2017-11-13 17:27:05
    现在各种app盛行,与此同时,运营app也变得非常重要,关注app用户的留存情况是运营中的重要的一项,那么如何计算app的用户留存率呢?在该功能实现过程中,我使用了mysql的存储过程,每天定时任务执行调用存储过程,...
  • 现在要计算用户的次日留存率、三日留存率、七日留存率等。在计算之前,我们先来弄清楚这些留存的定义。 次日留存:即当日登录后,第二天也登录的用户,称为次日留存用户。 三日留存:即当日登录后,第三天
  • 【面试题】手机中的相机是深受大家喜爱的应用之一,下图是某手机厂商数据库中的用户行为信息表中部分数据的截图。用户id:用户唯一标识;应用名称:是手机中的某个应用,例如相机、微信、大众点评等。启动时长:某一...
  • 其实从严格意义上来讲,这些概念都是模糊不清晰不准确的,甚至是有存有病句的,我们可以从留存的计算方式来算,简单地给留存做一个定义:“留存率顾名思义就是一批用户在一定时间里,重复发生某些行为的比率”,那么...
  • 1.用户增长模型AARRR模型(aha时刻(啊哈)) 2.留存的价值 ...首先,假设要计算7天内,每天登录APP的留存率。 1)记录每天登录APP的用户数。 2)追踪这些用户在接下来的每一 天里继续登录APP的数量
  • 背景APP分析中经常用到AARRR模型(海盗模型...留存率计算方法假如今天新增了100名用户,第二天登陆了50名,则次日留存率为50/100=50%,第三天登录了30名,则第二日留存率为30/100=30%,以此类推。用SQL的计算思路用SQL...
  • 背景APP分析中经常用到AARRR模型(海盗模型...留存率计算方法假如今天新增了100名用户,第二天登陆了50名,则次日留存率为50/100=50%,第三天登录了30名,则第二日留存率为30/100=30%,以此类推。用SQL的计算思路用SQL...
  • 在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是留存用户。...了解了什么是留存率,接下来就是留存率到底是如何计算的呢?现在互联网上实用的是Facebook流出来的
  • 基于MySQL进行留存率计算

    千次阅读 2019-10-25 14:51:52
    在对用户的进行行为分析时,经常需要计算用户在软件当中的留存率的情况,如何用SQL进行计算呢,这是本文要解决的问题,在编写SQL前,我们需要了解什么事留存率,这是如何计算的。百度百科对于留存率是这样定义的: ...
  • 如何用SQL做留存率分析

    千次阅读 2019-03-28 20:19:17
    如何用SQL计算留存率呢? 留存率计算方法 假如今天新增了100名用户,第二天登陆了50名,则次日留存率为50/100=50%,第三天登录了30名,则第二日留存率为30/100=30%,以此类推。 用SQL的计算思路...
  • 用户七日留存率分析

    2019-04-22 10:14:33
    如何用SQL计算留存率呢? 留存率计算方法 假如今天新增了100名用户,第二天登陆了50名,则次日留存率为50/100=50%,第三天登录了30名,则第二日留存率为30/100=30%,以此类推。 用SQL的计算思路...
  • 百度提供的计算规则:留存率=新增用户中登录用户数/新增用户数*100%(一般统计周期为天)新增用户数:在某个时间段(一般为第一整天)新登录应用的用户数;登录用户数:登录应用后至当前时间,至少登录过一次的用户数;...
  • 在数据运营中,留存率分析和转化率(漏斗)分析是经常用到的,本文结合具体案例总结了如何利用python求n日留存率以及各环节间转化率。 [指标释义](https://zhuanlan.zhihu.com/p/55823651) 案例数据集介绍: 本文是...
  • 关于用户留存是各大数据分析平台必不可少的功能,企业一般用留存率衡量用户的活跃情况,也是能直接反应产品功能价值的直接指标,留存率是衡量用户质量的最重要指标之一,因此计算各种留存率是数据分析取数的最底层的...
  • 留存率计算也是用户分析模型的计算基础,那么如何在数据库中用SQL实现呢?二、什么是留存率?常见的留存率有次日留存、三日留存、7日留存、14日留存、30日留存、90日留存等等,不同产品用户行为的频率是有差别的,...
  • 【DA】留存率-SQL实现

    2021-04-15 12:12:58
    留存率计算也是用户分析模型的计算基础,那么如何在数据库中用SQL实现呢? 2 什么是留存率 常见的留存率有次日留存、三日留存、7日留存、14日留存、30日留存、90日留存等等,不同产品用户行为的频率是有差别的,...
  • 留存率计算也是用户分析模型的计算基础,那么如何在数据库中用SQL实现呢?二、什么是留存率?常见的留存率有次日留存、三日留存、7日留存、14日留存、30日留存、90日留存等等,不同产品用户行为的频率是有差别的,...
  • 用户七日留存问题

    2020-04-18 20:05:21
    如何用SQL计算留存率呢? 留存率计算方法 假如今天新增了100名用户,第二天登陆了50名,则次日留存率为50/100=50%,第三天登录了30名,则第二日留存率为30/100=30%,以此类推。 用SQL的计算思路...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

如何计算用户留存率