如何计算指标波动贡献率?(附Pandas实现)

news2025/1/11 9:00:14

大家好,我是阿粥

“为什么这个月销售额提升了30%?”

“为什么转化率又降了,同比竟然降低了42%,什么原因导致的呢?”

这些都是数据分析师在工作中经常会遇到的问题,甚至有些基础岗的数据分析师要花80%以上的精力处理这类问题:指标降低或者提升了多少,以及波动的原因是什么。

这类问题可以概括为指标波动归因分析,很多时候用的是根据经验探索拆分的办法,非常占用数据分析师的时间,而且数据分析师获得的价值感也不高。

如果能够找到一些高效定位指标波动原因的方法,形成自动化判断机制,就能大大解放数据分析师的精力,使其能够把更多时间用在专题分析和推动业务上。

今天先讲解几种常见的计算指标波动贡献率的方法,量化波动来源。


一、什么是指标波动贡献率

当核心指标发生了波动,例如销售额从100万元上升到1000万元,分析师的活儿就来了,这个指标的波动可以从多个维度拆解。

  • 渠道维度:天猫渠道、京东渠道、线下渠道等。

  • 新老用户维度:新用户和老用户。

  • 用户属性维度:不同年龄、消费力、兴趣偏好、地区。

  • 其他底层数据能够支持的维度

能拆解的维度很多很多,一般来说,数据分析师根据自身经验,会选择一两个主要的维度优先进行拆解和验证。

例如从渠道维度进行拆解,可以进一步细分为A渠道、B渠道、C渠道三个元素。我们实际关注的是,A、B、C每一个渠道销售额的变化对于整体销售额波动到底有多大影响。

为了量化每一个元素对总体波动的影响程度,我们引入了“贡献率”的概念。贡献率主要回答“每一个元素的变化对总体波动的贡献是多少”这个问题。通常,各元素贡献率之和等于100%,正好可以完全解释总体波动。

需要强调的是,为了避免概念产生歧义,在本章的销售拆解中,渠道、用户、地区是指不同的维度渠道下面具体的渠道值A、B、C称为不同的元素。

对于不同类型的指标,有与之对应的不同的贡献率计算方法。


二、可加型指标

1、计算逻辑

可加型指标是指那些数值可以直接相加的指标,例如访客数、销量、销售额。这里以一个简单的案例来介绍可加型指标的计算方法,案例数据如表14-1所示。

表14-1 可加型指标基础数据

5facf719a0b11249cdbfc86a7835c0ce.png

总体销售额从活动前的11800元上升到活动后的14300元,环比提升21%。总体又可以拆分成A、B、C三个渠道,每个渠道活动前后的销售、环比值我们已经计算好了。

从环比波动的角度来看,B和C两个渠道波动较大。不过,由于B、C两个渠道体量和A差了很多,虽然它们本身波动很大,但对于总体波动的影响并不太大,其环比无法说清楚问题。所以,我们用贡献率来衡量每个渠道对于总体波动的影响。

要计算贡献率,我们先用活动后销售额减活动前销售额,计算出每个渠道销售前后的波动值,如表14-2所示。

表14-2 可加型指标计算波动值

295499570100406e3473fe04b1397c78.png

然后,用每个渠道的波动值除以总体波动值,得到每个渠道波动占总体波动的比重,也就是我们所说的波动贡献率。A渠道的波动贡献率=A渠道波动值/ 总体波动值=1000/2500 = 40%,B渠道的波动贡献率也是40%,C渠道的是20%。具体结果如表14-3所示。

表14-3 可加型指标波动贡献率结果

41162ed8a473e2e138daa98fe54e7e65.png

从波动贡献率可以发现,A和B渠道对于总体波动的贡献(也可以说影响程度)都很大,是最主要的影响因素。而C渠道虽然环比波动167%,但是受限于体量,其波动贡献率只有20%。

2、可加型指标波动贡献率的Pandas实现

我们构造上面的案例数据,before和after分别指代活动前、后销售额:

d1 = pd.DataFrame({'渠道':['A','B','C'],
                   'before':[11000,500,300],
                   'after':[12000,1500,800]})

直接计算环比、波动值、波动贡献率:

d1['环比'] = (d1['after'] - d1['before']) / d1['before']
d1['波动值'] = d1['after'] - d1['before']
d1['波动贡献率'] = d1['波动值'] / d1['波动值'].sum()     
#用每一行波动值除以总体波动值汇总得到贡献度
print(d1)

代码运行结果如下:

渠道 before   after    环比     波动值   波动贡献率
0   A   11000   12000   0.090909   1000     0.4
1   B   500     1500    2.000000   1000     0.4
2   C   300     800     1.666667   500      0.2

三、乘法型指标
1、计算逻辑

还记得我们在电商理论部分提到的指标拆解的黄金公式吗?销售额 = 访客数 X 转化率 X 客单价。

如果销售额出现了异常波动,业务人员大概率会循着这个公式来定位问题,判断访客、转化率、客单价每个指标的波动情况及影响。

在这个场景下,可加型指标波动贡献率的计算方式是无法解决问题的,因为各指标之间是乘法关系,而且量纲不同,无法直接相加减。想要计算出各指标对于总体指标波动的影响,使用对数转换法是条思路。

下面我们一起来看案例数据,如表14-4所示。

表14-4 乘法型指标案例数据

3f679e67a1975fffa650c4adae9df3fb.png

案例数据中,销售额增长了126%,访客数和转化率分别环比提升50%、60%,而客单价环比下降6%。

三个指标对于销售额贡献率的计算,可以使用对数转换对数LN转换

ad328b4df94d6586ba8ae0275af114f4.png 

活动前后访客转化率、客单价每个值进行对数转换,转换后的值就能够套用可加型指标贡献率的计算方法。其中LN是以常数e为底数的对数,例如在Excel中可以直接输入LN(数值)就可以完成转换,计算结果如表14-5所示。

表14-5 乘法型指标LN转换

1f93807b397cc11c2766589bad3558f2.png


将活动前访客数10000用LN(10000)进行转化,得到9.21;对活动后的访客数与其他指标也都做这样的转化。经过转化之后,相关值的波动是可以直接计算的,我们计算LN的差值(LN活动后-LN活动前),如表14-6所示。

表14-6 计算LN转化后的差值

d945b0db327dae1f5750193e380de0df.png

访客数、转化率、客单价的LN差值之和正好等于销售额的LN差值。到这一步,我们可以借用上面介绍的波动占比方法来计算贡献度,用每个元素的LN差值除以总体LN差值(销售额的LN差值),如表14-7所示。

表14-7 乘法型指标波动贡献率的计算

16ce0a49a60596aa5cd4e9da19b3e354.png

最终可以得到:转化率的波动贡献率为57.55%,排名第一;其次是访客数的波动贡献率,为49.65%;而客单价是环比降低的,对应的是负的贡献率。贡献率的总体之和是100%,逻辑自洽。

2、乘法型指标波动贡献率的Pandas实现

依然先构造数据,这次我们把销售额也直接构造出来:

d2 = pd.DataFrame({'指标':['访客数','转化率','客单价','销售额'],
                   'before':[10000,0.05,350,175000],
                   'after':[15000,0.08,330,396000]})

计算环比、LN后的值和波动贡献率:

import numpy as np #numpy的log可以直接计算一个数组


d2['环比'] = (d2['after'] - d2['before']) / d2['before']
d2['LN_before'] = np.log(d2['before'])
d2['LN_after'] = np.log(d2['after'])
d2['LN波动值'] =  d2['LN_after'] - d2['LN_before']
d2['波动贡献率'] = d2['LN波动值'] / d2['LN波动值'][3].sum()   
#总体数据索引是3,因此这里用3来找到总体值


print(d2)

运行结果如下。

a3df434f3c42e1b59b7f8b51152dc134.png

这样就得到了每个指标对于销售额的波动贡献率。

以上。

上面核心内容来自于我的新书《Python电商数据分析实战:从电商实际案例出发洞悉数据分析全流程》第十四章指标波动归因实战的部分内容。

书中这一章还会详细介绍了除法型指标的计算方法,以及如何用经典算法实现自动指标波动归因。

附上本书的章节目录,按照从后往前顺序,感兴趣的朋友可滑动查看:

2b6b4ae26a7bd67b119bc144f76dd171.png

a17ff1751afe90d7df8f859bb06399c6.png

269bad2822fd8140a4798283d88e10bb.png

15a8effa9c93563a733fd2ad58aa8a34.png

eedc78be4017d5baf2ec0ed83185e0c3.png

bef7765b3b192210ecc823623523bf6a.png

56c5df80ede06624e772516cef862a45.png

1f0a003895e7f2a02b066eef02e87081.png

9b0be35e8b1e82e0cb985a7d67d5fb07.png

<<< 左右滑动查看更多 >>>

最后,我跟出版社争取的京东限时5折福利,原价89元,现在只需要44.5元,只剩最后1天!!!不要错过了~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1375068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FineBI实战项目一(14):订单销售总数分析开发

点击添加组件按钮&#xff0c;打开组件页面。 设置组件的属性&#xff0c;比如图标样式&#xff0c;指针值&#xff0c;目标值、颜色、大小、标签等。 点击下方切换到仪表盘。 点击仪表板中的左上方组件&#xff0c;添加组件到仪表盘。 编辑标题 第一个组件成功添加到仪表板。

一包多语言——使用FontForge合并字体

大家好&#xff0c;我是阿赵。   比较多游戏做了一个游戏包里面包含了多种语言&#xff0c;可以游戏内切换。这里分享一个合并多种语言字体的方法。 一、遇到的问题 假设我们游戏需要同时显示简体中文、泰文、老挝文三种语言。 解决方案有多种&#xff1a; 1、准备多种字体 …

Linux学习记录——삼십구 数据链路层协议

文章目录 1、了解数据链路层2、认识以太网3、认识MAC地址4、以太网报文5、局域网通信原理1、基本原理2、数据碰撞3、交换机4、ARP协议5、RARP协议6、局域网中间人 6、DNS&#xff08;简单介绍&#xff09;7、ICMP协议1、报文2、traceroute命令 7、NAT技术1、基本过程2、NAPT3、…

springboot基于Web的社区医院管理服务系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括社区医院管理服务系统的网络应用&#xff0c;在外国线上管理系统已经是很普遍的方式&#xff0c;不过国内的管理系统可能还处于起步阶段。社区医院管理服务系统具有社区医院信…

你了解计算机网络的发展历史吗?

1.什么是计算机网络 计算机网络是指将一群具有独立功能的计算机通过通信设备以及传输媒体被互联起来的&#xff0c;在通信软件的支持下&#xff0c;实现计算机间资源共享、信息交换或协同工作的系统。计算机网络是计算机技术与通信技术紧密结合的产物&#xff0c;两者的迅速发展…

Vue3组件库 -- element plus 树形选择器组件怎样显示已有的树形菜单?

<el-tree-selectv-model"form.topmneu":data"tableData":props"{ label: title, value: id }":render-after-expand"false"style"width: 100%"check-strictly/> 添加 :props "{ lable : 字段名 , value: 字段…

【计算机网络】TCP原理 | 可靠性机制分析(三)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

讲讲关于跨域的问题,什么是跨域?怎么办?

文章目录 什么是跨域如果非同源&#xff0c;共有三种行为受到限浏览器客户端和向服务器跨域请求的判定流程 跨域问题演示参考 以下内容为我结合他人知识进行的自我总结, 如有错误欢迎指出~ 什么是跨域 跨域就是不同的域名下的资源访问&#xff0c;会被浏览器的本地安全策略阻…

清晰讲解Cookie、Session、Token、JWT之间的区别

文章目录 什么是认证(Authentication)什么是授权(Authorization)什么是凭证(Credentials)什么是Cookie什么是SessionSession的痛点 Cookie 和 Session 的区别什么是Token(令牌)Acesss TokenRefresh Token Token 和 Session 的区别Token 与 Cookie什么是 JWT生成JWTJWT 的原理JW…

rime中州韵小狼毫 词组注释 滤镜

在rime中州韵小狼毫 联想词组 滤镜一文中&#xff0c;我们通过Filter滤镜功能配置了联想词组的功能&#xff0c;这使得我们在输入一些关键词汇时&#xff0c;可以联想补充一些附加的词组&#xff0c;例如我输入“手机”&#xff0c;就可以联想补充对应的手机号&#xff0c;如下…

C语言通过ODBC函数操作Access数据库(mdb和accdb格式)(char字符数组)

编译环境&#xff1a;Windows XP Visual Studio 2010 数据库&#xff1a;Access 2010&#xff0c;accdb格式 本例程只使用char[]字符数组&#xff0c;不使用wchar_t[]字符数组&#xff0c;更适合C语言初学者。 如果读取字符串时&#xff0c;提供的字符数组空间小了&#xff0c…

Airtest-Selenium实操小课:爬取新榜数据

1. 前言 最近看到群里很多小伙伴都在用Airtest-Selenium做一些web自动化的尝试&#xff0c;正好趁此机会&#xff0c;我们也出几个关于web自动化的实操小课&#xff0c;仅供大家参考~ 今天跟大家分享的是一个非常简单的爬取网页信息的小练习&#xff0c;在百度找到新榜网页&am…

【C初阶——指针4】鹏哥C语言系列文章,基本语法知识全面讲解——指针(4)

本文由睡觉待开机原创&#xff0c;转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 这里写目录标题 前言1.回调函数2.qsort函数的使用3.qsort函数的模拟实现 思路大纲&#xff1a; 前言 本节博…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第十天-Linux下mplayer音乐播放器练习题(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

【每日一题】2696. 删除子串后的字符串最小长度-2024.1.10

题目&#xff1a; 2696. 删除子串后的字符串最小长度 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作&#xff0c;在每一步操作中&#xff0c;你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作&#xff0c…

Element|Upload结合Progress实现上传展示进度条

背景 &#xff1a; 项目里的 附件上传 题型组件&#xff0c;用户在上传过程中&#xff0c;如果文件较大&#xff0c;上传过程较慢&#xff0c;而又没有一个类似 Loading... 的加载过程的话&#xff0c;会显得干愣愣的&#xff0c;用户体验较差&#xff0c;所以需要添加一个进度…

Springboot+vue的毕业论文管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的毕业论文管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的毕业论文管理系统&#xff0c;采用M&#xff08;model&…

JWT---JSON Web Token

JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任&#xff0c;因为它是数字签名的。 JSON Web Token的结构是什么样的 JSON…

Handsfree_ros_imu:ROS机器人IMU模块ARHS姿态传感器(A9)Liunx系统Ubuntu20.04学习启动和运行教程

这个是篇学习 Handsfree_ros_imu 传感器的博客记录 官方教程链接见&#xff1a; https://docs.taobotics.com/docs/hfi-imu/ 产品功能 IMU 内有 加速度计&#xff0c;陀螺仪&#xff0c;磁力计这些传感器&#xff0c;通过固定 imu 到物体上后&#xff0c;可以获取物体在运动…

登录模块的实现

一.前期的准备工作 1.页面的布局 (1)表单的校验: 利用element-ui提供的文档绑定rules规则后实现校验 (2)跨域的配置 &#xff1a; 利用proxy代理来解决跨域的问题 (3)axios拦截器的配置 两个点:1. 在请求拦截的成功回调中,如果token,因为调用其它的接口需要token才能调取。 在请…