前言
商城销售数据分析
数据源:https://www.heywhale.com/mw/project/5f7f0c07fab2e800300e51e4/content
BI展示http://localhost:37799/webroot/decision/link/xItL
密码: a600【链接失效:2024年10月31日】
1. 销售数据分析
销售数据分析一般分析什么数据,目的是什么,怎么做销售数据分析
1.1 销售分析目的
常见销售分析目的:
- 目的一:评估企业的整体销售情况,把握销售数据目标达成情况。
- 目的二:对特定问题进行针对分析,例如为了提升销售额做产品线销售分析,对爆款产品和冷门产品的备货进行调整,冷门产品迎合市场做出调整等等。
1.1.1 从哪些方面入手
- 销售趋势与季节性分析:通过对销售数据进行时间序列分析,了解销售额、订单量等指标的整体趋势以及可能存在的季节性变化。这有助于预测销售走势和制定合适的营销策略。
- 客户分析:对客户数据进行分析,了解客户的消费行为、购买偏好、消费频次等信息。可以通过客户分群和RFM(最近一次购买时间、购买频率、消费金额)模型,识别高价值客户,并制定相应的客户维护和发展策略。
- 产品分析:对销售的产品进行分析,了解不同产品的销售情况、销售额贡献比例、销售渠道效果等。可以通过产品销售排名、ABC分析法等方法,确定热销产品和滞销产品,并据此进行库存规划和产品优化。
- 渠道分析:对不同销售渠道的数据进行比较和分析,了解各个渠道的销售表现、转化率、成本效益只等。可以评估渠道的贡献度,优化资源配置,并根据道特点制定营销策略。
- 促销活动效果评估:对不同促销活动的数据进行分析,了解促销活动对销售业绩的影响和回报可以分析活动的参与率、转化率、ROI(投资回报率)等指标,以便优化促销策略和资源投入。
- 竞争对手分析:通过对竞争对手的销售数据进行比较和分析,了解市场份额、产品定价、促销策略等方面的差异。这有助于确定自身的竞争优势,并制定相应的市场策略。
1.2 销售分析指标体系
指标分类 | 指标内容 |
---|---|
销售效率指标 | 销售额或销售量、销售增长率和达成率 |
市场占有率指标 | 绝对/相对市场占有率 |
盈利能力指标 | 销售毛利率、净利率、费用率、成本费用率 |
营运能力指标 | 库存周转率、应收账款周转率、滞销库存比率 |
渠道客户指标-代理商客户指标 | 客户满意度、客户保持率、新开发客户成本、新客户成长率、渠道客户数量、交货及时率、促销支持度、售后服务效率 |
渠道客户指标-零售客户指标 | 来客数、客单价、成交率、连带率、人效、坪效、重点品类销售占比、重点品类毛利占比、促销频率、促销商品销售增长率、滞销单品率 |
辅助分析指标-效率性指标 | 人均销售、人均毛利贡献、单位销售回报、订单处理周期 |
辅助分析指标-结构性指标 | 区域销售结构、产品销售结构、产品库存结构、费用结构 |
辅助分析指标-成长性指标 | 同比增长率、环比增长率、销售完成率、销售增长率、利润增长率 |
销售过程指标 | 员工满意度、客情关系、月拜访率、主推率、出样率、新产品上货率、订单缺货率、员工培训次数 |
销售净利润 = (净利润÷销售收入)×100%
销售增长率 =(本期营业收入增加额÷上期营业收入)×100%
净利润增长率 = (本期净利润增加额÷上期净利润)×100%
营业利润率 = (营业利润÷营业收入)×100%
营业利润增长率 = (本期营业利润增加额 ÷上期营业利润)×100%
成本费用利润率 = (利润总额 ÷成本费用总额)×100%
盈利现金比率 = (经营现金净流量 ÷净利润)×100%
销售收现比率 = (销售商品或提供劳务收到的现金 ÷ 主营业务收入净额)×100%
应收账款周转次数 = 销售收入÷应收账款
应收账款周转天数 = 365 ÷(销售收入 ÷应收账款)
应收账款与收入比 = 应收账款 ÷销售收入
存货周转次数 = 销售成本 ÷平均存货
存货周转天数 = 365 ÷(销售收入 ÷存货)
存货与收入比 = 存货 ÷销售收入
1.2.1 整体销售分析
- 销售额/销售量:内部而言进行销量的同环比分析,外部多进行行业标准、市场份额的比较。
销售额完成率 = 实际销售额÷目标销售额x100%
毛利率 = (销售额-所有成本额)÷销售额×100% - 季节因素:一些特殊商品有淡旺季的区分,可以通过调查季节对销量的影响,从而优化产品库存。(渠道压货规则及生产运作规则 如肉禽蛋奶产业)
- 产品线:分析总体产品结构分布和重点产品的表现,推荐使用波士顿矩阵。
- 价格体系:分析总体价格结构,找到最优价格区间,提供价格结构调整的合理性建议来合理定价。
1.2.2 区域销售分析
- 区域分布:了解区域的总销售排名、销售金额占比、总目标达成情况,从而优化库存管理策略。
- 区域产品:明确各大区域下各产品销量和销售金额情况,从而把握地区进货差异。
- 区域销售变化:从时间方面把握各大区域的销售情况,找到季节因素在各大区域对产品的影响差
销售目标完成率 = 各大区实际销售额÷各大区销售目标×100% - 区域拜访:
客户拜访率 = 已拜访客户数÷所分配线索数
1.2.3 客户分析
- 客户分级:根据客户对于企业的贡献率等指标进行衡量与分级,找到贡献率最大的客户。
绝对客户流失率 = (流失的客户数/所有客户数量)×100% - 客户流失与留存分析:把握具体产品下客户的流失情况。
1.2.4 产品分析
- 重点产品:针对重点产品进行分析(如单品销售TOP),即对企业贡献率最大的产品,发现存在问题,提供产品修改意见。
- 产品线结构:分析产品系列和单产品结构分布,明确每条产品线的形象产品、主销产品、主利润产品等
- 产品-区域分析:通过对产品的销售区域分布的分析,区分战略性产品/技术性产品、全国性产品/区域性产品,为产品的划分和进一步细化提供参考。
- 库存分析:考虑有关的货物销售量和库存周转量,并在ABC分析的基础上完成
1.2.5 价格体系分析
- 价格体系分析: 划分出符合实际的价格区间划分标准,寻找主导价位。
- 价格-产品分析: 主导价位区间的趋势分析,主导价格区间的产品构成以及发育状况,分析主导价位产品成长空间。
- 价格-区域分析: 各区域的价位构成分析,寻找各区域的主导价格以及价格层次的产品线战略分布。
1.3 选择分析方法
- 对比法:挖掘数据规律的思维,能够和任何技巧结合,主要分为向对比、纵向对比、目标对比、时间对比等;
- 谁和谁在比
统一维度 统一度量,比如销售额人民币和美元需要转换同单位
- 怎么比
比较对象要有可比性。同量级对比。
- 比完之后干什么
对比完后,明白自己所处状态,状态良好就保持,状态相对较差就优化 - 象限法:运用坐标的方式,人工对数据进行划分,从而传递数据价值,将之转变为策略。象限法应用很广泛,像RFM模型、波士顿矩阵都是象限法思维。
- 漏斗法:本质上是一种流程思路,在确定好关键节点之后,计算节点之间的转化率。这个思路同样适用于很多地方,像电商的用户购买路径分析、app的注册转化率等等。AARRR模型就是以漏斗模型作为基础的。
- 二八法:“世界上80%的财富掌握在20%的富人手里”,这就是二八法则,也叫帕累托法则。这个方法的思维就是抓重点,围绕找到的20%有效数据,找到其特征,使之产生更大的效果。
- 指数法:通过将无法利用的数据加工成指数,达到聚焦的目的,从而找到方向。但指数法没有统一的标准,比较多依靠经验,一旦设立的话不会经常变动。如果数据没有规律的时候,可以试试这个方法。
- 假设法:一般用在进入新领域的时候,没有历史数据参考,没有外部线索,这个时候就需要假设。通过假设的数据进行反推,再去制定计划,整个过程是先假设,后验证,再分析结果。
- 多维法:通过对数据的切割,分成多个维度,通过立方体的形式进行数据展示。在对数据进行交叉分析的时候,可能会出现辛普森悖论,与之而来的应对方法有钻取、上卷、切片、切块旋转等。
1.3.1 6W2H 列出思考维度
1.3.1.1 What 你卖的是什么产品?
根据具体问题还可以展开,比如:
你的产品线是什么?
你的竞品是什么?
你的替代品互补品各是什么?
你的目标消费者的固有选择是什么?
假设我们现在需要从产品线维度来拆,一般礼品电商公司可能不止卖一种礼品,可能还会卖高端签字笔、望远镜等,那么据此可以拆分的问题就是:各个产品的销售额贡献率是多少?按照二八原则理想状态是80%的销售额来源于20%的产品,我们需要知道爆**款是什么,卖得不好的产品是什么?**细分清楚才能进行下一步的分析,才能了解销售额变动的原因,判断之后的趋势。
1.3.1.2 Who 谁在卖?
比如企业内部是谁在做这款产品的销售?
外部市场上有多少同行在卖同款产品?
如果考虑内部,我们可以把问题拆分成,有哪几个部门在卖?由哪几个项目经理负责销售?他们各自对销售额的贡献情况如何?
如果考虑外部市场,可以分析看看同行的销售额是多少?在同行内的排名情况?
1.3.1.3 Whom 卖给谁
这一步说的是谁是你的客户?客户类型有哪些?谁是使用者?谁是影响者?谁是决策者?消费层次如何?采购频次如何?…
1.3.1.4 When 什么时候购买
客户购买的时间分布有何规律?
比如我们可以比较看看销售额是不是有周期性变动的规律?
1.3.1.5 Where 客户在哪里买
我们可以看看有哪些销售渠道,比如是线上还是线下呢? 如果都是线上,那么是信息流平台还是网上商城?
1.3.1.6 Why 客户购买动机是什么?
客户为什么要买我的产品? 客户消费场景有哪些? 客户的痛点有哪些? 有哪些环境因素影响了客户的购买?
1.3.1.7 How 客户如何购买
这个如何购买可以是对支付方式的研究,比如是货到付款还是先付款后发货?是微信支付还是支付宝支付?
如何购买也可以是营销组合要素如何影响消费者的购买决策,消费者在购买决策的看重哪些因素,是购买的便利性呢?还是产品的设计性?还是价格?
1.3.1.8 How much 客户愿意为产品付出多少成本?
这里就涉及到定价策略了,是采用低价渗透呢?高价撇脂呢?还是歧视定价?
还可以考察一下客户的购买成本是如何构成的,是否包含理解成本、货币成本、风险成本、时间成本、便利成本等。当然具体问题具体分析。
2. 商城销售数据分析_帆软BI
2.1 分析思路
2.2 可视化
3. 商城销售数据分析_Python
3.1 分析思路
3.2 分析详情
3.2.1 数据预处理
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.rcParams['axes.unicode_minus'] = False ## 解决坐标轴刻度负号乱码
plt.rcParams['font.sans-serif'] = ['Simhei'] ## 解决中文乱码问题## 设置中文显示,KaiTi,FangSong
import warnings
# 忽略所有的 DeprecationWarning 警告
warnings.filterwarnings('ignore', category=DeprecationWarning)
# 这里是可能会产生 DeprecationWarning 警告的代码
warnings.warn("This feature is deprecated", DeprecationWarning)
# 导入数据
data1 = pd.read_excel('商城详细销售数据.xls',sheet_name='订单')
data2 = pd.read_excel('商城详细销售数据.xls',sheet_name='销售人员')
# 参看数据数据形状
print(data1.shape)
print(data2.shape)
# 对订单数据进行处理,删掉不需要的指标
data3= data1.drop(['行 ID', '客户 ID', '产品 ID','产品名称'],axis=1)
#查看字段不同取值
for column in data1.columns:
print(f"Field: {column}")
print(data1[column].value_counts())
print("====================")
# 将不同表的数据进行合并
df = pd.merge(data3,data2,how='left',left_on='地区',right_on='地区')
df.sample(5) # 随机抽取10行数据进行参看
# 查看缺失值情况
df.isnull().sum() # 数据集中没有缺失值
df.isna().sum()
# 查看数据集统计描述
df.describe()
#df.info()
3.2.2 销售额分析
# 销售额增长态势明显,增长率提升较快
seals_year = df['销售额'].groupby(df['订单日期'].dt.year).sum()
plt.bar(seals_year.index,height=seals_year.values,width=0.8,alpha = 0.5,color = 'y')
plt.xticks(seals_year.index,labels=['2015年','2016年','2017年','2018年'])
plt.ylabel('销售额(元)')
for a,b in zip(seals_year.index,seals_year.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b,ha='center', va= 'bottom',fontsize=10);
# 不同省销售额贡献情况
# 山东、广东、黑龙江是销售额前三省份,处于第一梯队;辽宁、河南和河北处于第二梯队
seals_pro= df['销售额'].groupby(df['省/自治区']).sum().sort_values()
plt.figure(figsize=(15,12))
plt.barh(seals_pro.index,width=seals_pro.values,height=0.5,alpha = 0.5,color = 'b')
plt.ylabel('省份')
plt.xlabel('销售额(元)')
for y, x in enumerate(seals_pro.values):
plt.text(x+500, y-0.2, "%.2f" %x)
# 不同业务员销售额贡献情况
# 洪光、范彩对销售额贡献较大,其次是楚杰和殷莲
seals_man= df['销售额'].groupby(df['地区经理']).sum().sort_values()
plt.bar(seals_man.index,height=seals_man.values,width=0.8,alpha = 0.5,color = 'r')
plt.ylabel('销售额(元)')
for a,b in zip(seals_man.index,seals_man.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)
# 不同类别销售额贡献情况
seals_kind= df['销售额'].groupby(df['类别']).sum().sort_values()
plt.bar(seals_kind.index,height=seals_kind.values,width=0.5,alpha = 0.5,color = 'g')
plt.ylabel('销售额(元)')
for a,b in zip(seals_kind.index,seals_kind.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)
# 不同邮寄方式销售额贡献情况
seals_t= df['销售额'].groupby(df['邮寄方式']).sum().sort_values()
plt.bar(seals_t.index,height=seals_t.values,width=0.5,alpha = 0.5,color = 'g')
plt.ylabel('销售额(元)')
for a,b in zip(seals_t.index,seals_t.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=8)
3.2.3 利润额分析
# 销售额和利润额之间是否存在线性关系
plt.scatter(x=df['利润'],y=df['销售额'],alpha=0.5,color = 'g')
plt.xlabel('利润额')
plt.ylabel('销售额(元)')
# 利率额时间变化图
prf = df['利润'].groupby(df['订单日期'].dt.year).sum()
plt.bar(prf.index,height=prf.values,width=0.8,alpha = 0.5,color = 'b')
plt.xticks(prf.index,labels=['2015年','2016年','2017年','2018年'])
plt.ylabel('利润额(元)')
for a,b in zip(prf.index,prf.values): # 添加数据标签
plt.text(a, b+0.05,
'%.2f' % b,
ha='center',
va= 'bottom',
fontsize=10)
# 各省利润额贡献情况
prf_p= df['利润'].groupby(df['省/自治区']).sum().sort_values()
plt.figure(figsize=(10,12))
plt.barh(prf_p.index,width=prf_p.values,height=0.5,alpha = 0.5,color = 'b')
plt.ylabel('省份')
plt.xlabel('利润额(元)')
# 业务员利润贡献情况
prf_man= df['利润'].groupby(df['地区经理']).sum().sort_values()
plt.bar(prf_man.index,height=prf_man.values,width=0.8,alpha = 0.5,color = 'r')
plt.ylabel('利润额(元)')
for a,b in zip(prf_man.index,prf_man.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)
# 不同类别利润额贡献情况
prf_kind= df['利润'].groupby(df['类别']).sum().sort_values()
plt.bar(prf_kind.index,height=prf_kind.values,width=0.5,alpha = 0.5,color = 'g')
plt.ylabel('利润额(元)')
for a,b in zip(prf_kind.index,prf_kind.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)
# 不同细分类别利润额贡献情况
prf_kinds= df['利润'].groupby(df['子类别']).sum().sort_values()
plt.barh(prf_kinds.index,width=prf_kinds.values,height=0.5,alpha = 0.5,color = 'g')
plt.ylabel('利润额(元)')
# 不同邮寄方式的利润额贡献情况
prf_t= df['利润'].groupby(df['邮寄方式']).sum().sort_values()
plt.bar(prf_t.index,height=prf_t.values,width=0.5,alpha = 0.5,color = 'g')
plt.ylabel('利润额(元)')
for a,b in zip(prf_t.index,prf_t.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=8)
3.2.4 交叉分析
# 省、类别、销售额交叉表
tem = pd.pivot_table(data=df,values=['销售额'],index=['省/自治区'],columns=['类别'],aggfunc='sum')
tem
# 省、类别、销售额交叉表热力图
plt.figure(figsize=(10,10), dpi= 80)
#cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
sns.heatmap(tem,annot=True,annot_kws={'size':9,'weight':'bold', 'color':'black'},cmap='rainbow')
plt.show()
# 省份、类别、利润交叉表
tem1 = pd.pivot_table(data=df,values=['利润'],index=['省/自治区'],columns=['类别'],aggfunc='sum')
tem1
# 省份、类别、利润交叉表 热力图
plt.figure(figsize=(10,10), dpi= 80)
sns.heatmap(tem1,annot=True,annot_kws={'size':9,'weight':'bold', 'color':'black'},cmap='rainbow')
plt.show()
# 销售额、利润额、销售经理交叉
tem2 = pd.pivot_table(data=df,values=['销售额','利润'],index=['类别','地区经理'],aggfunc='sum')
tem2
#地区、分类、销售额、利润交叉表
tem4 = pd.pivot_table(data=df,values=['利润','销售额'],index=['类别','地区'],aggfunc='sum')
tem4
3.2.5 折扣分析
df['折扣额']=df['折扣']*df['销售额']*df['数量']
# 销售经理折扣额
disct= df['折扣额'].groupby(df['地区经理']).sum().sort_values()
plt.bar(disct.index,height=disct.values,width=0.8,alpha = 0.5,color = 'r')
plt.ylabel('折扣(元)')
for a,b in zip(disct.index,disct.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)
#折扣最多的类别
disct_kid= df['折扣额'].groupby(df['类别']).sum().sort_values()
plt.bar(disct_kid.index,height=disct_kid.values,width=0.8,alpha = 0.5,color = 'r')
plt.ylabel('折扣总额(元)')
for a,b in zip(disct_kid.index,disct_kid.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)
# 折扣最多的省份
disct_pro= df['折扣额'].groupby(df['省/自治区']).sum().sort_values()
plt.figure(figsize=(10,10), dpi= 80)
plt.barh(disct_pro.index,width=disct_pro.values,height=0.8,alpha = 0.5,color = 'r')
plt.ylabel('省份')
plt.show()
#for a,b in zip(disct_pro.index,disct_pro.values): # 添加数据标签
# plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)
# 哪些客户最收到的折扣最多
disct_clint= df['折扣额'].groupby(df['客户名称']).sum().sort_values(ascending=False)
tem3 = disct_clint[0:20,]
tem3.plot.bar()
type(tem3)
# 折扣最多的渠道
disct_t= df['折扣额'].groupby(df['邮寄方式']).sum().sort_values()
plt.bar(disct_t.index,height=disct_t.values,width=0.8,alpha = 0.5,color = 'r')
plt.ylabel('折扣总额(元)')
for a,b in zip(disct_t.index,disct_t.values): # 添加数据标签
plt.text(a, b+0.05,'%.2f' % b, ha='center',va= 'bottom',fontsize=10)