在线教育数据分析实战项目案例

本文通过具体实战案例介绍数据分析全过程,包括现状分析、原因分析、预测分析等,并提供了利用MySQL和Tableau进行数据分析的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据分析概览

数据分析经常遇到的问题

1、现状分析
目前我们公司的宏观营收如何,各个商品,各个渠道的销量情况,渠道最好,可以加大投放的是哪些?
2、涉及数据指标的原因分析
为什么这个商品卖的最好?女性的销量是否更好?销量与年龄是否有关?
3、涉及用户的原因分析
为什么用户的复购率低?哪些用户是我们的核心用户,和流失用户的区别在哪?
4、涉及预测模型的预测分析
投放了这么多钱,预计能否回本,以及大概多久才能实现回本?
5、涉及目标设定的预测分析
下个季度需要如何制定KPI,预计达成的目标是多少?

解决思路

1、现状分析——数据报表、日常监控。
2、原因分析——数据下钻、用户挖掘。
3、预测分析——预测模型、目标设定。

常规产品指标

1、增长指标——新增用户数是用来衡量渠道推广效果的重要指标,主要基于用户基础信息和行为爱好(比如他们的性别、年龄、职业收入、城市线级)。
2、活跃度指标——通过考核用户的留存率(即用户粘性),活跃用户数根据不同的统计周期可分为日活跃(DAU)周活跃(WAU)月活跃(MAU)。
3、变现指标——判断最终能否盈利收益,主要通过营收,用户量,客单价等指标体现。

在线教育产品指标

1、增长指标衍生为投放域、销售域。除了对新用户对拉新以外,还有销售域,用销售对用户触达。
2、活跃度指标衍生为出勤域、练习域。
3、变现指标衍生为订单域。
在这里插入图片描述

在这里插入图片描述

市场效果广告指标

在这里插入图片描述

搭建指标系统流程

1、产品/数据分析师根据业务需求,收集相关指标与定义。
2、研发对指标进行技术评审并给出排期生产指标,同时产研相关人员将指标进行基于数据中台的沉淀。
3、产品根据业务需求,针对已评审(或已存在)指标进行分装与产品化设计。
4、指标体系看板搭建完成之后,需要输出一个数据字典。

渠道的分类

1、搜索引擎,信息流广告。关注指标:素材、文案、地域、渠道、课程类型。
2、线下推广。关注指标:地域、用户属性、学校、基地人员。
3、新媒体推广。推广成本低、可以高效传播、用户质量不稳定。
4、第三方应用市场。拥有良好的位置、推荐等都会影响到产品的下载和用户规模。

针对搜索引擎,信息流广告如何稳定提高ROI

1、找出所有指标。基于通过多维度的指标分析来优化广告投放,CPC、CTR、CVR、成 本、有效率、ROI、客单价等。
2、数据剖析。需要把各类指标的数据合并在一起分析,保障全面无遗漏,最好都放在一张底表上。
3、聚焦关键环节。尽可能多的时间聚焦到问题上,花时间进行优化, 核心公式:营收= 数量 * 线索转化率 * ARPU(客单价)

利用MySQL做数据预览

这里准备了一份180万行400M的数据。
在这里插入图片描述
包含以下信息:
在这里插入图片描述
利用MySQL对表的数据进行一个简单的聚合运算:

# 渠道属性
select channel, count(distinct userid) as 用户数
from `part4_ad_test原表`
GROUP BY channel
order by 用户数 DESC

在这里插入图片描述

# 用户行为属性(type=show才有cost,type=buy,才有amount )
select type,count(distinct userid) as 用户数 
from `part4_ad_test原表`
group by type

在这里插入图片描述

# 用户自身属性
select city,city_level,count(distinct userid) as 用户数 
from `part4_ad_test原表`
group by city,city_level
order by 用户数  desc

在这里插入图片描述

# 商品属性
select item_type,count(distinct userid) as 用户数 
from `part4_ad_test原表`
group by item_type
order by 用户数  desc

在这里插入图片描述

步骤1——找出需要的指标(CPM,CPC,CTR,CVR)

SELECT 
	sum(amount) amount,
	round(sum(cost),2) cost,
	sum(case when type='show' then 1 else 0 end) as ad_show,
	sum(case when type='click' then 1 else 0 end) as ad_click,
	sum(case when type='buy' then 1 else 0 end) as ad_buy,
	Convert(sum(cost)/sum(case when type='show' then 1 else 0 end)*1000, decimal(18,2)) CPM,
	Convert(sum(cost)/sum(case when type='click' then 1 else 0 end), decimal(18,2)) CPC,
	cast(round(sum(case when type='click' then 1 else 0 end)*100/NULLIF(sum(case when type='show' then 1 else 0 end),0),2) as char)+'%' AS CTR,
	cast(round(sum(case when type='buy' then 1 else 0 end)*100/NULLIF(sum(case when type='click' then 1 else 0 end),0),2) as char)+'%' AS CVR,
	round(sum(cost)/sum(case when type='buy' then 1 else 0 end),2) as  "订单成本" ,
	round(sum(amount)/sum(cost),2) ROI
FROM `part4_ad_test原表`
where substring(createtime,1,10) between '2020-12-01' and '2020-12-31' 

在这里插入图片描述

步骤2——进行数据分析和可视化

按照核心:营收= 数量 * 线索转化率 * ARPU(客单价),假设优先从曝光数量和转化率CTR入手。

# 不同渠道点击情况
SELECT 
	channel, 
	sum(case when  type='show' then 1 else 0 end) as  ad_show,
	sum(case when  type='click' then 1 else 0 end) as  ad_click
FROM `part4_ad_test原表`
GROUP BY channel
ORDER BY ad_show DESC

在这里插入图片描述

# 不同渠道点击率
SELECT 
	channel, 
	sum(case when  type='show' then 1 else 0 end) as  ad_show,
	sum(case when  type='click' then 1 else 0 end) as  ad_click,
	cast(ROUND(sum(case when  type='click' then 1 else 0 end)*100/sum(case when  type='show' then 1 else 0 end),2) as char)+'%' as ctr,
	round(sum(amount)/sum(cost),2) ROI
FROM `part4_ad_test原表`
GROUP BY channel
having sum(case when type='show' then 1 else 0 end)>1000
ORDER BY ROI DESC

在这里插入图片描述
这里可以看到快手的数据比较大,ROI也很高,说明快手是一个值得加大投入的渠道。广点通的ROI最高,但是他的数据相对比较少,需要结合其他数据进行分析,如果盲目根据ROI和CTR就加大投入,可能会造成随着用户数量变多,ROI下降的局面。

# 不同日期的点击率
SELECT 
	substring(createtime,1,10) days, 
	sum(case when  type='show' then 1 else 0 end) as  ad_show,
	sum(case when  type='click' then 1 else 0 end) as  ad_click,
	cast(ROUND(sum(case when  type='click' then 1 else 0 end)*100/sum(case when  type='show' then 1 else 0 end),2) as char)+'%' AS ctr
FROM `part4_ad_test原表`
GROUP BY substring(createtime,1,10)
ORDER BY days DESC

在这里插入图片描述

# 年龄属性
SELECT 
	coalesce(age,'总计') age,
	sum(case when  type='show' then 1 else 0 end) as  ad_show,
	sum(case when  type='click' then 1 else 0 end) as  ad_click,
--   CONCAT(ROUND(sum(case when  type='click' then 1 else 0 end)*100/sum(case when  type='show' then 1 else 0 end),2),'%') AS ctr
	cast(ROUND(sum(case when  type='click' then 1 else 0 end)*100/sum(case when  type='show' then 1 else 0 end),2) as char)+'%' AS ctr
FROM `part4_ad_test原表`
GROUP BY age
with rollup
ORDER BY age

在这里插入图片描述

# 性别和新老用户
SELECT 
	COALESCE(sex,'总计') sex,
	COALESCE(user_type,'总计') user_type,
	sum(cost) "消耗",
	SUM(amount) "营收",
	sum(case when  type='show' then 1 else 0 end) "展示pv",
	sum(case when  type='click' then 1 else 0 end) "点击pv",
	sum(case when  type='buy' then 1 else 0 end) "购买pv",
	cast(ROUND(sum(case when  type='click' then 1 else 0 end)*100/sum(case when  type='show' then 1 else 0 end),2) as CHAR)+'%' AS ctr

FROM `part4_ad_test原表`
GROUP BY 	
	sex,
	user_type
with ROLLUP
ORDER BY "消耗" desc

在这里插入图片描述

# 职业属性
SELECT 
	profession,
	sum(case when  type='show' then 1 else 0 end) as  ad_show,
	sum(case when  type='click' then 1 else 0 end) as  ad_click,
	CONCAT(ROUND(sum(case when  type='click' then 1 else 0 end)*100/sum(case when  type='show' then 1 else 0 end),2),'%') AS ctr
FROM `part4_ad_test原表`
GROUP BY profession
ORDER BY ad_show	desc

在这里插入图片描述

利用Tableau绘制图表

Tableau中计算字段的语法和MySQL语法有细微差别。

cpc:sum([Cost])/sum(case [Type] when 'click' then 1 else 0 end)
cpm:sum([Cost])/sum(case [Type] when 'show' then 1 else 0 end)*1000
ctr:round(sum(case [Type] when 'click' then 1 else 0 end)*100/ifnull(sum(case [Type] when 'show' then 1 else 0 end),0),2)
cvr:round(sum(case [Type] when 'buy' then 1 else 0 end)*100/ifnull(sum(case [Type] when 'click' then 1 else 0 end),0),2)
roi:sum([Amount])/sum([Cost])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用户画像(RFM模型)

RFM:
R(recency)——最近一次消费,体现粘性;
F(frequency)——消费频次,体现忠诚度;
M(monetary)——消费金额,体现购买力。
在这里插入图片描述
这里准备了一份RFM表:
在这里插入图片描述
三列分别是用户、用户购买时间、用户购买金额。

利用MySQL计算R、F、M值

R是最近一次消费,所以应该是计算时间差,MySQL中计算时间差用DATEDIFF函数。
F是消费频次,计算用户出现的次数,MySQL中使用count(*)即可。
M是消费金额,对用户消费金额求和即可,MySQL中用sum函数。

select user,
max(DATEDIFF('2021-1-1',pay_day)) as R,
count(*) as F,
sum(pay_amount) as M
from `part5_1.RFM原表`
group by user

在这里插入图片描述
单独查询R值

SELECT R, count(*) '用户数'
from (
select user,
max(DATEDIFF('2021-1-1',pay_day)) as R,
count(*) as F,
sum(pay_amount) as M
from `part5_1.RFM原表`
group by user)a
GROUP BY R
ORDER BY R

单独查询F值

SELECT F, count(*) '用户数'
from (
select user,
max(DATEDIFF('2021-1-1',pay_day)) as R,
count(*) as F,
sum(pay_amount) as M
from `part5_1.RFM原表`
group by user)a
GROUP BY F
ORDER BY F

单独查询M值

SELECT M, count(*) '用户数'
from (
select user,
max(DATEDIFF('2021-1-1',pay_day)) as R,
count(*) as F,
sum(pay_amount) as M
from `part5_1.RFM原表`
group by user)a
GROUP BY M
ORDER BY M

根据R、F、M的查询结果,我们可以对他们进行打分评价:
R值:
在这里插入图片描述
F值:
在这里插入图片描述
M值:
在这里插入图片描述
写出MySQL语句:

with t as ( 
			select *,
				(case 
						when  R<150  then 5 
						when  R between 150 and 299  then 4 
						when  R between 300 and 449  then 3 
						when  R between 450 and 599  then 2 
						when  R>=600  then 1 
				else null end) as R_p,

			(case 
						when  F=1  then 1 
						when  F=2 then 2 
						when  F between 3 and 10   then 3 
						when  F between 11 and 17 then 4
						when  F>=18  then 5 
				else null end) as F_p,

			(case 
						when  M<50   then 1 
						when  M between 50 and 99 then 2 
						when  M between 100 and 499   then 3 
						when  M between 500 and 4999 then 4
						when  M>=5000  then 5 
				else null end) as M_p
				
				from (
					select 
					user,
					max(DATEDIFF('2021-1-1',pay_day)) as R,
					count(*) as F,
					sum(pay_amount) as M
					from `part5_1.RFM原表`
					group by user
				)a
)
select avg(R_p*1.0), avg(F_p*1.0), avg(M_p*1.0)  from t

这里最后计算出均值,可以判断出RFM对应对平均水平。
在这里插入图片描述
这时,我们可以定义,
R大于3.359的时候得到A评分,小于则获得B评分;
F大于2.678的时候得到A评分,小于则获得B评分;
M大于3.189的时候得到A评分,小于则获得B评分。
所有用户可以分类为:

1.AAA 重要价值用户
2.ABA 重要发展用户
3.BAA 重要保持用户
4.BBA 重要挽留用户
5.AAB 一般价值用户
6.ABB 一般发展用户
7.BAB 一般保持用户
8.BBB 一般挽留用户

用MySQL语句表达:

with t as ( 
			select *,
				(case 
						when  R<150  then 5 
						when  R between 150 and 299  then 4 
						when  R between 300 and 449  then 3 
						when  R between 450 and 599  then 2 
						when  R>=600  then 1 
				else null end) as R_p,

			(case 
						when  F=1  then 1 
						when  F=2 then 2 
						when  F between 3 and 10   then 3 
						when  F between 11 and 17 then 4
						when  F>=18  then 5 
				else null end) as F_p,

			(case 
						when  M<50   then 1 
						when  M between 50 and 99 then 2 
						when  M between 100 and 499   then 3 
						when  M between 500 and 4999 then 4
						when  M>=5000  then 5 
				else null end) as M_p
				
				from (
					select 
					user,
					max(DATEDIFF('2021-1-1',pay_day)) as R,
					count(*) as F,
					sum(pay_amount) as M
					from `part5_1.RFM原表`
					group by user
				)a
)
select 
	*,
	(case 
        when  R_class='B' and F_class='B' and  M_class='B' then '一般挽留用户' 
        when  R_class='B' and F_class='B' and  M_class='A' then '重要挽留用户' 
        when  R_class='B' and F_class='A' and  M_class='B' then '一般保持用户' 
        when  R_class='B' and F_class='A' and  M_class='A' then '重要保持用户' 
        when  R_class='A' and F_class='B' and  M_class='B' then '一般发展用户' 
        when  R_class='A' and F_class='B' and  M_class='A' then '重要发展用户' 
        when  R_class='A' and F_class='A' and  M_class='B' then '一般价值用户' 
        when  R_class='A' and F_class='A' and  M_class='A' then '重要价值用户' 
    else null end) as user_type
		from (
			select 
				t.*,
				(case when  R>=3.359 then 'A' else 'B' end) as  R_class,
				(case when  F>=2.678 then 'A' else 'B' end) as F_class,
				(case when  M>=3.189 then 'A' else 'B' end) as M_class
			 from t) a

在这里插入图片描述

利用Tableau实现可视化

编辑计算字段

R:DATEDIFF('day',[Pay Day],#2021-01-01#)
R_p:IF [R]<150 then 5 ELSEIF [R]<299 then 4 ELSEIF [R]<499 then 3 ELSEIF [R]<599 then 4 ELSEIF [R]>=600 then 5 ELSE null END
R_class:IF AVG([R_p])>=3.359 then 'A' ELSE 'B' END

F:SUM(1)
F_p:IF [F]=1 then 1 ELSEIF [F]=2 then 2 ELSEIF [F]<10 then 3 ELSEIF [F]<17 then 4 ELSEIF [F]>=18 then 5 ELSE null END
F_class:IF [F]>=2.678 then 'A' ELSE 'B' END

M:SUM([Pay Amount])
M_p:IF [M]<50 then 1 ELSEIF [M]<99 then 2 ELSEIF [M]<499 then 3 ELSEIF [M]<4999 then 4 ELSEIF [M]>=5000 then 5 ELSE null END
M_class:if [M]>=3.189 then 'A' else 'B' END

用户划分:IF [R_class]='B' and [F_class]='B' and [M_class]='B' then '一般挽留用户' ELSEIF [R_class]='B' and [F_class]='B' and [M_class]='A' then '重要挽留用户' ELSEIF [R_class]='B' and [F_class]='A' and [M_class]='B' then '一般保持用户' ELSEIF [R_class]='B' and [F_class]='A' and [M_class]='A' then '重要保持用户' ELSEIF [R_class]='A' and [F_class]='B' and [M_class]='B' then '一般发展用户' ELSEIF [R_class]='A' and [F_class]='B' and [M_class]='A' then '重要发展用户' ELSEIF [R_class]='A' and [F_class]='A' and [M_class]='B' then '一般价值用户' ELSEIF [R_class]='A' and [F_class]='A' and [M_class]='A' then '重要价值用户' END

利用Tableau绘制图表

在这里插入图片描述
在这里插入图片描述

LTV(用户生命周期)

LTV用处:
1、计算回报周期,验证UE模型。如果发现回收期太长,或难以回收成本时,则需要改造产品功能及商业逻辑。
2、对比渠道质量,调整投放策略。渠道评估,成本控制,投放合理配比,产品功能调整等。
3、监测异常情况。若偏离预计数据样本,很可能是代理作弊,或者刷单。
4、衡量用户质量。ROI=LTV/获客成本,LTV/CAC<1则亏本。

<think>好的,我现在需要帮助用户找到关于用户数据分析实战项目案例教程。根据用户提供的引用内容,我需要先仔细分析这些引用中的信息,看看哪些适合推荐,同时结合用户的需求,整理出合适的项目案例。 首先,引用[1]提到的是淘宝用户行为分析的案例,使用了Power BI。这是一个电商数据分析实战项目,适合用户行为分析的方向。用户可能对电商数据感兴趣,特别是如何利用工具进行行为分析。 引用[2]是关于EXCEL数据分析实例,探讨客户个人信息和营销行为的影响。这个案例可能比较基础,适合刚入门的用户,使用EXCEL进行分析,步骤详细,有附图说明,容易上手。 引用[3]涉及Python数据分析项目,具体分析视频互动数据,比如弹幕数据的分组统计。这里用到了Python的pandas库,适合有一定编程基础的用户,尤其是对视频或用户互动数据感兴趣的人。 引用[4]提到了多个Python数据分析项目,包含用户行为特征和留存率分析,涉及A/B测试等参数的影响。项目数量多,数据可下载,适合希望深入不同场景的用户,尤其是移动应用的用户行为分析。 接下来,我需要将这些信息整合,分门别类地推荐给用户。用户可能需要不同工具(如Power BI、Excel、Python)和不同领域(电商、APP、视频)的案例。因此,我应该将案例按工具或领域分类,并简要说明每个案例的内容、工具、适用场景和难度,方便用户选择。 同时,用户可能还需要知道如何获取这些资源,比如是否有代码和数据可供下载,所以需要提到引用中的相关信息,如引用[4]的数据可下载,引用[3]的Python代码示例。 最后,根据用户的需求生成相关问题,帮助他们进一步探索,比如工具选择、方法比较、数据获取途径等。这些问题应该与用户数据分析实战相关,并引导他们深入思考。</think>### 用户数据分析实战项目推荐 #### 一、电商领域分析 1. **淘宝用户行为分析(Power BI)** - **内容**:分析用户点击、加购、下单等行为,挖掘用户活跃规律和商品偏好。 - **工具**:Power BI - **适用场景**:电商运营优化、用户分层策略制定 - **案例特点**:包含完整分析框架,从数据清洗到可视化全流程[^1] - **难度**:★★★ - **参考链接**:[淘宝用户行为分析案例教程](示例链接) --- #### 二、基础分析工具案例 2. **客户营销效果分析(Excel)** - **内容**:探究用户年龄、职业属性对营销结果的影响,分析电话沟通频率与成功率的关系。 - **工具**:Excel(数据透视表、可视化图表) - **适用场景**:传统行业客户转化率优化 - **案例特点**:提供分步操作截图,适合零基础入门[^2] - **难度**:★☆ - **参考链接**:[EXCEL数据分析实例](示例链接) --- #### 三、编程进阶项目 3. **视频用户互动分析(Python)** - **内容**:通过弹幕数据统计用户观看行为,分析热门视频节点与用户留存关系。 - **工具**:Python(Pandas、Matplotlib) - **适用场景**:在线教育/视频平台用户体验优化 - **代码示例**: ```python danmu.groupby('视频进度【时分】')[['id']].count().sort_values('id',ascending=False) ``` - **数据来源**:视频播放日志[^3] - **难度**:★★★☆ 4. **APP用户留存率分析(Python)** - **内容**:分析A/B/C/D/E/F六个功能参数对用户次日、7日留存的影响。 - **工具**:Python(Seaborn、Statsmodels) - **数据集**:包含10万+用户行为记录(可直接下载)[^4] - **输出成果**:留存率漏斗模型、功能参数影响力排序 - **难度**:★★★★ --- #### 四、扩展学习建议 1. **数据获取渠道**: - Kaggle(电商、社交平台公开数据集) - 和鲸社区(国内行业数据) - 官方提供的数据包(如引用[4]的111个项目数据集) 2. **方法论学习重点**: - 用户行为路径分析(桑基图应用) - 基于$RFM$模型的用户价值分层 - 假设检验在行为差异分析中的应用(如独立样本T检验) ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总是重复名字我很烦啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值