为什么游戏内销售额会下降 | R语言商业分析实践(1)

浏览: 1663

作者:杨奉山  R语言中文社区专栏作者,R语言小学生,和我一起为成为优秀的商业数据分析师努力吧 

知乎专栏:https://zhuanlan.zhihu.com/YFSbda


一个好的商业分析项目从来都不是从数据出发的,而是根据现象提出问题,之后根据问题从大局出发进行总体的(非数据上)分析(要清晰的把握自己的问题是什么,如何通过数据分析解决问题),根据这一步的分析建立具体数据分析框架,凭此再去确定要收集的数据和加工数据,最后分析得出结论解决问题。下面以一个手游公司销售额为例做商业数据分析。

第一部分:项目及思路分析

  • 现象:企业之前销售额一直稳步增长,可是7月的销售额却突然比6月了少了。

  • 目的:通过数据分析揪出原因,针对性的提出解决办法。

  • 总体分析:

1. 根据业务经验提出两点假设:(1)商业宣传活动少了。(2)每个月开展游戏活动的主题不一致。

2. 经过和市场部和游戏开发部交流得到两点信息:(1)由于预算,本月宣传少了很多。(2)游戏活动主题没有变化。

3.根据前两步提出假设:大致原因是宣传少了,很难有更多的人了解公司产品,因此新用户的消费额减少了。

4. 为了验证问题我们设计分析框架是对比6月和7月总体销售额及各个月新老消费者的消费额占比。

5. 根据分析框架确定要收集的数据信息。

6. 数据整合分析,得出结论来支持或者推翻假设。

7. 若支持假设,那据此提出解决办法。

(P.S. 这种分析叫验证性数据分析,下一章介绍探索性数据分析。)

第二部分:按第一部分思路进行数据分析

数据是原始未经过任何处理的游戏数据,共记录了该公司某个手游的6月-7月139112条玩家登陆及消费信息。公众号后台回复“手游”下载数据集。

1. 首先读取数据,同时去除掉无用的列:game_id(游戏名称)

#读取数据##用户登陆时间DAU <- read.csv('dau.csv',header = T,stringsAsFactors=F)[,c(1,3)]##用户消费时间及消费金额DPU <- read.csv('dpu.csv',header = T,stringsAsFactors=F)[,c(1,3,4)]##用户初次安装游戏时间INS <- read.csv('install.csv',header=T,stringsAsFactors=F)[,c(1,3)]

然后看看这些数据都有哪些字段

> head(DAU,3)
   log_date user_id
1 2013-06-01     116
2 2013-06-01   13491
3 2013-06-01    7006
> head(DPU,3)
   log_date user_id payment
1 2013-06-01     351    1333
2 2013-06-01   12796      81
3 2013-06-01     364     571
> head(INS,3)
 install_date user_id
1   2013-04-15       1
2   2013-04-15       2
3   2013-04-15       3

log_date:用户登录时间。

user_id:用户id,所有用户id唯一。

payment:用户再当天消费情况。

install_date:用户初次安装游戏时间。

2. 对3个不同的数据集进行合并,第一步以user_id为key,第二步以log_date和user_id为key,同时类似与SQL的left join功能(all.x=T):

#数据集合并

##第一次合并
dau.ins <- merge(DAU,INS,by='user_id')
##偷偷观察一下看看第二次合并怎么设置参数
head(dau.ins);head(DPU)
##第二次合并我在另外一个Script做了几次测试
did <- merge(dau.ins,DPU,by=c('log_date','user_id'),all.x = T)
#将NA值(没有消费)设为0
did$payment[is.na(did$payment)] <- 0
head(did)

第2步我们将3个不同文件的数据整合到了一起

3. 这一步进行表内操作,首先将年份和天去掉只保留月份,然后按月份整合数据,最后通过月份对比确定本月消费玩家中谁是新消费者,谁是老消费者。

#按月处理时间变量

#这里有俩办法,还有一个用substr()+as.number()
did$log_date <- as.numeric(format(as.Date(did$log_date),format='%m'))
did$install_date <- as.numeric(format(as.Date(did$install_date),format='%m'))
head(did)
#按月份整合数据:除了下述方法笔者还尝试了by(),reashape2,split()+apply(),均可实现,有兴趣的话可以试试。
final.data <- aggregate(did,by=list(did$user_id,did$log_date,did$install_date),FUN=sum)[,c(1,2,3,7)]
names(final.data) <- c('user_id','log_date','install_date','payment')
#为用户贴上新老标签
final.data$label <- ifelse(final.data$log_date==final.data$install_date,'新用户消费','老用户消费')
head(final.data)
final.sum <- aggregate(final.data[,2:4],by=list(final.data$log_date,final.data$label),sum)[,c(1,2,5)]
names(final.sum) <- c('月份','收入来源','销售额')
#数据到这里就捣腾完毕了,下面可视化探索使用最后的final开头的两个数据集

4. 数据可视化。

#可视化分析
(p <- ggplot(final.sum,aes(x=factor(月份),y=销售额,fill=factor(收入来源,levels = c('新用户消费','老用户消费',order=T))))+
    geom_bar(width = 0.6,stat = 'identity')+
    labs(x='月份',fill='收入来源'))+
     scale_x_discrete(breaks=c(6,7),labels = c('6月','7月'))

这里我们发现老用户的消费情况几乎没什么变化,但是明显新用户的消费额明显少了接近一半。由此可以说我们第一部分的假设成立:确实是宣传不够导致新消费者不肯氪金。因此给的策略建议就是根据实际成本提高活动宣传,让新消费者买买买。

按理说分析到这里就结束了,但是数据分析有个好处就是你可以利用好不容易得到的数据做一些其他的事

推荐 2
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册