电商打折套路解析

  1. 从现有数据中,分析出“各个品牌都有多少商品参加了双十一活动?”
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
from bokeh.plotting import figure,show,output_file
from bokeh.layouts import gridplot
from bokeh.models import ColumnDataSource,HoverTool
import warnings
warnings.filterwarnings('ignore')
df=pd.read_excel('双十一淘宝美妆数据.xlsx',sheetname=0)
df.fillna(0,inplace=True)
df.index=df['update_time']
df['date']=df.index.day

在这里插入图片描述

  1. 商品总数、品牌总数、双十一当天在售的商品占比情况
#(1)计算商品总数,品牌数量

product_id = df['id'].unique()
m1 = len(product_id)
brand_id = df['店名'].unique()
m2 = len(brand_id)
print('商品总数为%i,品牌总数为%i' %(m1,m2))

#(2)双十一当天在售的商品占比情况
data_sale11 = df[df['date'] == 11]
m4 = len(data_sale11)
m5 = m4 / m1
print('双十一当天在售的商品占比为%.2f%%' %(m5*100))

商品总数为3502,品牌总数为22
双十一当天在售的商品占比为66.70%

  1. 未参与双十一当天活动的商品,在双十一之后的去向如何
    按照商品销售节奏分类,我们可以将商品分为7类
    A. 11.11前后及当天都在售 → 一直在售
    B. 11.11之后停止销售 → 双十一后停止销售
    C. 11.11开始销售并当天不停止 → 双十一当天上架并持续在售
    D. 11.11开始销售且当天停止 → 仅双十一当天有售
    E. 11.5 - 11.10 → 双十一前停止销售
    F. 仅11.11当天停止销售 → 仅双十一当天停止销售
    G. 11.12开始销售 → 双十一后上架
    未参与双十一当天活动的商品,可能有四种情况:
    con1 → 暂时下架(F) 未参与双十一当天活动的商品中: 242个位暂时下架商品, 110个为重新上架商品,453个为预售商品
    con2 → 重新上架(E中部分数据,数据中同一个id可能有不同title,“换个马甲重新上架”),字符串查找特定字符 dataframe.str.contains(‘预售’)
    con3 → 预售(E中部分数据,预售商品的title中包含“预售”二字)
    con4 → 彻底下架(E中部分数据),可忽略
saledate = df[['id','date']].groupby('id').agg(['min','max'])['date']
id_11 = df[df['date'] == 11]['id']
id_data = pd.DataFrame({'id':id_11, '双十一是否在售卖':True})
data_sale = pd.merge(saledate,id_data, left_index=True, right_on = 'id', how='left')
data_sale.fillna(False,inplace=True)
data_sale['type']=''
data_sale['type'][(data_sale['min']<11) & (data_sale['max'] > 11)] = 'A'
data_sale['type'][(data_sale['min']<11) & (data_sale['max'] == 11)] = 'B'
data_sale['type'][(data_sale['min']==11) & (data_sale['max'] > 11)] = 'C'
data_sale['type'][(data_sale['min']==11) & (data_sale['max'] == 11)] = 'D'
data_sale['type'][data_sale['双十一是否在售卖']==False] ='F'
data_sale['type'][(data_sale['max'] < 11)] = 'E'
data_sale['type'][data_sale['min'] > 11 ] = 'G'

product_type = data_sale['type'].value_counts()
product_type = product_type.loc[['A','C','F','D','E','G','B']]
plt.pie(product_type,radius=1.5,autopct='%.2f%%',labels=product_type.index)


#暂时下架
id_con1 = data_sale[data_sale['type'] == 'F']

#重新上架
data_title = df[['id','title','date','店名']]
data_not11 = data_sale[data_sale['双十一是否在售卖'] == False]
#datax = data_sale[data_sale['type']=='E']
data_con2 = pd.merge(data_not11,data_title,left_on='id',right_on='id',how='left')[['id','title']]
data_con2.drop_duplicates(inplace=True)
title_count = data_con2.groupby('id').count()
id_con2 = title_count[title_count['title']>1]

#预售商品
data_con3 = pd.merge(data_not11,data_title,left_on = 'id',right_on = 'id',how='left')
data_con3 = data_con3[data_con3['title'].str.contains('预售')]

id_con3 = data_con3['id'].value_counts()

print('未参与双十一当天活动的商品中: %i个位暂时下架商品, %i个为重新上架商品,%i个为预售商品'
      %(len(id_con1),len(id_con2),len(id_con3)))

在这里插入图片描述
未参与双十一当天活动的商品中: 242个位暂时下架商品, 110个为重新上架商品,453个为预售商品

  1. 各个品牌参与双十一的情况
    在这里插入图片描述
  2. 哪些商品真的在打折呢?
    针对每个商品,评估其打折的情况
    针对在打折的商品,其折扣率是多少
    按照品牌分析,不同品牌的打折力度
datax = df[['id','price','店名','date']]
datax.reset_index(inplace=True)
datax['period'] = pd.cut(datax['date'],bins=[4,10,11,14],labels=['双十一前','双十一当天','双十一后'])

datay = datax[['id','price','period']].groupby(['id','price']).min()
datay.reset_index(inplace=True)

id_count = datay['id'].value_counts()

#筛选出打折商品数据
data_dz = pd.DataFrame(id_count[id_count!=1])
m = len(data_dz)/len(id_count)
print('价格在双十一前后存在波动的商品占比为%.2f%%' %(m*100))
data_before11 = datay[datay['period']=='双十一前']
data_on11 = datay[datay['period']=='双十一当天']
data = pd.merge(data_on11,data_before11,left_on = 'id',right_on = 'id')
data['zkl'] = data['price_x']/data['price_y']
data['period'] = pd.cut(data['zkl'],bins=np.linspace(0,1,21)).astype(str)
data = data[data['zkl']<=1]             #删除双十一涨价商品

价格在双十一前后存在波动的商品占比为24.73%
针对在打折的商品,其折扣率是多少

在这里插入图片描述
按照品牌分析,不同品牌的打折力度
在这里插入图片描述
6. 商家营销套路挖掘

datax11 = datax[datax['date'] == 11]

data_brand11 = pd.DataFrame(datax11.groupby('店名').count()['id']) #参与双十一商品总数
data_brand_zk = pd.DataFrame(brand_zk.groupby('name')['id'].count()) #参与打折商品总数

brand_zkld = brand_zk.groupby('name').mean()  #品牌打折力度
dataz = pd.merge(data_brand_zk,data_brand11,left_index = True,right_index = True,how='left')
dataz = pd.merge(dataz,brand_zkld,left_index = True,right_index = True,how='left')


dataz.columns = ['zk_amount11','amount11','zkld']
dataz['zk_per'] = dataz['zk_amount11']/dataz['amount11']

dataz = pd.merge(dataz,data_final1,left_index = True,right_index = True,how='left')

对各品牌打折商品的数量以及打折力度进行数据进行可视化
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值