(电商)唯品会双十一促销活动复盘——数据分析

(电商)唯品会双十一促销活动复盘——数据分析

项目背景:

    唯品会是一个专门做特卖的网站,什么是特卖呢。特卖一般是指在特定的时间段里,以优惠的价格出售指定的商品,一般以商城或者专卖店为多。该模式在线下早已存在(比如商场促销、街边的尾货甩卖),在国外成熟的大商场内也有针对滞销商品的打折特卖,如奥特莱斯。特卖一般是商家清库存,不过也有一些专门生产商品做特卖的商家。

    特卖行业也是有个真实存在的产业链,只是因为快速分销渠道,地理位置等关系,大多数都集中在一线城市,部分生活在一线城市的都基本或多或少去过几次各个品牌的特卖仓,但是二三线甚至四五线城市的就比较难接触到,后来就有一群人成了品牌搬运工,和各大品牌联系通过微信等渠道快速分销大牌库存,达到快速低价消除库存,加快周转回笼资金等目的。

    在货源上,由于品牌尾货具备天然的清仓需求,是折扣零售最常见的货源,但实际上,只要成本足够低,新品首发、定制包销、自有品牌均可以成为折扣特卖零售的可持续货源。成立初期,唯品会货源以尾货为主,但随着唯品会在电商领域的不断发展,新品和专供品的占比不断提升,早在 2016 年 Q2 分析中,唯品会当季新品和平台特供品就已经占 37%了。

此次分析的目标:

    评估每次促销活动的结果,并根据情况优化商品结构,以便让自己的商品卖的更好。

分析流程:

  • 1、总体运营指标
  • 2、从价格区间找出表现不好的产品,优化商品结构
  • 3、从折扣区间来找出表现不好的产品,优化商品结构
import pandas as pd
import numpy as np

import warnings
warnings.filterwarnings('ignore')

〇、数据清洗与准备

1、读取数据,更改列名
import sqlalchemy

engine = sqlalchemy.create_engine('mysql+pymysql://ID:PASSWORD@localhost:3306/datdabase')

# 读取数据
# 商品信息表
sql_cmd = "select * from sales_info1"

# 执行sql语句,获取数据
dt= pd.read_sql(sql=sql_cmd, con=engine)

dt.rename(columns={"sale_name":"商品名",
                    "sale_price":"售卖价",
                    "tag_price":"吊牌价",
                    "discout":"折扣率",
                    "stocks":"库存量",
                    "stocks_value":"货值",
                    "cost_price":"成本价",
                    "profit_rate":"利润率",
                    "skus":"SKU"},
          inplace=True)

dt.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKU
0A00115700.21428650135070140.0666672
1A0022366100.386885423258030750.6822031
2A00347312530.3774944155199953940.1670191
3A0043208350.3832346245210402790.1281252
4A00515820.1829271791467827-0.8000001
# 读取数据
# 商品热度表
sql_cmd = "select * from sales_info2"

# 执行sql语句,获取数据
dt2 = pd.read_sql(sql=sql_cmd, con=engine)

dt2.rename(columns={"sale_name":"商品名",
                    "uvs":"UV数",
                    "collections":"收藏数",
                    "carts":"加购物车数"},
          inplace=True)

dt2.head()
商品名UV数收藏数加购物车数
0A0011092648372
1A0021312484193
2A0032565745173
3A004208335273
4A0051937171356
# 读取数据
# 用户销售明细表
sql_cmd = "select * from sales_info3"

# 执行sql语句,获取数据
dt3 = pd.read_sql(sql=sql_cmd, con=engine)

dt3.rename(columns={"user_id":"用户id",
                    "buy_date":"购买日期",
                    "sale_name":"商品名",
                    "buy_cons":"购买数量",
                    "buy_price":"购买单价",
                    "cost_price":"购买金额",
                    "is_tui":"是否退货",
                    "tui_cons":"退货件数",
                    "tui_price":"退货金额"},
          inplace=True)

dt3['是否退货']=dt3["是否退货"].map({"是":1,"否":0})
dt3.head()
用户id购买日期商品名购买数量购买单价购买金额是否退货退货件数退货金额
0120191111F0011920.0920.011920.0
1220191111B0072548.01096.0000.0
2220191111E0071930.0930.011930.0
3320191111A0042320.0640.012640.0
4320191111H0072750.01500.0000.0
2、合并商品信息表和商品热度表数据
# 把商品信息加上该商品的热度信息
# 得到基础的商品信息,以及商品的一些热度信息:加购物车数量,收藏数量、uv数
dt_products=pd.merge(dt1,dt2,how='left',on='商品名')
dt_products.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数收藏数加购物车数
0A00115700.21428650135070140.06666721092648372
1A0022366100.386885423258030750.68220311312484193
2A00347312530.3774944155199953940.16701912565745173
3A0043208350.3832346245210402790.1281252208335273
4A00515820.1829271791467827-0.80000011937171356
3、合并商品信息表和商品热度表数据和用户销售明细表
dt3.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8036 entries, 0 to 8035
Data columns (total 9 columns):
用户id    8036 non-null object
购买日期    8036 non-null int64
商品名     8036 non-null object
购买数量    8036 non-null int64
购买单价    8036 non-null float64
购买金额    8036 non-null float64
是否退货    8036 non-null int64
退货件数    8036 non-null int64
退货金额    8036 non-null float64
dtypes: float64(3), int64(4), object(2)
memory usage: 565.2+ KB
# 统计每个商品的一个销售情况
product_sales=dt3.groupby('商品名').agg({'购买数量':sum,
                                      '购买金额':sum,
                                   '退货件数':sum,
                                   '退货金额':sum,
                                   '购买单价':np.mean,
                                   '用户id':pd.Series.nunique}).reset_index()

product_sales.rename(columns={'购买数量':'商品销售数量',
                             '购买金额':'商品销售金额',
                             '是否退货':'商品退货数量',
                             '退货金额':'商品退货金额',
                             '购买单价':'商品销售单价',
                             '用户id':'购买用户数量'},inplace=True)

product_sales.head()
商品名商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量
0A0011852775.059885.015.0116
1A00214634456.0317316.0236.087
2A00314468112.03114663.0473.094
3A00417255040.05617920.0320.0111
4A0051221830.032480.015.081
# 合并商品信息
dt_product_sales=pd.merge(dt_products,product_sales,how='left',on='商品名')
dt_product_sales.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数收藏数加购物车数商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量
0A00115700.21428650135070140.066667210926483721852775.059885.015.0116
1A0022366100.386885423258030750.6822031131248419314634456.0317316.0236.087
2A00347312530.3774944155199953940.1670191256574517314468112.03114663.0473.094
3A0043208350.3832346245210402790.128125220833527317255040.05617920.0320.0111
4A00515820.1829271791467827-0.800000119371713561221830.032480.015.081

一、总体运营情况评价

总体运营部分,主要关注销售额、售卖比、UV、转化率等指标,其他指标作为辅助指标。销售额用来和预期目标做对比,售卖比用来看商品流转情况。

  • GMV:销售额,在唯品会里称为到手价。
  • 实销:GMV – 拒退金额。
  • 销量:累计销售量(含拒退)。
  • 客单价:GMV / 客户数,客单价与毛利率息息相关,一般客单价越高,毛利率越高。
  • UV:商品所在页面的独立访问数。
  • 转化率:客户数 / UV。
  • 折扣率:GMV / 吊牌总额(吊牌总额 = 吊牌价 * 销量),在日常工作中,吊牌额是必不可少的。
  • 备货值:吊牌价 * 库存数。
  • 售卖比:又称售罄率,GMV / 备货值。
  • 收藏数:收藏某款商品的用户数量。
  • 加购数:加购物车人数。
  • SKU数:促销活动中的SKU计数(一般指货号)。
  • SPU数:促销活动中的SPU计数(一般指款号)。
  • 拒退量:拒收和退货的总数量。
  • 拒退额:拒收和退货的总金额。
#1、GMV:销售额,包含退货的金额
GMV=dt_product_sales.商品销售金额.sum()
GMV
3747167.0
#2、实际销售额=GMV - 退货金额
ruturn_sales=dt_product_sales.商品退货金额.sum()
实际销售额=GMV-ruturn_sales
实际销售额
2607587.0
#3、销量:累计销售量(含拒退)
销量=dt_product_sales.商品销售数量.sum()
销量
12017
#4、客单价:GMV / 客户数,客单价与毛利率息息相关,一般客单价越高,毛利率越高。
# dt3.user_id.unique().count()
客单价=GMV/dt_product_sales.购买用户数量.sum()
客单价
493.56783456269756
# 5、UV:商品所在页面的独立访问数
UV=dt_product_sales.UV数.sum()
UV
1176103
# 6、转化率:客户数 / UV。
转化率 = dt_product_sales.购买用户数量.sum()/UV
转化率
0.006455216932530569
# 7、折扣率:GMV / 吊牌总额(吊牌总额 = 吊牌价 * 销量),在日常工作中,吊牌额是必不可少的。
吊牌总额=(dt_product_sales.吊牌价*dt_product_sales.商品销售数量).sum()
折扣率=GMV/吊牌总额
折扣率
0.4179229541452886
# 8、备货值:吊牌价 * 库存数。
备货值=(dt_product_sales.吊牌价*dt_product_sales.库存量).sum()
备货值
18916395
# 9、售卖比:又称售罄率,GMV / 备货值。
售卖比=GMV/备货值
售卖比
0.19809096817866195
# 10、收藏数:收藏某款商品的用户数量。
收藏数=dt_product_sales.收藏数.sum()
收藏数
6224
# 11、加购数:加购物车人数。
加购数=dt_product_sales.加购物车数.sum()
加购数
18690
# 12、SKU数:促销活动中的最小品类单元(一般指货号)。
SKU数=dt_product_sales.SKU.sum()
SKU数
125
# 13、SPU数:促销活动中的SPU计数(一般指款号)。
SPU数=dt_product_sales.商品名.nunique()
SPU数
80
# 14、拒退量:拒收和退货的总数量。退货件数
拒退量=dt_product_sales.退货件数.sum()
拒退量
3643
# 15、拒退额:拒收和退货的总金额。
拒退额=dt_product_sales.商品退货金额.sum()
拒退额
1139580.0
# 汇总统计
# 汇总统计
sales_state_thisyear = pd.DataFrame(
    {"GMV":[GMV],"实际销售额":[实际销售额],"销量":[销量],"客单价":[客单价],
     "UV数":[UV],"UV转化率":[转化率],"折扣率":[折扣率],"货值":[备货值],
     "售卖比":[售卖比],"收藏数":[收藏数],"加购数":[加购数],"sku数":[SKU数],
     "spu数":[SPU数],"拒退量":[拒退量],"拒退额":[拒退额]},
    ) #index=["今年双11",]
sales_state_thisyear 

# 去年的数据
sales_state_lastyear = pd.DataFrame(
    {"GMV":[2261093],"实际销售额":[1464936.517],"销量":[7654],"客单价":[609.34567],
     "UV数":[904694,],"UV转化率":[0.0053366,],"折扣率":[0.46,],"货值":[12610930],
     "售卖比":[0.1161],"收藏数":[4263],"加购数":[15838],"sku数":[82],
     "spu数":[67],"拒退量":[2000],"拒退额":[651188.57]}
    ) #index=["去年双11",]

#sales_state = pd.concat([sales_state_thisyear, sales_state_lastyear])
sales_state_thisyear_s = pd.DataFrame(sales_state_thisyear.stack()).reset_index().iloc[:,[1,2]]
sales_state_thisyear_s.columns = ["指标","今年双11"]
sales_state_lastyear_s = pd.DataFrame(sales_state_lastyear.stack()).reset_index().iloc[:,[1,2]]
sales_state_lastyear_s.columns = ["指标","去年双11"]
sales_state = pd.merge(sales_state_thisyear_s, sales_state_lastyear_s,on="指标")
sales_state["同比"] = (sales_state["今年双11"] - sales_state["去年双11"]) / sales_state["去年双11"]
pd.set_option('display.float_format',lambda x : '%f' % x) #禁用科学技数法
sales_state
指标今年双11去年双11同比
0GMV3747167.0000002261093.0000000.657237
1实际销售额2607587.0000001464936.5170000.780000
2销量12017.0000007654.0000000.570029
3客单价493.567835609.345670-0.190004
4UV数1176103.000000904694.0000000.300001
5UV转化率0.0064550.0053370.209612
6折扣率0.4179230.460000-0.091472
7货值18916395.00000012610930.0000000.500000
8售卖比0.1980910.1161000.706210
9收藏数6224.0000004263.0000000.460005
10加购数18690.00000015838.0000000.180073
11sku数125.00000082.0000000.524390
12spu数80.00000067.0000000.194030
13拒退量3643.0000002000.0000000.821500
14拒退额1139580.000000651188.5700000.750000

二、从价格区间来优化商品结构

我们需要做的是,深入探究不同区间的数据,以此来优化后期的促销结构。首先我们需要找到在本次促销中此区间的销售源数据,源数据要求显示具体的款号、销售额、销量等信息。第二步,计算出每个款的转化率、折扣率等数据。

查看指标:

  • 销售额
  • 销量
  • 件单价
  • 客户数
  • UV
  • 转换率
  • 库存
  • 货值
  • 售卖比
# 划分价格区间段
#设置切分区域
listbins=[0,200,400,100000]

#设置切分后对应标签
list_labels=['1-200','200-400','400以上']

#利用pd.cut进行数据离散化切分,注意分组标签和分组数要一致
"""
pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)
x:需要切分的数据
bins:切分区域
right : 是否包含右端点默认True,包含
labels:对应标签,用标记来代替返回的bins,若不在该序列中,则返回NaN
retbins:是否返回间距bins
precision:精度
include_lowest:是否包含左端点,默认False,不包含
"""
dt_product_sales['价格分组']=pd.cut(dt_product_sales.售卖价,bins=listbins,labels=list_labels,include_lowest=True)
dt_product_sales.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数收藏数加购物车数商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组
0A00115700.21428650135070140.066667210926483721852775.00000059885.00000015.0000001161-200
1A0022366100.386885423258030750.6822031131248419314634456.000000317316.000000236.00000087200-400
2A00347312530.3774944155199953940.1670191256574517314468112.0000003114663.000000473.00000094400以上
3A0043208350.3832346245210402790.128125220833527317255040.0000005617920.000000320.000000111200-400
4A00515820.1829271791467827-0.800000119371713561221830.00000032480.00000015.000000811-200
价格区间销售情况统计
  • 价格区间
  • 货值
  • 货值占比
  • 销售额
  • 售卖比
  • 销售占比
  • 销量
  • 客单价
  • UV
  • 收藏数
  • 加购数
  • 转化率
# 货值分组数据、销量分组数据
dt_price_agg=dt_product_sales.groupby('价格分组').agg({'货值':sum,
                                     '商品销售金额':sum,
                                     '商品销售数量':sum,
                                     'UV数':sum,
                                     '购买用户数量':sum,
                                     '收藏数':sum,
                                     '加购物车数':sum}).reset_index()
dt_price_agg.head()
价格分组货值商品销售金额商品销售数量UV数购买用户数量收藏数加购物车数
01-2001573146339896.0000003615369561228017335324
1200-40085859731417702.0000004978465547315126088302
2400以上87572761989569.0000003424340995216118835064
# 货值占比、销售占比、客单价、转化率
dt_price_agg['货值占比']=dt_price_agg.货值/dt_price_agg.货值.sum()
dt_price_agg['销售占比']=dt_price_agg.商品销售金额/dt_price_agg.商品销售金额.sum()
dt_price_agg['客单价']=dt_price_agg.商品销售金额/dt_price_agg.购买用户数量
dt_price_agg['转化率']=dt_price_agg.购买用户数量/dt_price_agg.UV数
dt_price_agg
价格分组货值商品销售金额商品销售数量UV数购买用户数量收藏数加购物车数货值占比销售占比客单价转化率
01-2001573146339896.00000036153695612280173353240.0831630.090707149.0771930.006169
1200-40085859731417702.00000049784655473151260883020.4538910.378340449.9212950.006768
2400以上87572761989569.00000034243409952161188350640.4629460.530953920.6705230.006337
# 取出400及以上价格区间的数据内容
dt_over_400=dt_product_sales[dt_product_sales['价格分组']=='400以上']
dt_over_400.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数收藏数加购物车数商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组
2A00347312530.3774944155199953940.1670191256574517314468112.0000003114663.000000473.00000094400以上
5A00642814930.2866742643941522330.4556071580513416114361204.0000004619688.000000428.00000090400以上
10B00142611210.3800184795369593110.269953120448624215867308.0000004318318.000000426.000000101400以上
13B00449113940.3522243965520243530.28105921453512021116078560.0000004723077.000000491.000000102400以上
15B00648414670.3299252964342323980.1776862373311528514168244.0000004823232.000000484.00000091400以上
计算商品指标
  • 销售额
  • 销量
  • 件单价
  • 客户数
  • UV
  • 转换率=客户数 / UV
  • 库存
  • 备货值=吊牌价 * 库存数
  • 售卖比=又称售罄率,GMV / 备货值
# 转化率=客户数 / UV
dt_over_400['转化率']=dt_over_400.购买用户数量/dt_over_400.UV数
# 备货值=吊牌价 * 库存数
dt_over_400['备货值']=dt_over_400.吊牌价*dt_over_400.库存量
dt_over_400.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...加购物车数商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组转化率备货值
2A00347312530.3774944155199953940.167019125657...17314468112.0000003114663.000000473.00000094400以上0.003664519995
5A00642814930.2866742643941522330.45560715805...16114361204.0000004619688.000000428.00000090400以上0.015504394152
10B00142611210.3800184795369593110.269953120448...24215867308.0000004318318.000000426.000000101400以上0.004939536959
13B00449113940.3522243965520243530.281059214535...21116078560.0000004723077.000000491.000000102400以上0.007018552024
15B00648414670.3299252964342323980.17768623733...28514168244.0000004823232.000000484.00000091400以上0.024377434232

5 rows × 21 columns

# 售卖比=又称售罄率,GMV / 备货值
dt_over_400['售卖比']=dt_over_400.商品销售金额/dt_over_400.备货值
dt_over_400.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组转化率备货值售卖比
2A00347312530.3774944155199953940.167019125657...14468112.0000003114663.000000473.00000094400以上0.0036645199950.130986
5A00642814930.2866742643941522330.45560715805...14361204.0000004619688.000000428.00000090400以上0.0155043941520.155280
10B00142611210.3800184795369593110.269953120448...15867308.0000004318318.000000426.000000101400以上0.0049395369590.125350
13B00449113940.3522243965520243530.281059214535...16078560.0000004723077.000000491.000000102400以上0.0070185520240.142313
15B00648414670.3299252964342323980.17768623733...14168244.0000004823232.000000484.00000091400以上0.0243774342320.157160

5 rows × 22 columns

dt_over_400[['商品名','商品销售金额','商品销售数量','购买用户数量','UV数','转化率','库存量','备货值','售卖比']].head()
商品名商品销售金额商品销售数量购买用户数量UV数转化率库存量备货值售卖比
2A00368112.00000014494256570.0036644155199950.130986
5A00661204.0000001439058050.0155042643941520.155280
10B00167308.000000158101204480.0049394795369590.125350
13B00478560.000000160102145350.0070183965520240.142313
15B00668244.0000001419137330.0243772964342320.157160
dt_over_400.describe().iloc[:,-3:]
转化率备货值售卖比
count23.00000023.00000023.000000
mean0.009080380751.1304350.253001
std0.006193124618.0941560.122274
min0.003664179772.0000000.124160
25%0.004587285115.0000000.155137
50%0.007018319682.0000000.230562
75%0.012989484616.5000000.318303
max0.024377645402.0000000.639005
优化方案:
  • 转化率大于0.8%的商品,暂时保留,用于下次促销活动;
  • 转化率小于0.8%的商品,但是售卖比大于25%的商品予以保留参加下次促销活动,
  • 转化率小于0.8%的商品,并且售卖比小于25%的商品进行清仓处理。
# 挑选合格的商品:
# 1、保留商品:转化率大于0.8%的商品予以保留
dt.remain1=dt_over_400[dt_over_400.转化率>0.008]
dt.remain1.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组转化率备货值售卖比
5A00642814930.2866742643941522330.45560715805...14361204.0000004619688.000000428.00000090400以上0.0155043941520.155280
15B00648414670.3299252964342323980.17768623733...14168244.0000004823232.000000484.00000091400以上0.0243774342320.157160
29C01075012260.6117462292807541280.82933315044...11787750.0000004332250.000000750.00000075400以上0.0148692807540.312551
46E00793015780.5893544096454023560.61720417264...154143220.0000004743710.000000930.00000096400以上0.0132166454020.221908
50F00192014380.6397772173120462370.74239114630...116106720.0000004036800.000000920.00000080400以上0.0172793120460.342001

5 rows × 22 columns

# 挑选合格的商品:
# 2、保留商品:找出转化率小于0.8% 但是 售卖比大于25%的部分予以保留
dt.remain2=dt_over_400[(dt_over_400.转化率<0.008) & (dt_over_400.售卖比>0.25)]
dt.remain2.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组转化率备货值售卖比
48E00940110040.3994022242248962680.331671225477...15562155.0000005020050.000000401.00000099400以上0.0038862248960.276372
60G00146312660.3657191421797722680.421166213011...14265746.0000004621298.000000463.00000095400以上0.0073021797720.365719
69G01072011560.6228372673086521520.788889119119...145104400.0000004230240.000000720.00000091400以上0.0047603086520.338245
75H0067108250.8606063242673002030.714085210479...12286620.0000004330530.000000710.00000082400以上0.0078252673000.324055

4 rows × 22 columns

# 3、清仓处理商品,找出转化率小于0.8%并且售卖比小于25%的部分
dt.clearance=dt_over_400[(dt_over_400.转化率<0.008) & (dt_over_400.售卖比<0.25)]
dt.clearance.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组转化率备货值售卖比
2A00347312530.3774944155199953940.167019125657...14468112.0000003114663.000000473.00000094400以上0.0036645199950.130986
10B00142611210.3800184795369593110.269953120448...15867308.0000004318318.000000426.000000101400以上0.0049395369590.125350
13B00449113940.3522243965520243530.281059214535...16078560.0000004723077.000000491.000000102400以上0.0070185520240.142313
16B00754814990.3655773254871754200.233577229492...201110148.0000006636168.000000548.000000122400以上0.0041374871750.226095
17B00848014220.3375533394820583020.370833218574...13665280.0000003918720.000000480.00000082400以上0.0044154820580.135419

5 rows × 22 columns

三、从折扣区间来优化商品结构

同样地,我们选择0.35-0.4折扣区间进行深入探究。dt_product_discount_info表中,我们可以得到0.35-0.4折扣区间的售卖比为16.90%,转化率为0.53%,折扣率为37%,在进行商品结构优化的时候要着重对比这几个指标。

dt_product_sales.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数收藏数加购物车数商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组
0A00115700.21428650135070140.066667210926483721852775.00000059885.00000015.0000001161-200
1A0022366100.386885423258030750.6822031131248419314634456.000000317316.000000236.00000087200-400
2A00347312530.3774944155199953940.1670191256574517314468112.0000003114663.000000473.00000094400以上
3A0043208350.3832346245210402790.128125220833527317255040.0000005617920.000000320.000000111200-400
4A00515820.1829271791467827-0.800000119371713561221830.00000032480.00000015.000000811-200
# 划分价格区间段
#设置切分区域
discount_bins=[0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,1]
#设置切分后对应标签
discount_labels=['0.15-0.20','0.20-0.25','0.25-0.30','0.30-0.35','0.35-0.40','0.40-0.45',
                 '0.45-0.50','0.50-0.55','0.55-0.60','0.60-0.65','0.65-0.70','0.70-1',]
#利用pd.cut进行数据离散化切分,注意分组标签和分组数要一致
"""
pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)
x:需要切分的数据
bins:切分区域
right : 是否包含右端点默认True,包含
labels:对应标签,用标记来代替返回的bins,若不在该序列中,则返回NaN
retbins:是否返回间距bins
precision:精度
include_lowest:是否包含左端点,默认False,不包含
"""
dt_product_sales['折扣区间']=pd.cut(dt_products.折扣率,bins=discount_bins,labels=discount_labels,include_lowest=True)
dt_product_sales.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数收藏数加购物车数商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间
0A00115700.21428650135070140.066667210926483721852775.00000059885.00000015.0000001161-2000.20-0.25
1A0022366100.386885423258030750.6822031131248419314634456.000000317316.000000236.00000087200-4000.35-0.40
2A00347312530.3774944155199953940.1670191256574517314468112.0000003114663.000000473.00000094400以上0.35-0.40
3A0043208350.3832346245210402790.128125220833527317255040.0000005617920.000000320.000000111200-4000.35-0.40
4A00515820.1829271791467827-0.800000119371713561221830.00000032480.00000015.000000811-2000.15-0.20
折扣区间销售情况统计
  • 价格区间
  • 货值
  • 货值占比
  • 销售额
  • 售卖比
  • 销售占比
  • 销量
  • 客单价
  • UV
  • 收藏数
  • 加购数
  • 转化率
# 货值分组数据、销售分组数据等 
dt_discount_agg=dt_product_sales.groupby('折扣区间').agg({'货值':sum,
                                                          '商品销售金额':sum,
                                                          '商品销售数量':sum,
                                                          'UV数':sum,
                                                          '购买用户数量':sum,
                                                          '收藏数':sum,
                                                          '加购物车数':sum}).reset_index()
dt_discount_agg
折扣区间货值商品销售金额商品销售数量UV数购买用户数量收藏数加购物车数
00.15-0.20146781830.000000122193718171356
10.20-0.25597376106944.0000001052678086345201505
20.25-0.3054651679924.00000072566471462538971
30.30-0.352553886382794.0000001065876096605361530
40.35-0.4081057841369758.0000003696443317234120465884
50.40-0.452098352453179.000000198818420512588453428
60.45-0.501869262311158.00000014521381949346831996
70.50-0.5511239538024.000000196260881242584
80.55-0.60645402143220.00000015472649678388
90.60-0.651785946590706.0000001144982107356301795
100.65-0.70319498183010.00000030127087185169690
110.70-126730086620.00000012210479828363
# 货值占比、销量占比、客单价、转化率  
dt_discount_agg['货值占比']=dt_discount_agg.货值/dt_discount_agg.货值.sum()
dt_discount_agg['销量占比']=dt_discount_agg.商品销售数量/dt_discount_agg.商品销售数量.sum()
dt_discount_agg['客单价']=dt_discount_agg.商品销售金额/dt_discount_agg.购买用户数量
dt_discount_agg['转化率']=dt_discount_agg.购买用户数量/dt_discount_agg.UV数

dt_discount_agg
折扣区间货值商品销售金额商品销售数量UV数购买用户数量收藏数加购物车数货值占比销量占比客单价转化率
00.15-0.20146781830.0000001221937181713560.0007760.01015222.5925930.004182
10.20-0.25597376106944.00000010526780863452015050.0315800.087543168.6813880.009350
20.25-0.3054651679924.000000725664714625389710.0288910.060331172.9956710.006950
30.30-0.352553886382794.00000010658760966053615300.1350090.088624579.9909090.007533
40.35-0.4081057841369758.00000036964433172341204658840.4285060.307564585.1166170.005281
50.40-0.452098352453179.0000001988184205125884534280.1109280.165432360.2376790.006829
60.45-0.501869262311158.000000145213819493468319960.0988170.120829333.1456100.006759
70.50-0.5511239538024.0000001962608812425840.0059420.016310306.6451610.004753
80.55-0.60645402143220.000000154726496783880.0341190.0128151491.8750000.013216
90.60-0.651785946590706.00000011449821073563017950.0944130.095198803.6816330.007484
100.65-0.70319498183010.000000301270871851696900.0168900.025048989.2432430.006830
110.70-126730086620.000000122104798283630.0141310.0101521056.3414630.007825
# 取出0.35-0.4价格区间的数据内容
discount_3540=dt_product_sales[dt_product_sales['折扣区间']=='0.35-0.40']
discount_3540.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数收藏数加购物车数商品销售数量商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间
1A0022366100.386885423258030750.6822031131248419314634456.000000317316.000000236.00000087200-4000.35-0.40
2A00347312530.3774944155199953940.1670191256574517314468112.0000003114663.000000473.00000094400以上0.35-0.40
3A0043208350.3832346245210402790.128125220833527317255040.0000005617920.000000320.000000111200-4000.35-0.40
10B00142611210.3800184795369593110.269953120448624215867308.0000004318318.000000426.000000101400以上0.35-0.40
12B0032887460.3860594393274941090.62152812317011129915143488.0000004412672.000000288.00000089200-4000.35-0.40
计算商品指标
  • 销售额
  • 销量
  • 件单价
  • 客户数
  • UV
  • 转换率=客户数 / UV
  • 库存
  • 货值=吊牌价 * 库存数
  • 售卖比=又称售罄率,GMV / 备货值
# 转化率=客户数 / UV
# 备货值=吊牌价 * 库存数
discount_3540['转化率']=discount_3540.购买用户数量/discount_3540.UV数
discount_3540['备货值']=discount_3540.吊牌价*discount_3540.库存量
discount_3540.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间转化率备货值售卖比
1A0022366100.386885423258030750.682203113124...34456.000000317316.000000236.00000087200-4000.35-0.400.0066292580300.133535
2A00347312530.3774944155199953940.167019125657...68112.0000003114663.000000473.00000094400以上0.35-0.400.0036645199950.130986
3A0043208350.3832346245210402790.128125220833...55040.0000005617920.000000320.000000111200-4000.35-0.400.0053285210400.105635
10B00142611210.3800184795369593110.269953120448...67308.0000004318318.000000426.000000101400以上0.35-0.400.0049395369590.125350
12B0032887460.3860594393274941090.621528123170...43488.0000004412672.000000288.00000089200-4000.35-0.400.0038413274940.132790

5 rows × 23 columns

# 售卖比=又称售罄率,GMV / 备货值
discount_3540['售卖比']=discount_3540.商品销售金额/discount_3540.备货值
discount_3540.head()
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间转化率备货值售卖比
1A0022366100.386885423258030750.682203113124...34456.000000317316.000000236.00000087200-4000.35-0.40150.8505752580300.133535
2A00347312530.3774944155199953940.167019125657...68112.0000003114663.000000473.00000094400以上0.35-0.40272.9468095199950.130986
3A0043208350.3832346245210402790.128125220833...55040.0000005617920.000000320.000000111200-4000.35-0.40187.6846855210400.105635
10B00142611210.3800184795369593110.269953120448...67308.0000004318318.000000426.000000101400以上0.35-0.40202.4554465369590.125350
12B0032887460.3860594393274941090.621528123170...43488.0000004412672.000000288.00000089200-4000.35-0.40260.3370793274940.132790

5 rows × 23 columns

discount_3540.describe().iloc[:,-3:]
转化率备货值售卖比
count25.00000025.00000025.000000
mean0.006746324231.3600000.194728
std0.004307160733.3274360.076399
min0.00332586436.0000000.088185
25%0.003892209982.0000000.131121
50%0.005011262892.0000000.187435
75%0.007296487175.0000000.230854
max0.021228679320.0000000.365719

优化结果:

  • 折扣率**大于37%**的部分找出售卖比大于36.5%且转化率大于0.7%的商品予以保留,其余进行清仓处理;

  • 折扣率**小于37%**的部分找出售卖比大于36.5%且转化率大于0.7%的部分予以保留,其余进行清仓处理。

# 挑选合格的商品:
# 1、保留商品:折扣率大于37%的部分找出售卖比大于36.5%且转化率大于0.7%的商品予以保留
discount_remain1=discount_3540[(discount_3540.折扣率>0.37)&(discount_3540.售卖比>0.365)&(discount_3540.转化率>0.007)]
discount_remain1
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间转化率备货值售卖比
64G0052215880.375850147864361060.52036224334...31603.000000439503.000000221.00000092200-4000.35-0.400.021228864360.365623

1 rows × 23 columns

# 2、清仓处理商品,不满足条件的:折扣率大于37%的部分找出售卖比小于36.5%或转化率小于0.7%的商品
# 取反即可
discount_clearance1=discount_3540[(discount_3540.折扣率>0.37)&((discount_3540.售卖比<0.365)|(discount_3540.转化率<0.007))]
discount_clearance1
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间转化率备货值售卖比
1A0022366100.386885423258030750.682203113124...34456.000000317316.000000236.00000087200-4000.35-0.400.0066292580300.133535
2A00347312530.3774944155199953940.167019125657...68112.0000003114663.000000473.00000094400以上0.35-0.400.0036645199950.130986
3A0043208350.3832346245210402790.128125220833...55040.0000005617920.000000320.000000111200-4000.35-0.400.0053285210400.105635
10B00142611210.3800184795369593110.269953120448...67308.0000004318318.000000426.000000101400以上0.35-0.400.0049395369590.125350
12B0032887460.3860594393274941090.621528123170...43488.0000004412672.000000288.00000089200-4000.35-0.400.0038413274940.132790
19B0103909920.3931451881864962650.32051327934...46800.0000004316770.000000390.00000082200-4000.35-0.400.0103351864960.250944
37D0083409160.3711792872628922040.40000026236...42160.0000003612240.000000340.00000084200-4000.35-0.400.0134702628920.160370
48E00940110040.3994022242248962680.331671225477...62155.0000005020050.000000401.00000099400以上0.35-0.400.0038862248960.276372
63G00439210400.3769234794981602340.403061215356...57624.0000005019600.000000392.00000090200-4000.35-0.400.0058614981600.115674
70H0012977550.3933773382551901660.44107716856...44253.0000004212474.000000297.00000092200-4000.35-0.400.0134192551900.173412

10 rows × 23 columns

# 挑选合格的商品:
# 3、保留商品:在折扣率小于37%的部分找出售卖比大于36.5%且转化率大于0.7%的部分予以保留
discount_remain2=discount_3540[(discount_3540.折扣率<0.37)&(discount_3540.售卖比>0.365)&(discount_3540.转化率>0.007)]
discount_remain2
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间转化率备货值售卖比
60G00146312660.3657191421797722680.421166213011...65746.0000004621298.000000463.00000095400以上0.35-0.400.0073021797720.365719

1 rows × 23 columns

# 4、清仓处理商品,不满足此条件的:在折扣率小于37%的部分找出售卖比小于36.5%或转化率小于0.7%的部分
# 取反即可
discount_clearance2=discount_3540[(discount_3540.折扣率<0.37)&((discount_3540.售卖比<0.365)|(discount_3540.转化率<0.007))]
discount_clearance2
商品名售卖价吊牌价折扣率库存量货值成本价利润率SKUUV数...商品销售金额退货件数商品退货金额商品销售单价购买用户数量价格分组折扣区间转换率备货值售卖比
13B00449113940.3522243965520243530.281059214535...78560.04723077.0491.0102400及以上0.35_0.40.0070185520240.142313
16B00754814990.3655773254871754200.233577229492...110148.06636168.0548.0122400及以上0.35_0.40.0041374871750.226095
21C0022015530.3634722871587111050.47761217835...29748.0438643.0201.097200_4000.35_0.40.0123801587110.187435
22C00347313210.3580622423196822540.463002217244...70950.04420812.0473.092400及以上0.35_0.40.0053353196820.221939
24C0052707650.3529411781361701150.574074212610...39690.0359450.0270.092200_4000.35_0.40.0072961361700.291474
26C00740311220.3591802582894761670.585608220754...70122.04718941.0403.0104400及以上0.35_0.40.0050112894760.242238
30D0013469510.3638282392272892690.222543124418...45672.03712802.0346.090200_4000.35_0.40.0036862272890.200942
32D0031935330.3621014172222611650.145078127367...29143.0499457.0193.0911_2000.35_0.40.0033252222610.131121
41E00238910800.3601856296793202440.372751224150...59906.03614004.0389.094200_4000.35_0.40.0038926793200.088185
42E00348613490.3602673544775462200.547325219094...59292.04320898.0486.077400及以上0.35_0.40.0040334775460.124160
54F0053389570.3531871791713032060.390533118817...39546.03210816.0338.077200_4000.35_0.40.0040921713030.230854
56F00748813510.3612142353174854020.176230225320...73200.03416592.0488.095400及以上0.35_0.40.0037523174850.230562
77H0083248860.3656882372099821570.515432119245...45036.04012960.0324.092200_4000.35_0.40.0047802099820.214476

13 rows × 23 columns

优化结果:

  • 折扣率**大于37%**的部分找出售卖比大于36.5%且转化率大于0.7%的商品予以保留,其余进行清仓处理;

  • 折扣率**小于37%**的部分找出售卖比大于36.5%且转化率大于0.7%的部分予以保留,其余进行清仓处理。

总体方案:

  • 在一级入口中,首页的流量占比最高,我们可以将优化后的畅销款(A006、B006、C010、E007、F001、F002、H004、H007等)布局在首页档期流。
  • 在唯品会中,我们需要不断的增加商品来保证我们的SKU数,对于新增的商品我们也会增加在其中。
  • 对于平销款(E009、G001、G010、H006等),我们将其作为快抢和疯抢处理。
  • 对于转化率低、售卖比低的滞销款(A003、B001、B004、B007、B008、C003、C007、D007、E003、F007等),我们将尽快下架商品。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值