数仓开发需要了解的BI数据分析方法

文章讲述了如何通过RFM模型对客户进行分类,区分A、B、C三个重要性级别,强调了A类客户贡献了大部分价值。使用SQL操作数据并展示了如何将销售数据转化为展示客户价值和营销策略的图表。内容还涵盖了RFM分析的基础概念和在实际中的应用,以及提供了一套系统化的学习资源。
摘要由CSDN通过智能技术生成

根据事物在技术或经济方面的主要特征,进行分类,分清重点与非重点。对每一种分类进行区别对待管理,把被分析的对象分成 A、B、C 三类,三类物品没有明确的划分数值界限。

| 分类与重要程度 | 描述 |

| — | — |

| A类(非常重要) | 数量占比少,价值占比大 |

| B类(比较重要) | 没有A类那么重要,介于 A、C 之间 |

| C类(一般重要) | 数量占比大但价值占比很小 |

分类的核心思想:少数贡献了大部分价值。以商品品类和销售额为例:A 品类数量占总体 10% ,却贡献了 80% 的销售额。

数据分析案例

  • 效果图

  • 实现步骤

假设有如下数据集格式:

| 品牌 | 销售额 |

| — | — |

| NEW BALANCE(新百伦) | 8750 |

| ZIPPO(之宝) | 9760 |

| OCTMAMI(十月妈咪) | 5800 |

需要将数据加工成下面的格式:

| 品牌 | 销售额 | 销售总额 | 累计销售额 | 累计销售额占比 |

| — | — | — | — | — |

|

|

| =∑所有品牌销售额 | =当前品牌销售额 +上一个品牌销售额 | 累计销售额/销售总额 |

具体的SQL实现如下:

SELECT

brand, – 品牌

total_money, – 销售额

sum(total_money) over() AS sum_total_money,-- 销售总额

sum(total_money) over(ORDER BY total_money DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS acc_sum_total_money – 累计销售额

FROM sales_money

上面给出了具体的SQL实现,其实BI工具已经内置了许多的处理函数和拖拽式的数据处理,不需要写SQL也可以将一份明细数据加工成上面的形式。

  • 结论分析

从上面的帕累托图中可以看出:A类的(绿色部分)占了总销售额的80%左右,B类(黄色部分)占总销售额的10%,C类(红色部分)占总销售额的10%。接下来可以进行长尾分析,制定营销策略等等。

RFM分析与数据可视化


基本概念

RFM模型是在客户关系管理(CRM)中常用到的一个模型,RFM模型是衡量客户价值和客户创利能力的重要工具和手段。该模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱三项指标来描述该客户的价值状况。

RFM模型较为动态地层示了一个客户的全部轮廓,这对个性化的沟通和服务提供了依据,同时,如果与该客户打交道的时间足够长,也能够较为精确地判断该客户的长期价值(甚至是终身价值),通过改善三项指标的状况,从而为更多的营销决策提供支持。

在RFM模式中,包括三个关键的因素,分别为:

  • R(Recency):表示客户最近一次购买的时间有多远,即最近的一次消费,消费时间越近的客户价值越大

  • F(Frequency):表示客户在最近一段时间内购买的次数,即消费频率,经常购买的用户也就是熟客,价值肯定比偶尔来一次的客户价值大

  • M (Monetary):表示客户在最近一段时间内购买的金额,即客户的消费能力,通常以客户单次的平均消费金额作为衡量指标,消费越多的用户价值越大。

最近一次消费、消费频率、消费金额是测算消费者价值最重要也是最容易的方法,这充分的表现了这三个指标对营销活动的指导意义。而其中,最近一次消费是最有力的预测指标。

通过上面分析可以对客户群体进行分类:

| 客户类型与等级 | R | F | M | 客户特征 |

| — | — | — | — | — |

| 重要价值客户

(A级/111) | 高(1) | 高(1) | 高(1) | 最近消费时间近、消费频次和消费金额都很高 |

| 重要发展客户

(A级/101) | 高(1) | 低(0) | 高(1) | 最近消费时间较近、消费金额高,但频次不高,忠诚度不高,很有潜力的用户,必须重点发展 |

| 重要保持客户

(B级/011) | 低(0) | 高(1) | 高(1) | 最近消费时间交远,消费金额和频次都很高。 |

| 重要挽留客户

(B级/001) | 低(0) | 低(0) | 高(1) | 最近消费时间较远、消费频次不高,但消费金额高的用户,可能是将要流失或者已经要流失的用户,应当基于挽留措施。 |

| 一般价值客户

(B级/110) | 高(1) | 高(1) | 低(0) | 最近消费时间近,频率高,但消费金额低,需要提高其客单价。 |

| 一般发展客户

(B级/100) | 高(1) | 低(0) | 低(0) | 最近消费时间较近、消费金额,频次都不高。 |

| 一般保持客户

(C级/010) | 低(0) | 高(1) | 低(0) | 最近消费时间较远、消费频次高,但金额不高。 |

| 一般挽留客户

(C级/000) | 低(0) | 低(0) | 低(0) | 都很低 |

数据分析案例

  • 效果图

  • 实现步骤

假设有如下的样例数据:

| 客户名称 | 日期 | 消费金额 | 消费数量 |

| — | — | — | — |

| 上海****有限公司 | 2020-05-20 | 76802 | 2630 |

需要将数据集加工成如下格式:

具体SQL实现

SELECT

customer_name,-- 客户名称

customer_avg_money,-- 当前客户的平均消费金额

customer_frequency, – 当前客户的消费频次

total_frequency,-- 所有客户的总消费频次

total_avg_frequency, – 所有客户平均消费频次

customer_recency_diff, – 当前客户最近一次消费日期与当前日期差值

total_recency, – 所有客户最近一次消费日期与当前日期差值的平均值

monetary,-- 消费金额向量化

frequency, – 消费频次向量化

recency, – 最近消费向量化

rfm, – rfm

CASE

WHEN rfm = “111” THEN “重要价值客户”

WHEN rfm = “101” THEN “重要发展客户”

WHEN rfm = “011” THEN “重要保持客户”

WHEN rfm = “001” THEN “重要挽留客户”

WHEN rfm = “110” THEN “一般价值客户”

WHEN rfm = “100” THEN “一般发展客户”

WHEN rfm = “010” THEN “一般保持客户”

WHEN rfm = “000” THEN “一般挽留客户”

END AS rfm_text

FROM

(SELECT

customer_name,-- 客户名称

customer_avg_money,-- 当前客户的平均消费金额

customer_frequency, – 当前客户的消费频次

total_avg_money ,-- 所有客户的平均消费总额

total_frequency,-- 所有客户的总消费频次

total_frequency / count(*) over() AS total_avg_frequency, – 所有客户平均消费频次

customer_recency_diff, – 当前客户最近一次消费日期与当前日期差值

avg(customer_recency_diff) over() AS total_recency, – 所有客户最近一次消费日期与当前日期差值的平均值

if(customer_avg_money > total_avg_money,1,0) AS monetary, – 消费金额向量化

if(customer_frequency > total_frequency / count(*) over(),1,0) AS frequency, – 消费频次向量化

if(customer_recency_diff > avg(customer_recency_diff) over(),0,1) AS recency, – 最近消费向量化

concat(if(customer_recency_diff > avg(customer_recency_diff) over(),0,1),if(customer_frequency > total_frequency / count(*) over(),1,0),if(customer_avg_money > total_avg_money,1,0)) AS rfm

FROM

(SELECT

customer_name, – 客户名称

max(customer_avg_money) AS customer_avg_money , – 当前客户的平均消费金额

max(customer_frequency) AS customer_frequency, – 当前客户的消费频次

max(total_avg_money) AS total_avg_money ,-- 所有客户的平均消费总额

max(total_frequency) AS total_frequency,-- 所有客户的总消费频次

datediff(CURRENT_DATE,max(customer_recency)) AS customer_recency_diff – 当前客户最近一次消费日期与当前日期差值

FROM

(SELECT

customer_name, – 客户名称

avg(money) over(partition BY customer_name) AS                customer_avg_money, – 当前客户的平均消费金额

count(amount) over(partition BY customer_name) AS customer_frequency, – 当前客户的消费频次

avg(money) over() AS total_avg_money,-- 所有客户的平均消费总额

count(amount) over() AS total_frequency, --所有客户的总消费频次

max(sale_date) over(partition BY customer_name) AS customer_recency – 当前客户最近一次消费日期

FROM customer_sales) t1

GROUP BY customer_name)t2) t3

通过上面的分析,可以为相对应的客户打上客户特征标签,这样就可以针对某类客户指定不同的营销策略。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

上客户特征标签,这样就可以针对某类客户指定不同的营销策略。

[外链图片转存中…(img-NWYIOM8q-1714516982741)]
[外链图片转存中…(img-9XGpYWDJ-1714516982742)]
[外链图片转存中…(img-DVIYNXFY-1714516982742)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 27
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值