Python 数据分析实战——为什么销售额减少?酒卷隆治_案例1

# 为什么黑猫游戏的销售额会减少?

# 数据集

DAU : 每天至少来访问一次的用户数据

数据内容 数据类型 字段名

访问时间 string(字符串) log_data

应用名称 string(字符串) app_name

用户 ID int(数值) user_id

DPU: 每天至少消费1日元的用户数据

数据内容 数据类型  字段名

消费日期 string(字符串) log_data

应用名称 string(字符串) app_name

用户 ID int(数值) user_id

消费额 int(数值) Payment

INSTALL : 每个用户首次玩这个游戏的时间数据

数据内容 数据类型 字段名

首次使用的日期 string(字符串)

# 加载模块
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

# 导入数据
DAU = pd.read_csv("D:/data/datasource/数据分析实战_酒卷隆治/R/section3-dau.csv")
DPU = pd.read_csv("D:/data/datasource/数据分析实战_酒卷隆治/R/section3-dpu.csv")
INSTALL = pd.read_csv("D:/data/datasource/数据分析实战_酒卷隆治/R/section3-install.csv")
# 将数据合并起来
data = DAU.merge(INSTALL,on='user_id')
data = pd.merge(data,DPU, on =['user_id','log_date'], how ='outer') # outer 外连接,保留两个数据集中所有的user_id, log_date
# 对数据进行处理
data.fillna(value=0, inplace =True)
# 剔除多余的列
data.drop(columns=['app_name_y','app_name'])
# 生成新的列,年月份数据
data['log_mon'] = data.log_date.apply(lambda x: pd.to_datetime(x).strftime('%Y-%m'))
data['install_mon'] = data.install_date.apply(lambda x: pd.to_datetime(x).strftime('%Y-%m'))
# 按月聚合统计每位人员的销售额
data_mon = data.groupby(['log_mon','user_id','install_mon']).payment.sum().reset_index()

# 如果log_date 等于 install_date 则为新用户
data_mon['type'] = data_mon.apply(lambda x: '1' if x.log_mon == x.install_mon else '0', axis =1)
# 按月统计新老客户的销售额
data1 = data_mon.groupby(['log_mon','type'])['payment'].sum().reset_index(name='tot_payment')
data_pivot = pd.pivot_table(data1,values='tot_payment',index='log_mon',columns='type',aggfunc='sum').reset_index().rename(columns={'0':'老用户','1':'新用户'})
# data_pivot.index=('老用户','新用户')
data_pivot

# 堆积柱形图: 不同月份新老客户的销售额

bar1 = plt.bar(np.arange(2),data_pivot.老用户,color='green',label='老用户',width=0.2,alpha=0.5)
bar2 = plt.bar(np.arange(2),data_pivot.新用户,color='grey',label='新用户',bottom=data_pivot.老用户,width=0.2,alpha=0.5)

plt.bar_label(bar1,color='black')
plt.bar_label(bar2,color='black')

# # 设置x轴标签
plt.rcParams['font.sans-serif']=['SimHei'] # 用来显示中文
plt.title('黑猫游戏新老客户销售额',fontsize=18)
plt.xticks(np.arange(2),data_pivot.log_mon)
plt.xlabel('月份',fontsize=12)
plt.ylabel('月销售额(日元)',fontsize=12)
plt.ylim(0,300000) # 修改刻度
plt.legend(loc='upper right',ncol=1)

# Note: 根据上图可知销售额的下降主要是优于新用户导致。
# 筛选新用户 且消费大于0的用户 的销售数据,对消费金额进行分组,统计不同组内的用户数
data_new = data_mon[(data_mon.type=='1')&(data_mon.payment>0)]
# 对数据进行分组
payment_min = data_new.payment.min()
payment_max = data_new.payment.max()

print(payment_min, payment_max,data_new.user_id.count())
data_new['payment_group'] =pd.cut(data_new.payment,
                                  bins=[payment_min-1,1000,2000,3000,4000,5000,6000,7000,payment_max+1],
                                  labels=['1000日元一下','1000-2000','2000-3000','3000-4000','4000-5000','5000-6000','6000-7000','7000日元以上']) 

data_new_group = pd.pivot_table(data_new,values='user_id',index='payment_group',columns='log_mon',aggfunc='count').reset_index().rename(columns={'2013-06':'六月份','2013-07':'七月份'})
data_new_group

# 可视化
fig = plt.figure(figsize=(10,4)) 
bar1 = plt.bar(np.arange(8), height=data_new_group.六月份, color='blue', width=0.3,alpha = 0.5,label='2013年6月') # alpha 设置透明度
bar2 = plt.bar(np.arange(8)+0.3,height = data_new_group.七月份, color='green',width=0.3,alpha = 0.5,label='2013年7月')

plt.legend()

# 添加数据标注, 
plt.bar_label(bar1)
plt.bar_label(bar2)

# # 设置x轴标签
plt.rcParams['font.sans-serif']=['SimHei'] # 用来显示中文
plt.title('黑猫游戏新老客户销售额度比较',fontsize=18)
plt.xticks(np.arange(8)+0.2,data_new_group.payment_group)
plt.ylabel('消费人数(人)',fontsize=12)
plt.ylim(0,40) # 修改刻度
plt.legend(loc='upper right',ncol=1)

 Note: 由图可知,本月消费2000以下的用户数量减少了。 (根据书本的样例数据计算的结果,并不能反应出销售额的下降是由于消费2000元以下的用户数减少,暂且认为是确实部分数据)

解决对策: 根据之间的假设 宣传活动减少,导致新客户数量减少,新客户带来了销售额的下降,建议恢复商业宣传活动到之前的水平。

Note: 在实际的工作中,还需要判断ROI,比较新用户的顾客终身价值和商业宣传活动的投入成本,再进行决策。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/358520.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【第二十一课】拓扑序列bfs (acwing-848有向图的拓扑序列 / c++代码 )

拓扑序列 关于拓扑排序有几点: 1.拓扑序列中,每条有向边都是从序列中前面的顶点指向后面的顶点。 2.有向无环图(DAG)一定有拓扑序列。存在环的图一定没有拓扑序列,因为环必定有从后面的点指向前面的点的边。 3.一个有向无环图一定至少有一…

代理IP在游戏中的作用有哪些?

游戏代理IP的作用是什么?IP代理软件相当于连接客户端和虚拟服务器的软件“中转站”,在我们向远程服务器提出需求后,代理服务器首先获得用户的请求,然后将服务请求转移到远程服务器,然后将远程服务器反馈的结果转移到客…

vue实践:构建高效的电子签名功能

前言 在现代数字化时代,电子签名成为了一种方便、高效且安全的签署文件的方式。本文将介绍电子签名的原理和实现方法,帮助你快速掌握这一重要的工具。 电子签名是什么? 电子签名是一种数字化的签名方式,用于验证和确认电子文档、…

ES集群节点、主从、负责均衡

集群 节点介绍 Elasticsearch的协调节点并不是master节点。在Elasticsearch集群中,有几种不同类型的节点,其中包括: Master节点:负责集群范围内的管理和控制,例如创建或删除索引,决定哪些分片分配给哪个…

vxe-table从2.0升级到3.0,vxe-table-plugin-virtual-tree虚拟滚动失效

问题:系统一直使用的vxe-table2.0,vxe-table2.0不支持树的虚拟滚动,为了解决这个问题,引入了vxe-table-plugin-virtual-tree插件,现在系统vxe-table升级3.0,vxe-table-plugin-virtual-tree的虚拟滚动失效了…

Python第三方扩展库Matplotlib

Python第三方扩展库Matplotlib Matplotlib 是第三方库,不是Python安装程序自带的库,需要额外安装,它是Python的一个综合性的绘图库,提供了大量的绘图函数用于创建静态、动态、交互式的图形和数据可视化,可以帮助用户创…

Android App开发-简单控件(1)——文本显示

本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图、容纳视图的常用布局、响应点击的按钮控件、显示图片的图像视图等。然后结合本章所涉及的知识,完成一个实战项目“简单计算器”的设计与实现。 1.1 文本显示 本节介绍…

(九)springboot实战——springboot3下的webflux项目参数验证及其全局参数验证异常处理

前言 在上一节内容中,我们介绍了如何在webflux项目中自定义实现一个全局的异常处理器ErrorWebExceptionHandler,正常情况下其可以处理我们系统的运行时异常,但是无法处理参数验证的异常WebExchangeBindException,所以这里提供另外…

彻底解决 MAC Android Studio gradle async 时出现 “connect timed out“ 问题

最近在编译一个比较老的项目,git clone 之后使用 async 之后出现一下现象: 首先确定是我网络本身是没有问题的,尝试几次重新 async 之后还是出现问题,网上找了一些方法解决了本问题,以此来记录一下问题是如何解决的。 …

JavaWeb学习|Session

学习材料声明 所有知识点都来自互联网,进行总结和梳理,侵权必删。 引用来源:尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版 Session 1、Session 就一个接口(HttpSession)。 2、Session 就是会话。它是用来…

虚拟化平台、主机

虚拟化技术介绍 一、常见虚拟化技术 二、虚拟化与云计算的关系 虚拟化是什么 虚拟化是一种技术,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、在分配,云计算就是利用了虚拟化技术的这个特点 云计算是…

java框架面试篇

Spring框架 spring Bean线程安全问题 Scope注解 我们可以在bean的类上加Scope注解来声明这个Bean是单个实例还是多个实例。在默认情况下Bean是单个实例的,此时的注解中的属性默认为Scope("singleton"),Scope("prototype")则是一…

BP图片降噪MATLAB代码

BP(Back Propagation)神经网络是一种常用的深度学习模型,可以用于图像降噪。主要步骤包括: 构建BP神经网络模型。包括输入层、隐藏层和输出层。输入层大小与图像大小相同,输出层大小也与输入图像大小相同。隐藏层根据图像复杂度设定。 准备训练数据。使用干净图像作为输入,加…

WIN11 - WSL(Windows Subsystem for Linux) 安装教程

前言 WSL,即Windows Subsystem for Linux,是一种在Windows操作系统上运行Linux二进制文件的兼容层。该层提供了Linux环境和GNU工具,可以在Windows系统上运行Linux应用程序。WSL使得开发人员可以在Windows系统上使用Linux工具和命令行界面&am…

Web自动化—Cypress 测试框架概述

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,薪资嘎嘎涨 Cypress 测试框架概述 1.1 Cypress 默认文件结构 在C…

漏洞原理远程命令执行

漏洞原理远程命令/代码执行 远程命令执行函数(Remote Command Execution Function)是指在一个网络环境中,通过远程执行命令来控制另一个计算机系统或设备的功能。 远程命令执行函数可以通过网络协议(如SSH、Telnet、RPC等&#x…

苹果电脑哪款文件管理器好用?推荐QSpace Pro多窗格文件管理器

还在找好用的Mac文件管理器?苹果电脑哪款文件管理器好用?推荐QSpace Pro多窗格文件管理器,灵活且实用! Mac软件下载安装:多窗格文件管理QSpace Pro 首先,我被QSpace的简洁和高效所吸引。它的界面设计非常清…

第九节HarmonyOS 常用基础组件13-TimePicker

1、描述 时间选择组件,根据指定参数创建选择器,支持选择小时以及分钟。默认以24小时的时间区间创建滑动选择器。 2、接口 TimePicker(options?: {selected?: Date}) 3、参数 selected - Date - 设置选中项的时间。默认是系统当前的时间。 4、属性…

代码随想录算法训练营第35天 | 860.柠檬水找零 + 406.根据身高重建队列 + 452.用最少数量的箭引爆气球

今日任务 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 860.柠檬水找零 - Easy 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的…

Backtrader 文档学习-Bracket Orders

Backtrader 文档学习-Bracket Orders 1. 概述 组合订单类型是一个非常宽泛的订单类别,只要brokder支持的订单类型都可以, 包括(Market, Limit, Close, Stop, StopLimit, StopTrail, StopTrailLimit, OCO)。 该功能用于回测,交互broker Brac…