指标计算
学习目标
- 掌握数据指标的概念
- 知道常见的业务指标含义
- 掌握常用数据指标计算方法
在之前的课程中,我们学习了Excel, Tableau, SQL, Python, 机器学习,它们都属于数据分析要用到的工具,接下来我们就要结合业务场景,综合运用这些工具,来完成一些具体任务。
数据分析/大数据分析的目的是为了用数据驱动运营,用数据驱动业务增长(数据驱动设计,数据驱动决策,数据驱动XXX……),我们之前也提到过数据分析的几个层次,描述性分析→诊断性分析→预测分析→规范分析。
要做到数据驱动,最基本的层次就是描述性分析,也就是用数据来记录企业的业务状况,用数据记录每天实际发生的事实。在这个阶段,我们需要建立一套数据指标来描述我们的业务,并使用这一套指标建立相关的报表(日报,周报,月报),有了这一套指标,我们就可以监控每天业务运行的情况,方便及时发现问题
一 数据指标简介
1、什么是数据指标
- 数据指标概念:可将某个事件量化,且可形成数字,来衡量目标。
- 数据指标的作用:当我们确定下来一套指标,就可以用指标来衡量业务,判断业务好坏
- 最近的业务不错,昨天注册了一万多人 XX月XX日 新注册用户9820人,超过目标820人
- 最近用户很多对我们的产品不满意 XX月XX日 某产品日退货85件 ,累计30天退货率10%
2、常用的业务指标
-
活跃用户指标:一个产品是否成功,如果只看一个指标,那么这个指标一定是活跃用户数
- 日活(DAU):一天内日均活跃设备数(去重,有的公司启动过APP就算活跃,有的必须登录账户才算活跃)
- 月活(MAU):一个月内的活跃设备数(去重,一般用月活来衡量APP用户规模)。
- 周活跃数(WAU):一周内活跃设备数(去重)
- 活跃度(DAU/MAU):体现用户的总体粘度,衡量期间内每日活跃用户的交叉重合情况
-
新增用户指标:主要是衡量营销推广渠道效果的最基础指标
- 日新增注册用户量:统计一天内,即指安装应用后,注册APP的用户数。
- 周新增注册用户量:统计一周内,即指安装应用后,注册APP的用户数。
- 月新增注册用户量:统计一月内,即指安装应用后,注册APP的用户数。
- 注册转化率:从点击广告/下载应用到注册用户的转化。
- DNU占比:新增用户占活跃用户的比例,可以用来衡量产品健康度
- 新用户占比活跃用户过高,那说明该APP的活跃是靠推广得来
-
留存指标:是验证APP对用户吸引力的重要指标。通常可以利用用户留存率与竞品进行对比,衡量APP对用户的吸引力
- 次日留存率:某一统计时段新增用户在第二天再次启动应用的比例
- 7日留存率:某一统计时段新增用户数在第7天再次启动该应用的比例,14日和30日留存率以此类推
-
行为指标:
- PV(访问次数,Page View):一定时间内某个页面的浏览次数,用户每打开一个网页可以看作一个PV。
- 某一个网页1天中被打开10次,那么PV为10。
- UV(访问人数,Unique Visitor):一定时间内访问某个页面的人数。
- 某一个网页1天中被1个人打开过10次,那么UV是1。
- 通过比较PV或者UV的大小,可以看到用户喜欢产品的哪个功能,不喜欢哪个功能,从而根据用户行为来优化产品
- 转化率:计算方法与具体业务场景有关
- 淘宝店铺,转化率=购买产品的人数/所有到达店铺的人数
- “双11”当天,有100个用户看到了你店铺的推广信息,被吸引进入店铺,最后有10个人购买了店铺里的东西,那么转化率=10(购买产品的人数)/100(到店铺的人数)=10%。
- 在广告业务中,广告转化率=点击广告进入推广网站的人数/看到广告的人数。
- 例如经常使用百度,搜索结果里会有广告,如果有100个人看到了广告,其中有10个人点击广告进入推广网站,那么转化率=10(点击广告进入推广网站的人数)/100(看到广告的人数)=10%
- 淘宝店铺,转化率=购买产品的人数/所有到达店铺的人数
- 转发率:转发率=转发某功能的用户数/看到该功能的用户数
- 现在很多产品为了实现“病毒式”推广都有转发功能
- 公众号推送一篇文章给10万用户,转发这篇文章的用户数是1万,那么转发率=1万(转发这篇文章的用户数)/10万(看到这篇文章的用户数)=10%
- PV(访问次数,Page View):一定时间内某个页面的浏览次数,用户每打开一个网页可以看作一个PV。
-
产品数据指标
- GMV (Gross Merchandise Volume):指成交总额,也就是零售业说的“流水”
- 需要注意的是,成交总额包括销售额、取消订单金额、拒收订单金额和退货订单金额。
- 成交数量对于电商产品就是下单的产品数量,下单就算
- 人均付费=总收入/总用户数
- 人均付费在游戏行业叫ARPU(Average Revenue Per User)
- 电商行业叫客单价
- 付费用户人均付费(ARPPU,Average Revenue Per Paying User)=总收入/付费人数,这个指标用于统计付费用户的平均收入
- 付费率=付费人数/总用户数。付费率能反映产品的变现能力和用户质量
- 例如,某App产品有100万注册用户,其中10万用户有过消费,那么该产品的付费率=付费人数(10万)/总用户数(100万)=10%。
- 复购率是指重复购买频率,用于反映用户的付费频率。
- 复购率指一定时间内,消费两次以上的用户数/付费人数
- GMV (Gross Merchandise Volume):指成交总额,也就是零售业说的“流水”
-
推广付费指标:
-
CPM(Cost Per Mille) :展现成本,或者叫千人展现成本
- 广告每展现给一千个人所需花费的成本。按CPM计费模式的广告,只看展现量,按展现量收费,不管点击、下载、注册。一般情况下,APP启动开屏,视频贴片、门户banner等非常优质的广告位通常采用CPM收费模式。
-
CPC(Cost Per Click) 点击成本,即每产生一次点击所花费的成本
- 典型的按点击收费的模式就是搜索引擎的竞价排名,如谷歌、百度、360、搜狗的竞价排名。在CPC的收费模式下,不管广告展现了多少次,只要不产生点击,广告主是不用付费的。只有产生了点击,广告主才按点击数量进行付费
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5eWvFlgv-1631597510767)(img\cpc.png)]
-
按投放的实际效果付费(CPA,Cost Per Action)包括:
- CPD(Cost Per Download):按App的下载数付费;
- CPI(Cost Per Install):按安装App的数量付费,也就是下载后有多少人安装了App;
- CPS(Cost Per Sales):按完成购买的用户数或者销售额来付费。
-
-
不同的业务可能关心的指标不尽相同
3、 如何选择指标
- 好的数据指标应该是比例
- 公众号打开次日文章用户数(活跃用户数)是1万,让你分析公众号是否有问题。这其实是看不出什么的
- 总粉丝量是10万,那么可以计算出次日活跃率=1万(活跃用户数)/10万(总用户数)=10%
- 和行业平均活跃率(公众号的平均活跃率是5%)比较,会发现这个公众号活跃率很高。
- 根据目前的业务重点,找到北极星指标
- 在实际业务中,北极星指标一旦确定,可以像天空中的北极星一样,指引着全公司向着同一个方向努力
- 根据目前的业务重点寻找北极星指标:
- 北极星指标没有唯一标准。不同的公司关注的业务重点不一样
- 同一家公司在不同的发展阶段,业务重点也不一样
- airbnb爱彼迎
二 Pandas指标计算
接下来我们将使用在线零售的流水数据计算相关指标, 首先我们来了解一下要用到的数据:

-
数据中包含了某电商网站从2009年12月到2011年12月两年间的销售流水, 每条记录代表了一条交易记录, 包含如下字段
Invoice
: 发票号码StockCode
: 商品编码Description
: 商品简介InvoiceDate
: 发票日期Price
: 商品单价Customer ID
: 用户IDCountry
: 用户所在国家
我们将要计算如下指标:
-
月销售金额(月GMV) : 对流水数据按月分组, 将每个月的每笔交易汇总, 对销售金额求和
- 对于零售业务而言, 总销售金额是最重要的指标, 我们称之为北极星指标
- GMV(全称Gross Merchandise Volume),即商品交易总额,多用于电商行业,一般包含拍下未支付订单金额。
-
月销售额环比:当前月销售金额/上一个月的销售金额 * 100%
月销售额环比发生波动剧烈时,为了找到具体原因我们进一步将核心的月销量指标拆解:
月销量 = 月均活跃用户数 * 月均用户消费金额
为了衡量当前业务的健康程度, 我们还会计算如下指标
- 新用户占比: 新老用户
- 激活率
- 月留存率
北极星指标是最能体现您的产品为客户提供的核心价值的单一指标。该指标取决于我们产品、定位、目标等。
- Airbnb 的 North Star Metric 是预订夜数,而对于 Facebook,它是每日活跃用户。
- 接下来我们使用在线零售的示例数据集。 对于在线零售,我们选择每月收入**(月GMV)** 作为北极星指标
1、 导入模块&加载数据
from datetime import datetime, timedelta
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
data_1 = pd.read_excel('data/online_retail_II.xlsx',sheet_name='Year 2009-2010')
data_2 = pd.read_excel('data/online_retail_II.xlsx',sheet_name='Year 2010-2011')
数据在Excel文件中, 分别保存在两个不同的Sheet中, 分别记录了2009-2010年和2010-2011的销售记录, 接下来我们将它们合并到一个DataFrame中
data = pd.concat([data_1,data_2],ignore_index=True)
data.head()

data.info()

-
从数据中看出 ,一共有1067371 条数据,记录了交易的相关信息,与后续指标计算相关的字段
- CustomerID 用户ID
- UnitPrice 商品单价
- Quantity 商品购买数量
- InvoiceDate 购买日期
利用上面的字段我们先计算我们的北极星指标,月收入
2、 数据清洗
整理数据,将后续用不到的字段Country去掉, 为了方便大家对代码的理解把列名换为中文
retail_data = data[['Invoice', 'StockCode', 'Description', 'Quantity', 'InvoiceDate','Price', 'Customer ID']]
retail_data.columns = ['订单编号','商品编号','商品描述','购买数量','购买时间','商品单价','用户ID']
retail_data.head()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nfkv5tmC-1631597510769)(img\metrics3.png)]
retail_data['购买时间'].describe()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tRxhq1Er-1631597510770)(img\metrics30.png)]
可以看出,我们的数据从2009年12月到2011年12月
# 查看数据分布情况
retail_data.describe()

-
发现购买数量和商品单价最小值均小于零, 我们在计算GMV之类的指标时都不统计退货,所以需要处理这部分数据
retail_data.query('购买数量<0')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sQK2IaTm-1631597510772)(img\metrics5.png)]
- 通过dataframe 的query API查询 购买数量<0 和 商品单价<0的订单
- 购买数量< 0 订单的发票号码都是以C开头, 属于有退货的订单
retail_data.query('商品单价<0')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZasPsWkk-1631597510773)(img\metrics6.png)]
- price小于零的是坏账调整,我们把购买数量<0和商品单价<0的订单删除
retail_data_clean = retail_data.query('购买数量>0 & 商品单价 >0'