首页 > 其他分享 >常用数据分析模型与方法

常用数据分析模型与方法

时间:2024-03-11 09:33:36浏览次数:26  
标签:数据分析 常用 01 模型 用户 客户 VAR TABLE DAY

一、背景

数据分析中,会有一些分析方法来处理不同的问题。简单总结一下。

方法汇总:https://share.mindmanager.com/#publish/5v_9k6Z9J3gqPL9sQwAGGKL5DgNrclp4iq_q8C7L

 

 

 

 

方法链接:

 

二、RFM分析

2.1  定义

  1. R(Recency) : 客户距离最近的一次采购时间的间隔。
  2. F( Frequency) :指客户在限定的期间内所购买的次数。
  3. M(Monetary):客户的消费能力,通常以客户单次的平均消费金额作为衡量指标

 

 

 

2.2  计算&思路

2.2.1 思路

计算出一张表,设为t1,这张表以客户的ID或者其他唯一识别码为主键,其他的字段视情况而加

类似于Power BI中的维度表。

 

在t1的基础上计算出各自的平均值,然后与平均值比较,大于平均值的为真,小于平均值的假;

 

  • R 当用户最近消费时间距指定时间小于用户平均值时,标记为 1 ,否则标记为 0
  • F 当用户平均单次消费次数大于总体用户平均消费次数时,标记为 1 ,否则标记为 0 
  • M当用户平均单次消费金额大于用户总体平均消费金额时,标记为 1 ,否则标记为 0 

R: 先求出各个用户的最近的消费时间,设为{R1},根据R1求出R2 = {R1}/N ,N为客户数。

F和M都是个体平均与总体平均的比较。

注:不一定是与平均值比较,也可以自己制定值。也不一定只有0和1两种选择,也可以实行打分制,比如1-5分。

 

2.2.2 代码展示

代码是Power BI的DAX函数

t78_RFM = 
VAR DAY_AC = 
    LASTDATE ( '01_calendar'[dates] )
VAR TABLE_1 =
    ADDCOLUMNS (
        ALLSELECTED ( 't02_客户表'[F_01_客户编号], 't02_客户表'[F_02_客户名称] ),
        "@最近下单日期", CALCULATE ( MAX ( 't04_订单主表'[F_03_下单日期] ) ),
        "@最近下单间隔", DATEDIFF ( CALCULATE ( MAX ( 't04_订单主表'[F_03_下单日期] ) ), DAY_AC, DAY ),
        "@消费次数", CALCULATE ( [0002_订单数量_单位_D_] ),
        "@消费金额", CALCULATE ( [0001_销售金额_单位_D_] )
    )
VAR TABLE_2 =
    FILTER ( TABLE_1, AND ( [@最近下单间隔] >= 0, [@最近下单间隔] <> BLANK () ) )
VAR R0 =
    AVERAGEX ( TABLE_2, [@最近下单日期] )
VAR F0 =
    AVERAGEX ( TABLE_2, [@消费次数] )
VAR M0 =
    AVERAGEX ( TABLE_2, [@消费金额] )
VAR TABLE_3 =
    ADDCOLUMNS (
        TABLE_2,
        "@R", IF ( [@最近下单日期] >= R0, 1, 0 ),
        "@F", IF ( [@消费次数] >= F0, 1, 0 ),
        "@M", IF ( [@消费金额] >= M0, 1, 0 )
    )
VAR TABLE_4 =
    ADDCOLUMNS ( TABLE_3, "@RFM", [@R] & [@F] & [@M] )
VAR TABLE_5 =
    ADDCOLUMNS (
        TABLE_4,
        "@客户特征",
            SWITCH (
                TRUE (),
                [@RFM] = "111", "重要价值客户",
                [@RFM] = "101", "重要发展客户",
                [@RFM] = "011", "重要保持客户",
                [@RFM] = "001", "重要挽留客户",
                [@RFM] = "110", "一般价值客户",
                [@RFM] = "100", "一般发展客户",
                [@RFM] = "010", "一般保持客户",
                [@RFM] = "000", "一般挽留客户"           
            )
    )
RETURN
TABLE_5

 

 

2.3 效果展示

 用Power BI所做。

 

 

三、帕累托分析

3.1 定义

帕累托分析,也称为ABC分析。

分类的核心思想:少数项目贡献了大部分价值;找出重点和非重点;从而实现差异化策略和管理。

3.2 计算&思路

3.2.1 思路

  1. 计算出个体的价值与总计占比
  2. 按照个体的价值从大到小排序
  3. 按照顺序将总计占比相加,计算出累计占比

3.2.2 代码

代码为Dax语言。

主要实现累计占比。

VAR TABLE_0 =
    ADDCOLUMNS (
        ALL ( 'd01_省份表'[F_02_省ID], 'd01_省份表'[F_03_省全称], 'd01_省份表'[F_04_省简称] ),
        "@销售金额", [0001_销售金额_单位_D_],
        "@排名",
            RANKX (
                ALL ( 'd01_省份表'[F_02_省ID], 'd01_省份表'[F_03_省全称], 'd01_省份表'[F_04_省简称] ),
                [0001_销售金额_单位_D_],
                [0001_销售金额_单位_D_],
                DESC
            )
                + RANKX (
                    ALL ( 'd01_省份表'[F_02_省ID], 'd01_省份表'[F_03_省全称], 'd01_省份表'[F_04_省简称] ),
                    'd01_省份表'[F_04_省简称]
                ) / 1000
    )
VAR TABLE_1 =
    ADDCOLUMNS (
        TABLE_0,
        "@R", VAR R = [@排名] RETURN RANKX ( TABLE_0, [@排名], R, ASC )
    )
VAR SF =
    MAXX ( 'd01_省份表', 'd01_省份表'[F_04_省简称] )
VAR TABLE_2 =
    FILTER ( TABLE_1, [F_04_省简称] = SF )
VAR R_0 =
    MAXX ( TABLE_2, [@R] )
VAR TABLE_3 =
    FILTER ( TABLE_1, [@R] <= R_0 )
VAR LJJE =
    SUMX ( TABLE_3, [@销售金额] )
-- VAR LJJE2 = CALCULATE([0001_销售金额_单位_D_],TABLE_3)
VAR ZJE =
    CALCULATE (
        [0001_销售金额_单位_D_],
        ALL ( 'd01_省份表'[F_02_省ID], 'd01_省份表'[F_03_省全称], 'd01_省份表'[F_04_省简称] )
    )
VAR LJZB =
    DIVIDE ( LJJE, ZJE )
RETURN
LJZB

 

 

 

3.3 效果展示 

 用Power BI所做。

 

 

四、购物篮分析

4.1 定义

通过研究用户消费数据,将不同商品之间进行关联,并挖掘二者之间联系的分析方法,即「购物篮分析」

若提升度>1,则证明两种商品关联度高,两种商品的组合方式有效,可以考虑放在一起售卖。

 

4.2 计算&思路

  • 支持度:支持度是指A商品和B商品同时被购买的概率,或者说某个商品组合的购买次数占总商品购买次数的比例。
    支持度说明了这条规则在所有事务中有多大的代表性,显然支持度越大,关联规则越重要。
    公式:P(A n B)
  • 置信度:置信度是指购买A之后又购买B的条件概率,简单说就是因为购买了A所以购买了B的概率。
    公式:P(B|A)
  • 提升度:用来判断商品组合方式是否具有实际价值,
    是看组合商品被购买的次数是否高于单独商品的购买次数,大于1说明该组合方式有效,小于1则说明无效
    公式:P(A n B)  /[P(A)*P(B)]

 

4.3  效果展示

虚位以待

 

4.4  对比

4.4.1 定义

皮尔逊相关系数:是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。

4.4.2 代码

from sklearn import datasets
from scipy.stats import pearsonr
import numpy as np
import pandas as pd

# 获取数据集
iris = datasets.load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)


dict_pear = {}
for column in df.columns:
    dict_pear[column] = np.round(pearsonr(df[column], iris['target'])[0], 4)
print(dict_pear)

 

结果:

{'sepal length (cm)': 0.7826, 'sepal width (cm)': -0.4267, 'petal length (cm)': 0.949, 'petal width (cm)': 0.9565}

 

 

4.4.3 对比

  • 购物篮的行维度的找相关性,皮尔逊是列维度的找相关性。

 

五、四象限法

5.1 定义

通过两个维度,对目标进行分组

 

5.2 计算&思路

  1. 选择维度
  2. 设置维度的分割点
  3. 形成四个象限与散点图

 

5.3  效果展示

5.3.1 波士顿矩阵图

市场增长率-相对市场份额矩阵

 

5.3.2 用户生命状态

「最近一次登录距今的时间」和「第一次登录距今的时间」

  • 新用户:刚开始在较短的一段时期内登录/购买了产品的客户。

  • 一次性用户:在较短一段时间内登录/购买产品后,近期不再继续购买的客户。

  • 忠实用户:在较长一段时间内持续登录/购买产品,且在近期仍有购买行为的客户。

  • 流失用户:在较长一段时间内持续登录/购买了产品,但近期不再有购买行为的客户。

 

 

六、库存周转分析

6.1 定义

是一种评估企业存货管理和销售效率的重要方法。它通过计算存货周转率来衡量企业存货的流通速度。

 

6.2 计算&思路

6.2.1 思路

  • 要计算出各个周期的,不同周期(年月周)的期初与期末库存
  • 上期期末即是本期期始,计算本期期始就是计算上期期末。
  • 关键是要计算出各个周期,不同周期的期始期末时间

计算公式

  • 平均存货:(期初库存+期末库存)/2
  • 库存周转率:出库/平均存货 
  • 期间周转天数:N/期间存货周转率, N为周期内的天数

    年度:N = 360   半年:N = 180  季度:N = 90

    月度:N = 30    周度:N = 7       单日: N = 1

6.2.2 代码展示

计算期始库存

0800_产品数量_库存_期初_单位_ = 
VAR DAY_MIN = 
    MINX ( ALL ( '01_Calendar' ), '01_Calendar'[dates] )
VAR DAY_MAX = 
    TREATAS( {MAXX(ALL('t03_入库信息表'),'t03_入库信息表'[F_04_入库日期] )},'01_calendar'[dates])
VAR DAY_AC =
    LASTDATE ( '01_calendar'[dates] )
VAR DAY_TABLE =
    FILTER ( '01_calendar', '01_calendar'[dates] = DAY_AC )
VAR DAY_STARTOFWEEK =
    MAXX ( DAY_TABLE, '01_calendar'[StartOfWeek] )          //表中已经有字段计算出每周的第一天
VAR DAY_STARTOFMONTH =
    MAXX ( DAY_TABLE, '01_calendar'[StartOfMonth] )        //表中已经有字段计算出每月的第一天
VAR DAY_STARTOFQUATER =
    MAXX ( DAY_TABLE, '01_calendar'[StartOfQuarter] )     //表中已经有字段计算出每季度的第一天
VAR DAY_STARTOFHALFYEAR =
    MAXX ( DAY_TABLE, '01_calendar'[StartOfHalfYear] )    //表中已经有字段计算出每半年的第一天
VAR DAY_STARTOFYEAR =
    MAXX ( DAY_TABLE, '01_calendar'[StartOfYear] )        //表中已经有字段计算出每年的第一天
VAR TF0 =
    HASONEVALUE ( '01_Calendar'[dates] )
VAR TF1 =
    HASONEVALUE ( '01_Calendar'[YW] )
VAR TF2 =
    HASONEVALUE ( '01_Calendar'[YM] )
VAR TF3 =
    HASONEVALUE ( '01_Calendar'[YQ] )
VAR TF4 =
    HASONEVALUE ( '01_Calendar'[YH] )
VAR TF5 =
    HASONEVALUE ( '01_Calendar'[FY00] )
VAR STARTOFDATE1 =
    SWITCH (
        TRUE (),
        TF0, DAY_AC,
        TF1, DAY_STARTOFWEEK,
        TF2, DAY_STARTOFMONTH,
        TF3, DAY_STARTOFQUATER,
        TF4, DAY_STARTOFHALFYEAR,
        TF5, DAY_STARTOFYEAR,
        BLANK()
    )
VAR STARTOFDATE =
    TREATAS ( { STARTOFDATE1 }, '01_calendar'[dates] )
VAR DAY_QC = IF(DAY_MIN<=DATEADD ( STARTOFDATE, -1, DAY ),DATEADD ( STARTOFDATE, -1, DAY ),DAY_MIN)

-- VAR DAY_QC = IF(DAY_QC1<=DAY_MAX,DAY_QC1,DAY_MAX)

VAR DATE_QC =  DATESBETWEEN ( '01_calendar'[dates], DAY_MIN, DAY_QC )
VAR LK =
    CALCULATE ( SUM('t03_入库信息表'[F_02_入库产品数量]), DATE_QC)
VAR CK =
    CALCULATE ( [0019_产品数量_出库_单位_D_], DATE_QC )
VAR KC = LK - CK
RETURN
    KC

 

 

6.3 结果展示

 

 

七、漏斗分析

7.1 定义

用于评估在用户转化过程中,从初步互动到最终目标完成的每个阶段的转化率或流失情况。

有三要素

  • 时间:特指漏斗的转化周期,即为完成每一层漏斗所需时间的集合

  • 节点:每一层漏斗,就是一个节点
  • 流量:就是人群

7.2 计算&思路

转化率 = 通过该层的流量/到达该层的流量

要注意,分子一定是分母的一部分。

 

7.3 结果展示

虚位以待

 

八、用户粘性分析

8.1 定义

用户粘性是指用户对于品牌或产品的忠诚、信任与良性体验等结合起来形成的依赖程度和再消费期望程度,是了解产品健康度的重要指标。

 

8.2 计算&思路

一周内,1-7天,每天使用的客户占比与数量
主要用饼图

每周,1-7天,每天使用的客户占比与数量
主要用折线图与柱状图

 

8.2.1 思路

  1. 计算出订单表中在目标日期中的部分,设为t1
  2. 计算出t1中客户在目标日期的消费天数
  3. 计算出不同消费天数的客户占比

如果在Power BI中,使用计算组是否更好呢?

 

8.3 结果展示

虚位以待

 

 

九 留存分析

9.1 定义

留存分析是一种用来分析用户参与情况/活跃程度的分析模型,考查看进行初始行为后的用户中, 经过一段时间后仍然存在客户行为(如登录、消费)

 

9.2 计算&思路

9.2.1 思路

某一段时间内(时间段a)的新增用户在若干天后的另一段时间(时间段b)的留存数量 / (时间段a)的新增用户总量

  • 和漏斗分析一样,分子必须是分母的一部分
  • 留存中,第5天留存,不一定在第3天留存

 

9.2.2 代码

SQL SERVER代码

select F_03_下单日期,count(*) as 下单人数
,SUM(CASE WHEN 间隔日期 = 1 THEN 1 ELSE 0 END) AS '次日留存人数'
,SUM(CASE WHEN 间隔日期 = 2 THEN 1 ELSE 0 END) AS '2日留存人数'
,SUM(CASE WHEN 间隔日期 = 3 THEN 1 ELSE 0 END) AS '3日留存人数'
,SUM(CASE WHEN 间隔日期 >= 4 THEN 1 ELSE 0 END) AS '4日即以上留存人数'
from 
(
select A.F_03_下单日期,A.F_05_客户编号,B.F_03_下单日期 as 后期下单日期
,datediff(day,A.F_03_下单日期 ,B.F_03_下单日期 ) as 间隔日期
from cnblogs.keep.订单表 AS A
LEFT JOIN cnblogs.keep.订单表 AS B
ON A.F_05_客户编号 = B.F_05_客户编号 
WHERE A.F_03_下单日期 < B.F_03_下单日期 
) as t1
GROUP BY F_03_下单日期

 

 

 

 

9.3 结果展示

 

 

 

10 客户画像

10.1 定义

通过了解用户的基本信息,行为信息,需求信息等,了解不同客户的客户的不同需求,实现精准推广获客,营销获利。

 

10.2 计算&思路

  • 基本信息:年龄 性别 地域 学历 职业 资产
  • 行为信息:点击 分享 收藏 评论 复购 投诉
  • 需求信息:购买产品的功能,投诉的诉求

 

 

11  AARRR用户运营分析

11.1 定义

解释实现用户增长的 5 个指标:获客、激活、留存、收益、传播。从获客到传播推荐,整个 AARRR 模型形成了用户全生命周期的闭环模式,不断扩大用户规模,实现持续增长。

  • Acquistion:用户获取,获客即拉新,即让用户知道了解认识到有这样一个 APP 并来试用。
  • Activation:用户激活,激活并不直接对等注册成功。激活要做的是活跃客户
  • Retention:用户留存
  • Revenue:获得收益
  • Referral:推荐传播,当产品有了一定规模的用户之后,就需要考虑激发用户间的自发传播。自传播的数据指标是K因子(推荐系数)

 

11.2 计算&思路

  • 获客:分析维度主要是数量与质量,
  • 激活:短视频软件需要新用户观看到一定时长聊天; 软件需要新用户完成一次对话; 购物软件购买过一次的用户为激活用户;
  • 留存:可以使用留存分析
  • 收益:对收益客户实行帕累托分析,对收益客户实行RFM分析,对购买的产品实行购物篮分析,形成客户画像
  • 传播:K=(平均每个用户向他的朋友们发出的邀请的数量)* (接收到邀请的人转化为新用户的转化率)
    K值的高低,直接体现自传播结果水平,当K值大于1时,将激发自传播巨大的力量。

 

这些节点,也可以用作漏斗分析。

 

标签:数据分析,常用,01,模型,用户,客户,VAR,TABLE,DAY
From: https://www.cnblogs.com/qianslup/p/18062910

相关文章

  • 多线程系列(十六) -常用并发原子类详解
    一、简介在Java的java.util.concurrent包中,除了提供底层锁、并发同步等工具类以外,还提供了一组原子操作类,大多以Atomic开头,他们位于java.util.concurrent.atomic包下。所谓原子类操作,顾名思义,就是这个操作要么全部执行成功,要么全部执行失败,是保证并发编程安全的重要一环。相......
  • Redis数据类型及其常用命令
    一、Redis字符串(String)String是Redis最基本的类型,一个key对应一个value,它是二进制安全的(String可以包含任何数据,如jpg图片或者序列化的对象),一个字符串value最多可以是512MBSETkeyvalue[NX|XX][GET][EXseconds|PXmilliseconds|EXATunix-time-seconds|PXATunix-......
  • 3D目标检测技术有哪些好用的模型?
    常用的3D目标检测模型有:   VoxelNet:基于卷积神经网络的模型,可以进行立体感知和目标检测。   PointPillars:利用点云数据进行立体感知和目标检测的模型。   AVOD(AverageViewpointFeatureAggregationfor3DObjectDetection):基于多视角特征聚合的3D目标检测模......
  • 无线表格识别模型LORE转换库:ConvertLOREToONNX
    引言总有小伙伴问到阿里的无线表格识别模型是如何转换为ONNX格式的。这个说来有些惭愧,现有的ONNX模型是很久之前转换的了,转换环境已经丢失,且没有做任何笔记。今天下定决心再次尝试转换,庆幸的是转换成功了。于是有了转换笔记:ConvertLOREToONNX。这次吸取教训,环境文件采用Anacond......
  • 解密prompt系列26. 人类思考vs模型思考:抽象和发散思维
    在ChainofThought出来后,出现过许多的优化方案例如Treeofthought,GraphofThought,AlgorithmofThought等等,不过这些优化的出发点都更加"MachineLike",而非"HumanLike",哈哈不是说机器化不好,仅仅是对AGI的一些个人偏好而已。所以如果我们从人类思考的角度出发,能否把当......
  • Java常用类
    一、String类java.lang.String类的使用(一)概述String:字符串,使用一对""引起来表示。String声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小String内部定义了finalchar[]value......
  • 基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览RTL图:   仿真图:   导入到matlab显示效果如下:   2.算法运行软件版本matlab2022a vivado2019.2 3.算法理论概述      在计算机视觉领域,基于肤色模型和中值滤波的手部检测方法是一种常见的初步定位策略。该方法主要分为......
  • App自动化测试之元素定位及常用方法
    1.元素定位appium元素定位方式跟selenium是一样的通过appium客户端启动服务器自动连接手机之后,进入对应的被测app以及界面app有不同的界面和不同的功能app的界面主要是以元素构成需要对界面功能进入自动化测试就一定要定位该界面元素执行对应的操作方法对手机app的界面进......
  • Nomic Embed:能够复现的SOTA开源嵌入模型
    Nomic-embed-text是2月份刚发布的,并且是一个完全开源的英文文本嵌入模型,上下文长度为8192。它在处理短文和长文本任务方面都超越了现有的模型,如OpenAI的Ada-002和text-embedding-3-small。该模型有137M个参数在现在可以算是非常小的模型了。模型、训练代码以及一个包含2.35亿文本......
  • Ollama 运行 GGUF 模型
    Ollama默认直接支持很多模型,只需要简单的使用ollamarun命令,示例如下:ollamarungemma:2b就可安装、启动、使用对应模型。可直接支持的模型看:https://ollama.com/library在https://huggingface.co/models上有数万的模型,Ollama默认支持的不可能全部覆盖,那如何支持其它模型......