大家好,我是丁小杰。

本文案例的来源为《数据分析实战》一书,书中使用的是 R 语言,接下来一段时间,我会用 Python + Tableau 尽可能的将案例复现出来,以供大家学习。

场景描述

某公司经营的一款 APP 小游戏,每月销售额稳定上涨,但是在 7 月却突然下降,无论从市场环境或是游戏本身的环境来看,这个游戏的销售额都还有继续增长的空间
,影响该游戏销售额的主要影响因素可能有两点:

  • 游戏活动上新
  • 商业宣传力度更改

经了解发现

  • 游戏活动与上月活动并无较大改变
  • 由于预算紧缺,宣传力度有所下降

接下来我们会根据数据分析来证实上述结论,并提出恢复销售额的方法。

数据描述

DAU(Daily Active User)

每天至少来访 1 次的用户数据,139112 行。

字段 类型 含义
log_date str 访问时间
app_name str 应用名
user_id numpy.int64 用户 ID
DPU(Daily Payment User)

每天至少消费 1 日元的用户数据(0.056 元),884 行。

字段 类型 含义
log_date str 访问时间
app_name str 应用名
user_id numpy.int64 用户 ID
payment numpy.int64 消费金额
Install

记录每个用户首次登录游戏的时间,29329 行。

字段 类型 含义
install_date str 首次登录时间
app_name str 应用名
user_id numpy.int64 用户 ID

数据分析

数据读取

读取三个数据集。

import pandas as pdDAU_data = pd.read_csv('DAU.csv')
DPU_data = pd.read_csv('DPU.csv')
install_data = pd.read_csv('install.csv')

显示 DAU 数据集前五行。

DAU_data.head()

显示 DPU 数据集前五行。

DPU_data.head()

显示 Install 数据集前五行。

install_data.head()

数据合并

将每日活跃用户数据 DAU 与用户首次登录数据 Install 进行合并,将 user_id
app_name 作为参照 key。这样就可以得到用户的首次登录时间。

all_data = pd.merge(DAU_data,install_data,on=['user_id', 'app_name'])
all_data.head()

得到用户首次登录时间后,再与每日消费用户数据 DPU 进行合并,使用左连接的方式,保留 all_data 中的所有数据,缺失值默认为 NaN

all_data = pd.merge(all_data,DPU_data,on=['log_date', 'app_name', 'user_id'],how='left')
all_data.head()

数据处理

payment 列中的空值填充为 0。

all_data['payment'] = all_data['payment'].fillna('0')
all_data

payment 列的单位转换为元,log_dateinstall_date 都只保留月份即可。

all_data['payment'] = all_data['payment'].astype(float)
all_data['payment'] = all_data['payment'] * 0.056
all_data['log_date'] = pd.to_datetime(all_data['log_date']).map(lambda x : x.strftime("%m")[1] + '月')
all_data['install_date'] = pd.to_datetime(all_data['install_date']).map(lambda x : x.strftime("%m")[1] + '月')
all_data.head()

新老用户划分

登录月份 > 首次登录月份 的用户定义为老用户,其他则定义为新用户。

all_data['user'] = all_data['log_date'] > all_data['install_date']
all_data['user'] = all_data['user'].map({False: '新用户', True: '老用户'})
all_data.head()

按照 log_date, user 分组对 payment 求和,统计各月新老用户的带来的销售额。

user_category = all_data.groupby(['log_date', 'user'])['payment'].sum().reset_index()
user_category.head()


可以看到 6 月和 7 月的老用户带来的销售额基本相同,但 7 月新用户带来的销售额明显少于 6 月。

将销售额划分区域,看看哪个层次的用户消费在减少。

import numpy as npsale_df = all_data.loc[all_data['payment'] > 0, ['log_date', 'payment']].copy()
bins = list(range(0, 101, 30)) + [np.inf]
labels = [str(n) + '-' + str(n + 30) for n in bins[:-2]] + ['>90']
sale_df['payment_cut'] = sale_df['payment'].apply(lambda x : pd.cut([x], bins=bins, labels=labels)[0])
sale_df.head()


根据上面柱状图可以看出,和 6 月相比,7 月消费额在 60 元以下的用户数量减少了一部分。

到此我们就可以得到一些结论。

结论

新用户中的产生消费的用户发生了减少,特别是消费金额较少的小额消费用户。因此,公司需要再次开展商业宣传活动并恢复到之前的水平,这样才有可能提升潜在用户对公司产品的认知度,增加新的用户。

案例参考

[1]《数据分析实战》 [日] 酒卷隆志 里洋平/著 肖峰/译


对于刚入门 Python 或是想要入门 Python 的小伙伴,可以通过下方小卡片联系作者,一起交流学习,都是从新手走过来的,有时候一个简单的问题卡很久,但可能别人的一点拨就会恍然大悟,由衷的希望大家能够共同进步。另有整理的近千套简历模板,几百册电子书等你来领取哦!

数据分析实战 | 探寻销售额下降的原因相关推荐

  1. 数据分析实战 | A/B测试探寻哪种广告点击率更高?

    大家好,我是丁小杰. 本篇是<数据分析实战>系列第三篇,案例来源为<数据分析实战>一书,书中使用的是 R 语言,接下来一段时间,我会用 Python + Tableau/Pye ...

  2. Python数据分析实战基础 | 初识Pandas

    这是Python数据分析实战基础的第一篇内容,主要是和Pandas来个简单的邂逅.已经熟练掌握Pandas的同学,可以加快手速滑动浏览或者直接略过本文. 01  重要的前言 这段时间和一些做数据分析的 ...

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

    数据分析实战项目案例 数据分析概览 数据分析经常遇到的问题 解决思路 常规产品指标 在线教育产品指标 市场效果广告指标 搭建指标系统流程 渠道的分类 针对搜索引擎,信息流广告如何稳定提高ROI 利用M ...

  4. 《数据分析实战》--用R做交叉列表

    <数据分析实战>–用R做交叉列表 本文参考的是<数据分析实战>第四章. 背景:针对某公司的产品,发现当月的用户使用量减少了很多,但是和上月相比,本月的商业宣传和月度活动并无大的 ...

  5. 《数据分析实战:基于EXCEL和SPSS系列工具的实践》——3.3 耗时耗力的数据整理过程...

    本节书摘来自华章计算机<数据分析实战:基于EXCEL和SPSS系列工具的实践>一书中的第3章,第3.3节,作者 纪贺元,更多章节内容可以访问云栖社区"华章计算机"公众号 ...

  6. 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一3.4 数据量太大了怎么办

    本节书摘来自华章出版社<数据分析实战 基于EXCEL和SPSS系列工具的实践>一书中的第3章,第3.4节,纪贺元 著,更多章节内容可以访问云栖社区"华章计算机"公众号查 ...

  7. 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一第2章 数据分析的理论、工具、模型...

    本节书摘来自华章出版社<数据分析实战 基于EXCEL和SPSS系列工具的实践>一书中的第2章,第2.1节,纪贺元 著,更多章节内容可以访问云栖社区"华章计算机"公众号查 ...

  8. 大数据分析实战-信用卡欺诈检测(四)-正则化惩罚

    大数据分析实战-信用卡欺诈检测(一) 大数据分析实战-信用卡欺诈检测(二)-下采样方案和交叉验证 大数据分析实战-信用卡欺诈检测(三)- 模型评估 文章目录 正则化惩罚 正则化惩罚 正则化惩罚,这个名 ...

  9. 大数据分析实战-信用卡欺诈检测(二)-下采样方案和交叉验证

    第一部分已经写到这里了,看完第一部分再看这一部分:大数据分析实战-信用卡欺诈检测 文章目录 下采样方案 交叉验证 下采样方案 下采样方案的实现过程比较简单,只需要对正常样本进行采样,得到与异常样本一样 ...

最新文章

  1. Google发布“多巴胺”开源强化学习框架,三大特性全满足
  2. MPB:林科院袁志林组-​栎类外生菌根形态学特征描述
  3. c++与java中子类中调用父类成员的方法
  4. mysql行转列和列转行_mysql 行转列和列转行实例详解
  5. ES业界优秀实践案例汇总
  6. Linux下的iwpriv(iwlist、iwconfig)的简单应用
  7. Windows WMIC命令使用详解(附实例)
  8. 三相同步电机怎么接线图_三相电度表怎么看倍数
  9. 一文入门区块链相关知识
  10. dubbo mysql_Dubbo学习系列之六(微服务架构实战)
  11. 《概率论基础教程》总结2 随机变量、期望、方差
  12. 常用符号大全 特殊符号
  13. 使用CSS实现图片叠加效果
  14. Unity Shader LOD详解
  15. 如何去掉“Picked up JAVA_TOOL_OPTIONS: -Djava.vendor=“Sun Microsystems Inc.“” 提示
  16. oracle10g数据库复制,Oracle10g中Duplicate复制数据库
  17. mysql根据出生日期,查询年月日,并且拼接
  18. java-net-php-python-jspm零担快跑物流管理系统计算机毕业设计程序
  19. leetcode 322. Coin Change-硬币交换|动态规划
  20. traffic-filter

热门文章

  1. 不想当巨婴?暑假期间学点IT技能可好?
  2. (转)介绍Linux操作系统下的几个小游戏模拟器
  3. 2015年百度之星程序设计大赛 - 资格赛 (1004放盘子)
  4. 强大文件搜索工具ag
  5. 16-GuliMall ElasticSearch安装分词器
  6. 这件事我究竟做得对不对?
  7. 代码随想录一刷个人记录
  8. (转)JUNOS入门学习笔记
  9. 计算机网页设计英语文献综述,计算机网络精品课程网站设计与实现文献综述
  10. 记录一下如何购买云服务器