數(shù)據(jù)分析項目-電商銷售活動復(fù)盤

數(shù)據(jù)分析項目-電商銷售活動復(fù)盤總結(jié)
使用工具:Anaconda-jupyter大州、mysql
老師指路->http://www.reibang.com/u/1f32f227da5f

分析流程:

  • 1涩赢、總體運營指標
  • 2逛艰、從價格區(qū)間找出表現(xiàn)不好的產(chǎn)品煌茬,優(yōu)化商品結(jié)構(gòu)
  • 3址否、從折扣區(qū)間來找出表現(xiàn)不好的產(chǎn)品局蚀,優(yōu)化商品結(jié)構(gòu)

此次分析的目標:
評估促銷活動的結(jié)果麦锯,并根據(jù)情況優(yōu)化商品結(jié)構(gòu),以便讓自己的商品賣的更好琅绅。

import pandas as pd
import numpy as np

import warnings
warnings.filterwarnings('ignore')
#不顯示警告

讀取各部分數(shù)據(jù)集扶欣、合并

import sqlalchemy

engine = sqlalchemy.create_engine('mysql+pymysql://username:password@localhost:3306/froghd')

# 讀取數(shù)據(jù)
# 商品信息表
sql_cmd = "select * from sales_info1"

# 執(zhí)行sql語句,獲取數(shù)據(jù)
dt1 = pd.read_sql(sql=sql_cmd, con=engine)

dt1.rename(columns={"sale_name":"商品名",
                    "sale_price":"售賣價",
                    "tag_price":"吊牌價",
                    "discout":"折扣率",
                    "stocks":"庫存量",
                    "stocks_value":"貨值",
                    "cost_price":"成本價",
                    "profit_rate":"利潤率",
                    "skus":"SKU"},
          inplace=True)

dt1.head()
#engine = create_engine('dialect+driver://username:password@host:port/database')

#dialect -- 數(shù)據(jù)庫類型
#driver -- 數(shù)據(jù)庫驅(qū)動選擇
#username -- 數(shù)據(jù)庫用戶名
#password -- 用戶密碼
#host 服務(wù)器地址
#port 端口
#database 數(shù)據(jù)庫
商品信息表
# 讀取數(shù)據(jù)
# 商品熱度表
sql_cmd = "select * from sales_info2"

# 執(zhí)行sql語句千扶,獲取數(shù)據(jù)
dt2 = pd.read_sql(sql=sql_cmd, con=engine)

dt2.rename(columns={"sale_name":"商品名",
                    "uvs":"UV數(shù)",
                    "collections":"收藏數(shù)",
                    "carts":"加購物車數(shù)"},
          inplace=True)

dt2.head()
商品熱度表
# 讀取數(shù)據(jù)
# 商品銷售明細表
sql_cmd = "select * from sales_info3"

# 執(zhí)行sql語句料祠,獲取數(shù)據(jù)
dt3 = pd.read_sql(sql=sql_cmd, con=engine)

dt3.rename(columns={"user_id":"用戶id",
                    "buy_date":"購買日期",
                    "sale_name":"商品名",
                    "buy_cons":"購買數(shù)量",
                    "buy_price":"購買單價",
                    "cost_price":"購買金額",
                    "is_tui":"是否退貨",
                    "tui_cons":"退貨件數(shù)",
                    "tui_price":"退貨金額"},
          inplace=True)

dt3['是否退貨']=dt3["是否退貨"].map({"是":1,"否":0})
#是否退貨用數(shù)字表示,便于統(tǒng)計
dt3.head()
商品銷售數(shù)據(jù)

合并商品信息表和商品熱度表數(shù)據(jù)

# 把商品信息加上該商品的熱度信息
# 得到基礎(chǔ)的商品信息澎羞,以及商品的一些熱度信息:加購物車數(shù)量髓绽,收藏數(shù)量、uv數(shù)
dt_product = dt1.merge(dt2,how="left",on="商品名")
#左連接煤痕,顯示全部信息
dt_product.head()
商品信息+商品熱度

合并商品信息表和商品熱度表和用戶銷售明細表

# 統(tǒng)計每個商品的一個銷售情況

product_sales = dt3.groupby("商品名").agg({"購買數(shù)量":"sum",
                                                 "購買金額":"sum",
                                                 "退貨件數(shù)":"sum",
                                                 "退貨金額":"sum",
                                                 "購買單價":"mean",
                                                 "用戶id":pd.Series.nunique}).reset_index()
product_sales.rename(columns={"購買數(shù)量":"商品銷售數(shù)量",
                              "購買金額":"商品銷售金額",
                              "是否退貨":"商品退貨數(shù)量",
                              "退貨金額":"商品退貨金額",
                              "購買單價":"商品銷售單價",
                              "用戶id":"購買用戶數(shù)量"},inplace=True)
product_sales.head()
每件商品銷售情況
# 合并商品信息(三個表格數(shù)據(jù))
dt_product_sales = dt_product.merge(product_sales,how="left",on="商品名")
dt_product_sales.head()
合并表

一梧宫、總體運營情況評價

總體運營部分,主要關(guān)注銷售額摆碉、售賣比塘匣、UV、轉(zhuǎn)化率等指標巷帝,其他指標作為輔助指標忌卤。銷售額用來和預(yù)期目標做對比,售賣比用來看商品流轉(zhuǎn)情況楞泼。

  • GMV:銷售額驰徊,在平臺里稱為到手價。
  • 實銷:GMV – 拒退金額堕阔。
  • 銷量:累計銷售量(含拒退)棍厂。
  • 客單價:GMV / 客戶數(shù),客單價與毛利率息息相關(guān)超陆,一般客單價越高牺弹,毛利率越高。
  • UV:商品所在頁面的獨立訪問數(shù)。
  • 轉(zhuǎn)化率:客戶數(shù) / UV张漂。
  • 折扣率:GMV / 吊牌總額(吊牌總額 = 吊牌價 * 銷量)晶默,在日常工作中,吊牌額是必不可少的航攒。
  • 備貨值:吊牌價 * 庫存數(shù)磺陡。
  • 售賣比:又稱售罄率,GMV / 備貨值漠畜。
  • 收藏數(shù):收藏某款商品的用戶數(shù)量币他。
  • 加購數(shù):加購物車人數(shù)。
  • SKU數(shù):促銷活動中的SKU計數(shù)(一般指貨號)盆驹。
  • SPU數(shù):促銷活動中的SPU計數(shù)(一般指款號)圆丹。
  • 拒退量:拒收和退貨的總數(shù)量。
  • 拒退額:拒收和退貨的總金額躯喇。
#1、GMV:銷售額硝枉,包含退貨的金額
gmv = dt_product_sales["商品銷售金額"].sum()

#2廉丽、實際銷售額=GMV - 退貨金額
return_sales = dt_product_sales["商品退貨金額"].sum()
return_money = gmv - return_sales

#3、銷量:累計銷售量(含拒退)
all_sales = dt_product_sales["商品銷售數(shù)量"].sum()

#4妻味、客單價:GMV / 客戶數(shù)正压,客單價與毛利率息息相關(guān),一般客單價越高责球,毛利率越高焦履。
# dt3.user_id.unique().count()
custom_price = gmv / dt_product_sales["購買用戶數(shù)量"].sum()

# 5、UV:商品所在頁面的獨立訪問數(shù)
uv_cons = dt_product_sales["UV數(shù)"].sum()

# 6雏逾、轉(zhuǎn)化率:客戶數(shù) / UV嘉裤。
uv_rate = dt_product_sales["購買用戶數(shù)量"].sum() / dt_product_sales["UV數(shù)"].sum()

# 7、折扣率:GMV / 吊牌總額(吊牌總額 = 吊牌價 * 銷量)栖博,在日常工作中屑宠,吊牌額是必不可少的。
tags_sales = np.sum(dt_product_sales["吊牌價"] * dt_product_sales["商品銷售數(shù)量"])
discount_rate= gmv / tags_sales 

# 8仇让、備貨值:吊牌價 * 庫存數(shù)典奉。
goods_value = dt_product_sales["貨值"].sum()

# 9、售賣比:又稱售罄率丧叽,GMV / 備貨值卫玖。
sales_rate = gmv / goods_value

# 10、收藏數(shù):收藏某款商品的用戶數(shù)量踊淳。
coll_cons = dt_product_sales["收藏數(shù)"].sum()

# 11假瞬、加購數(shù):加購物車人數(shù)。
add_shop_cons = dt_product_sales["加購物車數(shù)"].sum()

# 12、SKU數(shù):促銷活動中的最小品類單元(一般指貨號)笨触。
sku_cons = dt_product_sales["SKU"].sum()

# 13懦傍、SPU數(shù):促銷活動中的SPU計數(shù)(一般指款號)。
spu_cons = len(dt_product_sales["商品名"].unique())

# 14芦劣、拒退量:拒收和退貨的總數(shù)量粗俱。退貨件數(shù)
reject_cons = dt_product_sales["退貨件數(shù)"].sum()

# 15、拒退額:拒收和退貨的總金額虚吟。
reject_money = dt_product_sales["商品退貨金額"].sum()

匯總統(tǒng)計寸认,與去年銷售情況比較

sales_state_dangqi = pd.DataFrame(
    {"GMV":[gmv,],"實際銷售額":[return_money,],"銷量":[all_sales,],"客單價":[custom_price,],
     "UV數(shù)":[uv_cons,],"UV轉(zhuǎn)化率":[uv_rate,],"折扣率":[discount_rate,],"貨值":[goods_value,],
     "售賣比":[sales_rate,],"收藏數(shù)":[coll_cons,],"加購數(shù)":[add_shop_cons,],"sku數(shù)":[sku_cons,],
     "spu數(shù)":[spu_cons,],"拒退量":[reject_cons,],"拒退額":[reject_money,],}, 
    ) #index=["今年雙11",]

# 去年的數(shù)據(jù)已經(jīng)統(tǒng)計好了,不需要計算
sales_state_tongqi = pd.DataFrame(
    {"GMV":[2261093,],"實際銷售額":[1464936.517,],"銷量":[7654,],"客單價":[609.34567,],
     "UV數(shù)":[904694,],"UV轉(zhuǎn)化率":[0.0053366,],"折扣率":[0.46,],"貨值":[12610930,],
     "售賣比":[0.1161,],"收藏數(shù)":[4263,],"加購數(shù)":[15838,],"sku數(shù)":[82,],
     "spu數(shù)":[67,],"拒退量":[2000,],"拒退額":[651188.57,],}, 
    ) #index=["去年雙11",]

#sales_state = pd.concat([sales_state_dangqi, sales_state_tangqi])
sales_state_dangqi_s = pd.DataFrame(sales_state_dangqi.stack()).reset_index().iloc[:,[1,2]]
sales_state_dangqi_s.columns = ["指標","今年雙11"]
#數(shù)據(jù)置成列串慰,新命名字段

sales_state_tongqi_s = pd.DataFrame(sales_state_tongqi.stack()).reset_index().iloc[:,[1,2]]
sales_state_tongqi_s.columns = ["指標","去年雙11"]
#數(shù)據(jù)置成列偏塞,新命名字段

sales_state = pd.merge(sales_state_dangqi_s, sales_state_tongqi_s,on="指標")
#通過 指標 關(guān)聯(lián)兩張表
sales_state["同比"] = (sales_state["今年雙11"] - sales_state["去年雙11"]) / sales_state["去年雙11"]
sales_state
15個指標年對比

二、從價格區(qū)間來優(yōu)化商品結(jié)構(gòu)

需要做的是邦鲫,深入探究不同區(qū)間的數(shù)據(jù)灸叼,以此來優(yōu)化后期的促銷結(jié)構(gòu)。
首先需要找到在本次促銷中此區(qū)間的銷售源數(shù)據(jù)庆捺,源數(shù)據(jù)要求顯示具體的款號古今、銷售額、銷量等信息滔以。
第二步捉腥,計算出每個款的轉(zhuǎn)化率、折扣率等數(shù)據(jù)你画。

# 劃分價格區(qū)間段
#設(shè)置切分區(qū)域
listBins = [0,200, 400, 100000]

#設(shè)置切分后對應(yīng)標簽
listLabels = ['1_200','200_400','400及以上']

#利用pd.cut進行數(shù)據(jù)離散化切分抵碟,注意分組標簽和分組數(shù)要一致
"""
pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)
x:需要切分的數(shù)據(jù)
bins:切分區(qū)域
right : 是否包含右端點默認True,包含
labels:對應(yīng)標簽坏匪,用標記來代替返回的bins拟逮,若不在該序列中,則返回NaN
retbins:是否返回間距bins
precision:精度
include_lowest:是否包含左端點剥槐,默認False唱歧,不包含
"""
dt_product_sales['價格分組'] = pd.cut(dt_product_sales['售賣價'], bins=listBins, labels=listLabels, include_lowest=True)
dt_product_sales.head()
價格分組

價格區(qū)間銷售情況統(tǒng)計

  • 價格區(qū)間
  • 貨值
  • 貨值占比
  • 銷售額
  • 售賣比
  • 銷售占比
  • 銷量
  • 客單價
  • UV
  • 收藏數(shù)
  • 加購數(shù)
  • 轉(zhuǎn)化率
dt_product_sales_info = dt_product_sales.groupby("價格分組").agg({
                                        "貨值":"sum",
                                        "商品銷售金額":"sum",
                                        "商品銷售數(shù)量":"sum",
                                        "UV數(shù)":"sum",
                                        "購買用戶數(shù)量":"sum",
                                        "收藏數(shù)":"sum",
                                        "加購物車數(shù)":"sum"
                                        }).reset_index()

# 貨值占比、銷售占比粒竖、客單價颅崩、轉(zhuǎn)化率
dt_product_sales_info["貨值占比"]=dt_product_sales_info["貨值"]/dt_product_sales_info["貨值"].sum()
dt_product_sales_info["銷售占比"]=dt_product_sales_info["商品銷售金額"]/dt_product_sales_info["商品銷售金額"].sum()
dt_product_sales_info["客單價"]=dt_product_sales_info["商品銷售金額"]/dt_product_sales_info["購買用戶數(shù)量"]
dt_product_sales_info["轉(zhuǎn)化率"]=dt_product_sales_info["購買用戶數(shù)量"]/dt_product_sales_info["UV數(shù)"]

dt_product_sales_info
價格分組

取出400及以上價格區(qū)間的數(shù)據(jù)內(nèi)容

product_400 = dt_product_sales[dt_product_sales["價格分組"]=='400及以上']

計算商品指標

  • 銷售額
  • 銷量
  • 件單價
  • 客戶數(shù)
  • UV
  • 轉(zhuǎn)換率=客戶數(shù) / UV
  • 庫存
  • 備貨值=吊牌價 * 庫存數(shù)
  • 售賣比=又稱售罄率,GMV / 備貨值
# 轉(zhuǎn)換率=客戶數(shù) / UV
product_400['轉(zhuǎn)換率'] = product_400["購買用戶數(shù)量"]/product_400["UV數(shù)"]
# 備貨值=吊牌價 * 庫存數(shù)
product_400["備貨值"] = product_400["吊牌價"]*product_400["商品銷售數(shù)量"]
product_400["售賣比"] = product_400["商品銷售金額"]/product_400["備貨值"]
product_400[["商品名","商品銷售金額","商品銷售數(shù)量","商品銷售單價","購買用戶數(shù)量","UV數(shù)",'轉(zhuǎn)換率',"庫存量","備貨值","售賣比"]]
400以上
優(yōu)化方案:

轉(zhuǎn)化率大于0.7%的商品蕊苗,暫時保留沿后,用于下次促銷活動;
轉(zhuǎn)化率小于0.7%的商品朽砰,但是售賣比大于36%的商品予以保留參加下次促銷活動尖滚,
轉(zhuǎn)化率小于0.7%的商品喉刘,并且售賣比小于36%的商品進行清倉處理。

# 挑選合格的商品:
# 1漆弄、保留商品:轉(zhuǎn)化率大于0.7%的商品予以保留
stay_stocks571 = product_400[product_400["轉(zhuǎn)換率"]>0.007]
# 售賣比=又稱售罄率睦裳,GMV / 備貨值
product_400["售賣比"] = product_400["商品銷售金額"]/product_400["備貨值"]

# 挑選合格的商品:
# 2、保留商品:找出轉(zhuǎn)化率小于0.7% 但是 售賣比大于36%的部分予以保留
stay_stocks573 = product_400[(product_400["售賣比"]>=0.36)&(product_400["轉(zhuǎn)換率"]<0.007)

# 3撼唾、清倉處理商品廉邑,找出轉(zhuǎn)化率小于0.7%并且售賣比小于36%的部分
stay_stocks574 = product_400[(product_400["售賣比"]<0.36)&(product_400["轉(zhuǎn)換率"]<0.007)]

三、從折扣區(qū)間來優(yōu)化商品結(jié)構(gòu)

折扣區(qū)間銷售情況統(tǒng)計

  • 價格區(qū)間
  • 貨值
  • 貨值占比
  • 銷售額
  • 售賣比
  • 銷售占比
  • 銷量
  • 客單價
  • UV
  • 收藏數(shù)
  • 加購數(shù)
  • 轉(zhuǎn)化率

1倒谷、劃分價格區(qū)間段
2蛛蒙、取出0.35-0.4價格區(qū)間(表現(xiàn)好的折扣區(qū)間)的數(shù)據(jù)內(nèi)容
3、計算商品指標

  • 銷售額
  • 銷量
  • 件單價
  • 客戶數(shù)
  • UV
  • 轉(zhuǎn)換率=客戶數(shù) / UV
  • 庫存
  • 貨值=吊牌價 * 庫存數(shù)
  • 售賣比=又稱售罄率渤愁,GMV / 備貨值
優(yōu)化方案:

折扣率大于37%的部分找出售賣比大于36.5%且轉(zhuǎn)化率大于0.7%的商品予以保留牵祟,其余進行清倉處理;

折扣率小于37%的部分找出售賣比大于36.5%且轉(zhuǎn)化率大于0.7%的部分予以保留抖格,其余進行清倉處理诺苹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市雹拄,隨后出現(xiàn)的幾起案子筝尾,更是在濱河造成了極大的恐慌,老刑警劉巖办桨,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異站辉,居然都是意外死亡呢撞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門饰剥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殊霞,“玉大人,你說我怎么就攤上這事汰蓉”炼祝” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵顾孽,是天一觀的道長祝钢。 經(jīng)常有香客問我,道長若厚,這世上最難降的妖魔是什么拦英? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮测秸,結(jié)果婚禮上疤估,老公的妹妹穿的比我還像新娘灾常。我一直安慰自己,他們只是感情好铃拇,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布钞瀑。 她就那樣靜靜地躺著,像睡著了一般慷荔。 火紅的嫁衣襯著肌膚如雪雕什。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天拧廊,我揣著相機與錄音监徘,去河邊找鬼。 笑死吧碾,一個胖子當著我的面吹牛凰盔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倦春,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼户敬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了睁本?” 一聲冷哼從身側(cè)響起尿庐,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呢堰,沒想到半個月后抄瑟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡枉疼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年皮假,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骂维。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡惹资,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出航闺,到底是詐尸還是另有隱情褪测,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布潦刃,位于F島的核電站侮措,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏福铅。R本人自食惡果不足惜萝毛,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滑黔。 院中可真熱鬧笆包,春花似錦环揽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至巴粪,卻和暖如春通今,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肛根。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工辫塌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人派哲。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓臼氨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芭届。 傳聞我的和親對象是個殘疾皇子储矩,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354