美文网首页
电商特卖商品库存优化分析

电商特卖商品库存优化分析

作者: SongSir1 | 来源:发表于2020-09-14 11:44 被阅读0次

    本文是对唯品会特卖商品数据分析案例的一个总结,主要是根据商品促销活动的销售数据,分析商品售卖情况,使用ABC分析法进行商品结构优化。

    ABC分析法

    简述:
    ABC分类法又称帕雷托分析法,也叫主次因素分析法,是项目管理中常用的一种方法。它是根据事物在技术或经济方面的主要特征,进行分类排队,分清重点和一般,从而有区别地确定管理方式的一种分析方法。由于它把被分析的对象分成A、B、C三类,所以又称为ABC分析法。

    标准帕累托图

    在ABC分析法的分析图中,有两个纵坐标,一个横坐标,几个长方形,一条曲线,左边纵坐标表示频数,右边纵坐标表示频率,以百分数表示。横坐标表示影响质量的各项因素,按影响大小从左向右排列,曲线表示各种影响因素大小的累计百分数。一般地,是将曲线的累计频率分为三级,与之相对应的因素分为三类:

    • A类因素:发生累计频率为0%~80%,是主要影响因素,需要严格控制、准确记录,。
    • B类因素:发生累计频率为80%~90%,是次要影响因素,需要稍松空值、良好记录。
    • C类因素:发生累计频率为90%~100%,是一般影响因素,需要简单控制、最少记录。

    电商中的ABC分析法

    在电商运营活动中,商品ABC分级主要指标有“支付转化率”“商品库存”,根据此区分商品属于哪一类。商品ABC分级法需将分析颗粒精细到每个款式,相对复杂,所以只有在店铺进行大型促销活动才会用到,也因为此时数据量足够大,使用ABC分析法才更有意义。

    A级商品:

    • 拥有高库存、高转化率的商品;
    • 因为这类商品既畅销,又有较深的库存作为保障,因此可以作为活动中的主推商品。需要注意的是,在挑选A类商品时,还应注意此款商品的访客不能太低,则,没有经过“充分"流量测试的商品,其高转化率可能是"伪高转化率”。

    B级商品:

    • 经过流量测试的中等转化率商品;
    • 此类商品对访客有一定吸引力,但不如A类商品的转化率,可以继续保持当前的销售定为。但需要注意库存告急,以及错误占用了A类商品陈列位置(B类商品陈列位置需要A类之后)。

    C级商品:

    • 转化率低的商品;
    • C类商品应放置于店铺陈列底端,基本属于被放弃的一类商品。但是,如果C类商品中高库存的,可尝试降价,更换营销方式等办法。

    一、项目背景

    唯品会专门做特卖的网站,在特定的时间段里,以优惠的价格出售指定商品。

    二、分析目标

    评估每次促销活动的结果,根据转换率、售卖比指标构建ABC模型优化商品结构,压缩总库存,使库存结构合理化节约管理力量。

    三、分析过程

    • 准备工作(导入数据及处理观察);
    • 总体运营指标分析 —— 计算商品销售额、销量、客单价、UV等指数进行同比、环比分析;
    • 从价格区间分析商品 —— 将商品按价格分为多个区间,对每个区间的商品进行统计分析,针对指定区间计算转换率、售卖比,分级ABC类商品优化商品结构;
    • 从折扣区间分析商品 —— 将商品按折扣区间分为多个区间,对每个区间的商品进行统计分析,针对指定区间计算转换率、售卖比,分级ABC类商品优化商品结构。

    1.准备工作

    (1) 导入模块
    import pandas as pd
    pd.set_option('max_columns', 25)
    # 保留4位小数
    pd.set_option('display.float_format',lambda x : '%.4f' % x)
    import numpy as np
    
    import warnings
    warnings.filterwarnings('ignore')
    import sqlalchemy
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    (2) 导入数据

    数据文件存放在sql数据库,使用sqlalchemy模块导入

    # 商品信息表
    sql = "select * from sales_info1"
    df1 = pd.read_sql(sql,engine)
    # 商品热度表
    sql = "select * from sales_info2"
    df2 = pd.read_sql(sql,engine)
    # 用户订单表
    sql = 'select * from sales_info3'
    df3 = pd.read_sql(sql,engine)
    
    商品信息表
    商品热度表
    用户订单表
    (3)处理表格得到商品信息表
    • 对用户订单表中的商品进行聚合得到表1
    • 合并商品信息表和热度表得到表2
    • 合并表1和表2的到总体商品销售明细
    # 对用户订单表中的商品进行聚合
    product_sales = df3.groupby('商品名').agg({'用户id': pd.Series.nunique,
                               '购买金额':'sum',
                               '购买数量':'sum',
                               '购买单价':'mean',
                               '退货件数':'sum',
                               '退货金额':'sum'}).reset_index().rename(columns = {'用户id':'商品购买用户数', '购买数量':'商品销售数量','购买金额':'商品销售金额','购买单价':'商品销售单价','是否退货':'商品退货数量','退货金额':'商品退货金额'})
    # 合并商品信息表和热度表
    dt_product = pd.merge(df1,df2,how = 'left',on='商品名')
    # 合并
    df_product_sales = pd.merge(product_sales,dt_product,on = '商品名')
    # 商品总体描述统计
    df_product_sales.describe()
    
    商品销售明细
    商品总体描述统计
    • 共有80件商品,每件商品平均销售额在46839元,平均单价为317元,平均销量为150件退货数为45件,退货率较高达到1/3左右,平均折扣率在4折左右。

    2.总体运营指标分析

    • 分别计算商品GMV(销售额)、实际销售额(销售额-退款金额)、销量、客单价、UV(商品页面独立访问数)、转化率(客户数/UV)、折扣率(GMV/吊牌总额)、备货值(吊牌价*库存数)、售卖比(GMV/备货值)、收藏数、加入购物车数、SKU(最小品类单元)、SPU(款号)、退货量、退款总额
    • 输入去年同期指标值
    • 环比分析
    sales_state = pd.concat([sales_state_dangqi,sales_state_tongqi], axis = 0).T.reset_index().rename(columns = {"index":"指标",1:"今年双11",0:"去年双11"})
    sales_state["同比"] = (sales_state["今年双11"] - sales_state["去年双11"])/sales_state["去年双11"]
    
    今年、去年同期对比
    • 总体运营情况上,今年总销售额为3747167比去年同比上涨65%,销量同比上涨57%;
    • 大多数指标均有上涨,平均涨幅40%左右,抛开折扣率的下降,客单价下降了20%左右。

    3.从价格区间优化商品结构

    3.1 价格区间划分
    • 统计全部商品销售单价
    • 划分价格区间,进行销售统计
    # 商品单价统计
    df_product_sales["商品销售单价"].describe()
    # 划分0-200,201-400,400+ 商品区间
    listbins = [0, 200, 400, 1000000]
    listlabel = ["200元及以下", "201-400元", "400元以上"]
    # cut,左开右闭,include_lowest:包含左端点
    df_product_sales["价格分组"] = pd.cut(df_product_sales["商品销售单价"], bins = listbins, labels= listlabel, include_lowest=True)
    # 进行统计
    dt_product_sales_info = df_product_sales.groupby('价格分组').agg({'货值':'sum',
                                                                      '商品销售金额':'sum',
                                                                      '商品销售数量':'sum',
                                                                      'UV数':'sum',
                                                                      '商品购买用户数':'sum',
                                                                      '收藏数':'sum',
                                                                      '加购物车数':'sum'}).reset_index()
    # 增加占比及转化率
    dt_product_sales_info['货值占比'] = dt_product_sales_info['货值'].div(dt_product_sales_info['货值'].sum())
    dt_product_sales_info['销售占比'] = dt_product_sales_info['商品销售金额'].div(dt_product_sales_info['商品销售金额'].sum())
    dt_product_sales_info['售卖比'] = dt_product_sales_info.apply(lambda x:x[2]/x[1],axis = 1)
    dt_product_sales_info['客单价'] = dt_product_sales_info.apply(lambda x:x[2]/x[5],axis = 1)
    dt_product_sales_info['转换率'] = dt_product_sales_info.apply(lambda x:x[5]/x[4],axis = 1)
    
    价格区间商品统计
    3.2 区间选择
    • 由于个价格区间商品销售表现都相近,转化率大致相同,400+商品的销售金额最高,但是销量最低,货值最高,为避免货物积压,就这一区间进行商品结构优化。
    product_400 = df_product_sales.query("价格分组 == '400元以上'")
    product_400['转换率'] = product_400['商品购买用户数'] / product_400['UV数']
    product_400['备货值'] = product_400['吊牌价'] * product_400['库存量']
    product_400['售卖比'] = product_400['商品销售金额'] / product_400['备货值']
    product_400 = product_400[['商品名','商品销售金额','商品销售数量','商品销售单价','商品购买用户数','UV数','转换率','库存量','备货值','售卖比']].reset_index(drop = True)
    # 划分A、B、C
    def label(x):
        if x[0] > 0.007:
            return "A"
        elif x[0] <= 0.007 and x[1]>0.3:
            return "B"
        else:
            return "C"
    product_400['label'] = product_400[["转换率","售卖比"]].apply(lambda x:label(x),axis = 1)
    product_400['color'] = product_400[["转换率","售卖比"]].apply(lambda x:color(x),axis = 1)
    
    
    400元以上产品
    散点图,黄色:C类,绿色:B类,紫色:A类
    • A、B、C类产品分别有12,10,1件
    3.3 优化方案
    • A:转化率大于0.7%的商品,暂时保留,用于下次促销活动;
    • B:转化率小于等于0.7%的商品,但是售卖比大于30%的商品予以保留参加下次促销活动,
    • C:转化率小于0.7%的商品,并且售卖比小于36%的商品进行清仓处理。

    4.从折扣区间优化商品结构

    4.1 折扣区间划分

    将产品折扣率划分'0.15-0.2','0.2-0.25','0.25-0.3','0.3-0.35','0.35-0.4','0.4-0.45','0.45-0.5','0.5-0.55','0.55-0.6','0.6-0.65','0.65-0.7','0.7+'多个区间进行分析统计

    listbins = [0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 1]
    listlabels = ['0.15-0.2','0.2-0.25','0.25-0.3','0.3-0.35','0.35-0.4','0.4-0.45','0.45-0.5','0.5-0.55','0.55-0.6','0.6-0.65','0.65-0.7','0.7+']
    
    df_product_sales['折扣区间'] = pd.cut(df_product_sales['折扣率'],bins = listbins,labels = listlabels,include_lowest=True)
    df_product_sales
    
    4.2 指标计算

    计算每个折扣区间的货值、销售额、销售数量、UV数、转化率、货值占比等指标

    pd.set_option('display.float_format',lambda x : '%.6f' % x)
    dt_product_discount_info = df_product_sales.groupby('折扣区间').agg({'货值':'sum',
                                                                         '商品销售金额':'sum',
                                                                         '商品销售数量':'sum',
                                                                         'UV数':'sum',
                                                                         '收藏数':'sum',
                                                                         '加购物车数':'sum',
                                                                         '商品购买用户数':'sum'
                                                                         }).reset_index()
    dt_product_discount_info['货值占比'] = dt_product_discount_info['货值'] / dt_product_discount_info['货值'].sum()
    dt_product_discount_info['销售占比'] = dt_product_discount_info['商品销售金额'] / dt_product_discount_info['商品销售金额'].sum()
    dt_product_discount_info['客单价'] = dt_product_discount_info['商品销售金额'] / dt_product_discount_info['商品购买用户数'].sum()
    dt_product_discount_info['转化率'] = dt_product_discount_info['商品购买用户数'] / dt_product_discount_info['UV数'].sum()
    
    折扣区间分析统计
    销售情况
    4.3 区间选择

    折扣率在0.35-0.4之间的产品销售额最高,针对以上区间进行具体分析优化产品

    def label2(x):
        if x[0] > 0.365 and x[1]>0.007:
            return "A"
        else:
            return "C"
    product_354['label'] = product_354[['售卖比','转换率']].apply(lambda x:label2(x),axis = 1)
    
    0.35-0.4区间产品销售情况
    • A类产品有5件、C类产品有20件,对A类产品保留继续下次促销,清仓处理C类产品。
    4.4 优化方案
    • 在折扣区间商品销量均较好,只对商品进行了A、C类划分。
    • 转化率大于0.7%,售卖比大于36.5%的商品划分为A类商品,保留用于下次促销活动。
    • 其余商品划分为C类商品,用于清仓处理。

    四、总结

    • 1.从整体运营情况来看,今年促销活动销售额为3747167元,实际销售额为2607587元,同比去年增涨65%以上,销量为12017件同比增涨57%。
    • 2.根据ABC分析法
      • 从价格区间优化结果来看,400元以上价位产品一共23件,其中A类产品12件、B类1件、C类10件,下次活动可以对A类产品采取宣传措施带动其他产品销量,C类产品进行清仓处理为下次活动节省空间资源。
      • 在折扣区间方面,整体折扣率在0.38左右,销售额贡献最高的为0.35-0.4之间的产品,在这一类产品中,A类5件,C类有20件,我们选择保留A类产品,清仓处理C类产品。

    相关文章

      网友评论

          本文标题:电商特卖商品库存优化分析

          本文链接:https://www.haomeiwen.com/subject/qlaaektx.html