尋找零售密碼 | Python 實現周權重指數計算&可視化

在這裏插入圖片描述

引言
   周權重指數的概念先不說,先看下圖(單位:萬元)
在這裏插入圖片描述
  很明顯最右邊的方式能很快反映出一大個表格數據的比例情況,也更便於推廣。

  周權重指數是以某段銷售週期內的歷史日銷售額數據爲基礎,以周爲單位,進行權重分析處理的一種管理工具。周權重指數是一個相對的概念,每個企業都不盡相同,一般介於 7.0 ~ 14.0 之間。值越大表示該企業或者店鋪的日銷售額波動幅度越大。周權重指數是零售店鋪用來量化處理各種銷售狀況、銷售事件的管理工具,非常強大。

   周權重指數計算簡單,但其反映出的問題和其應用卻相當不簡單,是將業務融合進數據分析的基礎。老闆給你一份公司成都四家 ZARA 的2020年每日銷售數據,要求我們從每日銷售額的角度找出一些規律,出於不浪費雙方時間的角度,分析結果只允許畫在一張圖中。

  根據需求,周權重指數表便是一個很不錯的選擇。事不宜遲,快開始,本文含精美快捷可視化和數據處理。


公式

星期N的日權重指數

= (星期N的平均日銷售額 ÷ 平均周銷售額)× 企業周權重指數

  講解完畢,不算難,只是一個比例問題,關鍵就看企業是否已經有了確定的周權重指數(正常都會有),沒有的話我們通常把平均日銷售額最小的那天設置爲 1.0。本博文側重代碼/可視化實現和應用方面,所以請繼續往下


實戰效果

在這裏插入圖片描述
在這裏插入圖片描述

有點騷的可視化
在這裏插入圖片描述
靜態圖
在這裏插入圖片描述
它動起來了!
在這裏插入圖片描述


業務應用(重要)

  實戰中的數據是筆者自己構造的,現實生活中的周權重指數的分佈一般爲如下幾種,我們可以根據權重指數值的高低來安排店鋪的員工排班(後續博文會出如何排班的)、安排店鋪的陳列調整時間、部署送貨時間窗口等。

在這裏插入圖片描述
  比如右上角的分店陳列換裝時間定在星期三就不合適,星期三對它來說是銷售高峯,應該儘量不要安排可能影響銷售的事情。同理,在該店週三上班的店員應該是一週中最多的,而相反週一應該是最少的。另外,左上角分店安排週四送貨,右下角店鋪週一送貨最好。

  拓展一下:我們還可以猜猜這些圖大多會出現在哪些場景呢?

  • 如果門店在週末兩天的權重指數合計佔比較少的話,這個店鋪很可能是位於寫字樓區域內,因爲這個時段正好是寫字樓週末休息的時間。
  • 若週五到週日的權重指數合計佔到了70%,說明該分店的銷售過於集中。

  哪些行業可能具有這些以周爲單位循環的規律?

  • 傳統零售業:包括百貨商場,超市,便利店等
  • 各種專賣店
  • 以普通消費者爲對象的電子商務模式,包括B2C,C2C等
  • 售賣服務的也太,如火車站,汽車站,電影院,飯店,旅遊景點等

  以售賣服務爲主的業態,比如手機營運商的營業廳,可能不會產生銷售額,這時候我們就可以利用日客流量爲基礎數據進行計算。其他如呼叫中心可用電話接通數的數據,電子商務網站可用訪問量數據(後續ab測試案例函數)。


源碼呈現(重點)

裏面的一些定位語句如 data[‘Fri’] 也可以根據現實需求改造成 iloc 來定位,這樣也可能更準確

import pandas as pd
import numpy as np
# 提高輸出效率庫
from IPython.core.interactiveshell import InteractiveShell # 實現 notebook 的多行輸出
InteractiveShell.ast_node_interactivity = 'all' #默認爲'last'

# ---------------------- 周權重指數 -----------------------------
def weightCreated(data, standard=None):
    """ 傳入指定格式的數據,返回該分店的周權重表,可自定義標準 """
    daily_mean = {'Mon': np.mean(data['Mon']), 'Tue': np.mean(data['Tue'])
                  , 'Wed': np.mean(data['Wed']), 'Thu': np.mean(data['Thu'])
                  , 'Fri': np.mean(data['Fri']), 'Sau': np.mean(data['Sau'])
                  , 'Sun': np.mean(data['Sun'])}
    weight_index = ['平均日銷售額', '日銷售權重指數']
    weight_columns = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sau', 'Sun']
    weight = pd.DataFrame(data=daily_mean, 
                          index=weight_index, columns=weight_columns)
    weight['Total'] = np.sum(weight.loc['平均日銷售額', :])

    if standard:
        weight.loc['日銷售權重指數', :] = \
    weight.loc['平均日銷售額', :]*standard / weight.loc['平均日銷售額', 'Total']
        return weight
    
    # 若沒有標準將銷售中銷售額最低一天的數據的日權重指數設置爲 1.0,其餘參照
    base = weight.iloc[0, :].min()
    weight.loc['日銷售權重指數', :] = weight.loc['平均日銷售額', :] / base

    return weight


你可能還喜歡

精彩回顧

延伸閱讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章