<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          數(shù)據(jù)分析 | 你知道超市哪個(gè)季節(jié)銷售額最高嗎?

          共 17253字,需瀏覽 35分鐘

           ·

          2020-06-11 23:23

          作者 |?戀戀風(fēng)塵hhh
          來源 |?數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美

          目錄

          5d5d4e808d7748a4a3cec4996378b58f.webp

          1.明確需求和目的

          • 對一家全球超市四年(2011-2014)的銷售數(shù)據(jù)進(jìn)行 人、貨、場分析,并給出提升銷量的針對性建議。
          • :整體運(yùn)營情況分析,包括銷售額、銷量、利潤、客單價(jià)、市場布局等具體情況分析。
          • :商品結(jié)構(gòu)、優(yōu)勢/爆款商品、劣勢/待優(yōu)化商品等情況分析。
          • :客戶數(shù)量、新老客戶、RFM模型、復(fù)購率、回購率等用戶行為分析。

          2.數(shù)據(jù)收集

          • 數(shù)據(jù)來源為kaggle平臺,這是一份全球大型超市四年的零售數(shù)據(jù)集,數(shù)據(jù)詳盡。
          • 數(shù)據(jù)集為superstore_dataset2011-2015.csv,共有51290條數(shù)據(jù),共24個(gè)特征。
          • 數(shù)據(jù)集鏈接:https://pan.baidu.com/s/1_znO0Nn-97k8jE42J0NBIw 提取碼:115h

          3.數(shù)據(jù)預(yù)處理

          3.1 數(shù)據(jù)整合
          3.1.1 加載相關(guān)庫和數(shù)據(jù)集
          • 使用的庫主要有:pandas、numpy、matplotlib、seaborn
          • 使用的數(shù)據(jù)集:superstore_dataset2011-2015.csv
          #?加載數(shù)據(jù)分析需要使用的庫
          import?numpy?as?np
          import?pandas?as?pd
          import?matplotlib.pyplot?as?plt
          import?seaborn?as?sns
          import?warnings

          plt.rcParams['font.sans-serif']?=?['SimHei']
          warnings.filterwarnings('ignore')


          #?加載零售數(shù)據(jù)集,使用'ISO-8859-1'編碼方式
          df?=?pd.read_csv('superstore_dataset2011-2015.csv',encoding='ISO-8859-1')?
          df.head()

          結(jié)果如下:8976ce821460b380b79eab399ff14321.webp

          3.1.2 數(shù)據(jù)概覽

          首先看一下數(shù)據(jù)集大小(行列信息)。

          df.shape
          #?---------------
          (51290,?24)

          再查看一下數(shù)據(jù)的分布概況。

          #?df.info()
          df.describe()

          結(jié)果如下:98abe3d9ad69ead4b184fdf612bb393f.webp

          3.2 數(shù)據(jù)清洗
          3.2.1 列名重命名

          觀察數(shù)據(jù)集可以發(fā)現(xiàn),列名存在著不符合Python標(biāo)準(zhǔn)的命名規(guī)范,因此對列名進(jìn)行一下重命名,采用下劃線命名法。

          df.rename(columns?=?lambda?x:?x.replace('?',?'_').replace('-',?'_'),?inplace=True)

          再次查看一下重命名后的列名。

          df.columns
          -----------------
          Index(['Row_ID',?'Order_ID',?'Order_Date',?'Ship_Date',?'Ship_Mode',
          ???????'Customer_ID',?'Customer_Name',?'Segment',?'City',?'State',?'Country',
          ???????'Postal_Code',?'Market',?'Region',?'Product_ID',?'Category',
          ???????'Sub_Category',?'Product_Name',?'Sales',?'Quantity',?'Discount',
          ???????'Profit',?'Shipping_Cost',?'Order_Priority'],
          ??????dtype='object')
          3.2.2 ?數(shù)據(jù)類型處理

          查看一下每一列的數(shù)據(jù)類型。

          df.dtypes
          -----------------
          Row_ID??????????????int64
          Order_ID???????????object
          Order_Date?????????object
          Ship_Date??????????object
          Ship_Mode??????????object
          Customer_ID????????object
          Customer_Name??????object
          Segment????????????object
          City???????????????object
          State??????????????object
          Country????????????object
          Postal_Code???????float64
          Market?????????????object
          Region?????????????object
          Product_ID?????????object
          Category???????????object
          Sub_Category???????object
          Product_Name???????object
          Sales?????????????float64
          Quantity????????????int64
          Discount??????????float64
          Profit????????????float64
          Shipping_Cost?????float64
          Order_Priority?????object
          dtype:?object

          可以看到:大部分列是object類型,銷量、銷售額、利潤等列是數(shù)值型,這些列都不需要進(jìn)行數(shù)據(jù)類型處理。下單日期應(yīng)為datetime類型,我們需要對其進(jìn)行處理。

          df["Order_Date"]?=?pd.to_datetime(df["Order_Date"])?
          df["Order_Date"].sample(5)
          ----------------------------------
          9319????2013-04-10
          30390???2012-03-19
          31025???2013-08-19
          32210???2014-03-20
          43430???2012-11-26
          Name:?Order_Date,?dtype:?datetime64[ns]

          為了便于分析每年和每月的銷售情況,新增加年份列月份列

          df['year']?=?df["Order_Date"].dt.year
          df['month']?=?df['Order_Date'].values.astype('datetime64[M]')
          3.2.3 缺失值處理

          我們再來查看一下各列的缺失值情況。

          df.isnull().sum(axis=0)
          ----------------------------
          Row_ID????????????????0
          Order_ID??????????????0
          Order_Date????????????0
          Ship_Date?????????????0
          Ship_Mode?????????????0
          Customer_ID???????????0
          Customer_Name?????????0
          Segment???????????????0
          City??????????????????0
          State?????????????????0
          Country???????????????0
          Postal_Code???????41296
          Market????????????????0
          Region????????????????0
          Product_ID????????????0
          Category??????????????0
          Sub_Category??????????0
          Product_Name??????????0
          Sales?????????????????0
          Quantity??????????????0
          Discount??????????????0
          Profit????????????????0
          Shipping_Cost?????????0
          Order_Priority????????0
          year??????????????????0
          month?????????????????0
          dtype:?int64

          通過觀察發(fā)現(xiàn),有一列缺失值比較多,此列表示郵編信息,由于該列對我們的分析沒有太多作用,可直接刪除

          df.drop(["Postal_Code"],axis=1,?inplace=True)
          3.2.4 異常值處理

          查看數(shù)據(jù)是否存在異常值。

          df.describe()

          結(jié)果如下:25d03d92407387d4cf56c532d8e84253.webp

          沒發(fā)現(xiàn)明顯的異常值,不需要進(jìn)行處理。

          3.2.5 重復(fù)值處理

          看一下每一行數(shù)據(jù)是否存在重復(fù)值。

          df.duplicated().sum()
          ---------------------
          0

          也沒有重復(fù)值,不需要進(jìn)行處理。

          4.數(shù)據(jù)分析

          4.1 整體銷售情況分析

          首先構(gòu)造整體銷售情況子數(shù)據(jù)集。

          #?整體銷售情況子數(shù)據(jù)集,包含下單日期、銷售額、銷量、利潤、年份、月份信息
          sales_data?=?df[['Order_Date','Sales','Quantity','Profit','year','month']]
          sales_data.sample(5)??
          ------------------------------
          ??Order_Date?Sales?Quantity?Profit?year?month
          45436?2014-11-27?38.040?2???12.1728?2014?2014-11-01
          12625?2013-11-11?20.368?1???7.3834?2013?2013-11-01
          24800?2011-11-15?40.320?7???14.0000?2011?2011-11-01
          35508?2014-01-22?27.936?4???9.4284?2014?2014-01-01
          39183?2013-06-24?179.880?6???61.0800?2013?2013-06-01

          按照年份、月份對銷售子數(shù)據(jù)集進(jìn)行分組求和。

          sales_year?=?sales_data.groupby(['year','month']).sum()
          sales_year

          結(jié)果如下:8088cc8d6d44afb9afd3afda83eb10d7.webp

          對以上數(shù)據(jù)進(jìn)行拆分,每年為一個(gè)表。

          #??slice(None),?是Python中的切片操作,這里用來選擇全部數(shù)據(jù)
          year_2011?=?sales_year.loc[(2011,slice(None)),:].reset_index()
          year_2012?=?sales_year.loc[(2012,slice(None)),:].reset_index()
          year_2013?=?sales_year.loc[(2013,slice(None)),:].reset_index()
          year_2014?=?sales_year.loc[(2014,slice(None)),:].reset_index()
          year_2014????#?看一下2014年的數(shù)據(jù)

          結(jié)果如下:ca3d50598c2646d5d662062a414ce4e9.webp

          4.1.1 銷售額分析

          構(gòu)建銷售表。

          sales=pd.concat([year_2011['Sales'],year_2012['Sales'],
          ?????????????????year_2013['Sales'],year_2014['Sales']],axis=1)

          #?對行名和列名進(jìn)行重命名
          sales.columns=['Sales-2011','Sales-2012','Sales-2013','Sales-2014']
          sales.index=['Jau','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']

          #?顏色越深,銷售額越高
          sales.style.background_gradient()

          結(jié)果如下:c70e160be37a5fb30e6a8d9a27adf0f9.webp

          從上圖可以看出,基本上每一年都是下半年銷售額比上半年要高,而且隨著年份的增大,銷售額也有明顯的增加,說明銷售業(yè)績增長較快,發(fā)展還是比較好的。

          肉眼可見的是每一年的銷售額都比前一年要好,來實(shí)際計(jì)算一下具體的增長率和每年的銷售總額。

          #?計(jì)算年度銷售額并圖表展示
          sales_sum=sales.sum()
          sales_sum.plot(kind='bar',alpha=0.5)
          plt.grid()

          #?計(jì)算每年增長率
          rise_12=sales_sum[1]/sales_sum[0]-1
          rise_13=sales_sum[2]/sales_sum[1]-1
          rise_14=sales_sum[3]/sales_sum[2]-1
          rise_rate=[0,rise_12,rise_13,rise_14]

          #?顯示增長率
          sales_sum=pd.DataFrame({'sales_sum':sales_sum})
          sales_sum['rise_rate']=rise_rate
          sales_sum
          ------------------------------------------
          ????sales_sum?rise_rate
          Sales-2011?2.259451e+06?0.000000
          Sales-2012?2.677439e+06?0.184995
          Sales-2013?3.405746e+06?0.272017
          Sales-2014?4.299866e+06?0.262533

          結(jié)果如下:94946bf6b12aa335bc5a6c3e97ad6045.webp

          從上面可以看出,后兩年的銷售額增長率達(dá)到26%,2014年銷售額將近是2011的兩倍,發(fā)展勢頭良好,經(jīng)營在逐步穩(wěn)定。結(jié)合年度銷售額及增長率,再結(jié)合公司整體戰(zhàn)略規(guī)劃,可以預(yù)測或制定下一年度總銷售額業(yè)績指標(biāo)。

          了解了超市整體銷售額后,再對每年每月的銷售額進(jìn)行分析,了解不同月份的銷售情況,找出是否有淡旺季之分,找出重點(diǎn)銷售月份,以便制定經(jīng)營策略與業(yè)績月度及季度指標(biāo)拆分。

          看一下銷售額的面積堆疊圖。

          #?面積堆疊圖
          sales.plot.area(stacked=False)

          結(jié)果如下:564329943fc313014b892269c4e955ce.webp

          從上圖可以大致看出,該超市的銷售季節(jié)性明顯,總體上半年是淡季,下半年是旺季。上半年中6月份銷售額比較高,下半年中7月份的銷售額偏低。

          • 對于旺季的月份,運(yùn)營推廣等策略要繼續(xù)維持,還可以加大投入,提高整體銷售額。
          • 對于淡季的月份,可以結(jié)合產(chǎn)品特點(diǎn)進(jìn)行新產(chǎn)品拓展,舉辦一些促銷活動等吸引客戶。
          4.1.2 銷量分析

          構(gòu)建銷量表。

          quantity?=?pd.concat([year_2011['Quantity'],year_2012['Quantity'],
          ?????????????????year_2013['Quantity'],year_2014['Quantity']],axis=1)

          #?對行名和列名進(jìn)行重命名
          quantity.columns=['Quantity-2011','Quantity-2012','Quantity-2013','Quantity-2014']
          quantity.index=['Jau','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']

          #?顏色越深,銷量越高
          quantity.style.background_gradient()

          結(jié)果如下:d10ed269004ef5516b8c7e0e0315f50f.webp

          看一下銷量增長率和每年的銷量總和。

          #?計(jì)算年度銷量并圖表展示
          quantity_sum=quantity.sum()
          quantity_sum.plot(kind='bar',alpha=0.5)
          plt.grid()

          #?計(jì)算每年增長率
          rise_12=quantity_sum[1]/quantity_sum[0]-1
          rise_13=quantity_sum[2]/quantity_sum[1]-1
          rise_14=quantity_sum[3]/quantity_sum[2]-1
          rise_rate=[0,rise_12,rise_13,rise_14]

          #?顯示增長率
          quantity_sum=pd.DataFrame({'quantity_sum':quantity_sum})
          quantity_sum['rise_rate']=rise_rate
          quantity_sum
          ------------------------------
          ???quantity_sum?rise_rate
          Quantity-2011?31443?0.000000
          Quantity-2012?38111?0.212066
          Quantity-2013?48136?0.263047
          Quantity-2014?60622?0.259390

          結(jié)果如下:ab2a29eaa7d185d59a7b497137797f2a.webp

          從上面可以看出,2011-2014年銷量變化趨勢與銷售額是一樣的,下半年銷量整體高于上半年,同時(shí)銷量同比上一年均在提高。

          4.1.3 利潤分析

          構(gòu)建利潤表。

          profit=pd.concat([year_2011['Profit'],year_2012['Profit'],
          ?????????????????year_2013['Profit'],year_2014['Profit']],axis=1)
          profit.columns=['Profit-2011','Profit-2012','Profit-2013','Profit-2014']
          profit.index=['Jau','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']

          profit.style.background_gradient()

          結(jié)果如下:e6d1df0f2c30bb873a7ac791b37a159b.webp

          計(jì)算每年總利潤和利潤率。

          #?計(jì)算年度總利潤并圖表展示
          profit_sum=profit.sum()
          profit_sum.plot(kind='bar',alpha=0.5)
          plt.grid()

          profit_sum=pd.DataFrame({'profit_sum':profit_sum})
          profit_sum["year"]?=??[2011,?2012,?2013,?2014]

          sales_sum=pd.DataFrame({'sales_sum':sales.sum()})
          sales_sum["year"]?=??[2011,?2012,?2013,?2014]

          profit_sum?=?pd.merge(profit_sum,?sales_sum)
          profit_sum["profit_rate"]?=?profit_sum["profit_sum"]?/?profit_sum["sales_sum"]
          profit_sum
          -----------------------------
          ??profit_sum?year?sales_sum?profit_rate
          0?248940.81154?2011?2.259451e+06?0.110178
          1?307415.27910?2012?2.677439e+06?0.114817
          2?406935.23018?2013?3.405746e+06?0.119485
          3?504165.97046?2014?4.299866e+06?0.117252

          結(jié)果如下:b761cf84af9d355d1586805882d9230e.webp

          從上面的結(jié)果可以看出,每年的利潤和銷售額一樣,是在逐年增加的,說明企業(yè)經(jīng)營還是比較妥善的,但是利潤率總體平穩(wěn),穩(wěn)定在11%-12%之間,總體利潤率也還是不錯(cuò)的。

          4.1.4 客單價(jià)分析

          客單價(jià):是指商場(超市)每一個(gè)顧客平均購買商品的金額,客單價(jià)也即是平均交易金額。從某種程度上反映了企業(yè)的消費(fèi)群體的許多特點(diǎn)以及企業(yè)的銷售類目的盈利狀態(tài)是否健康。

          總消費(fèi)次數(shù):同一天內(nèi),同一個(gè)人發(fā)生的所有消費(fèi)算作一次消費(fèi)。

          客單價(jià)=總消費(fèi)金額 / 總消費(fèi)次數(shù)

          #?2011-2014年客單價(jià)
          for?i?in?range(2011,2015):
          ????data=df[df['year']==i]
          ????price=data[['Order_Date','Customer_ID','Sales']]

          ????#?計(jì)算總消費(fèi)次數(shù)
          ????price_dr=price.drop_duplicates(
          ????????subset=['Order_Date',?'Customer_ID'])

          ????#?總消費(fèi)次數(shù):有多少行
          ????total_num=price_dr.shape[0]
          ????print('{}年總消費(fèi)次數(shù)='.format(i),total_num)

          ????unit_price?=?price['Sales'].sum()/total_num
          ????print('{}年客單價(jià)='.format(i),?unit_price,'\n')
          ---------------------------------------------------
          2011年總消費(fèi)次數(shù)=?4453
          2011年客單價(jià)=?507.3997070604087?

          2012年總消費(fèi)次數(shù)=?5392
          2012年客單價(jià)=?496.55762136498515?

          2013年總消費(fèi)次數(shù)=?6753
          2013年客單價(jià)=?504.3308824788983?

          2014年總消費(fèi)次數(shù)=?8696
          2014年客單價(jià)=?494.4647965225392?

          從上面結(jié)果來看,每年的消費(fèi)次數(shù)呈不斷上升趨勢,但是客單價(jià)總體浮動范圍不是很大 ,穩(wěn)定在500左右。

          4.1.5 市場布局分析

          因?yàn)檫@是一家全球超市,在不同地區(qū)都會有市場,所以看一下不同地區(qū)之間的銷售情況。

          Market_Year_Sales?=?df.groupby(['Market',?'year']).agg({'Sales':'sum'}).reset_index().rename(columns={'Sales':'Sales_amounts'})
          Market_Year_Sales.head()
          --------------------------------
          ?Market?year?Sales_amounts
          0?APAC?2011?6.392453e+05
          1?APAC?2012?7.627193e+05
          2?APAC?2013?9.745809e+05
          3?APAC?2014?1.209199e+06
          4?Africa?2011?1.271873e+05

          用圖表顯示各個(gè)地區(qū)每年的銷售情況。

          sns.barplot(x='Market',?y='Sales_amounts',?hue='year',?data?=?Market_Year_Sales)
          plt.title('2011-2014?market?sales')

          結(jié)果如下:17b0eaf3352c470560a6f4ea4e837659.webp

          再看一下四年來各個(gè)地區(qū)銷售額占總銷售額的百分比。

          Market_Sales?=?df.groupby(['Market']).agg({'Sales':'sum'})
          Market_Sales["percent"]?=?Market_Sales["Sales"]?/?df["Sales"].sum()
          Market_Sales.style.background_gradient()

          結(jié)果如下:e9bd1321c5a3034b34fe0aa4fbeabb47.webp

          從以上圖表可以看出,每個(gè)地區(qū)每年銷售額總體處于上升趨勢,其中APAC(亞太地區(qū))、EU(歐盟)、US(美國)、LATAM(拉丁美洲)的銷售額超過了總銷售額的85%,總體也與地區(qū)的經(jīng)濟(jì)發(fā)展相匹配。其中加拿大Canada的銷售額微乎其微,可以結(jié)合公司整體戰(zhàn)略布局進(jìn)行取舍。

          4.2 商品情況分析

          銷量前10名的商品。

          productId_count?=?df.groupby('Product_ID').count()['Customer_ID'].sort_values(ascending=False)
          print(productId_count.head(10))
          --------------------------------------
          Product_ID
          OFF-AR-10003651????35
          OFF-AR-10003829????31
          OFF-BI-10002799????30
          OFF-BI-10003708????30
          FUR-CH-10003354????28
          OFF-BI-10002570????27
          OFF-BI-10004140????25
          OFF-BI-10004195????24
          OFF-BI-10001808????24
          OFF-BI-10004632????24
          Name:?Customer_ID,?dtype:?int64

          銷售額前10名的商品。

          productId_amount?=?df.groupby('Product_ID').sum()['Sales'].sort_values(ascending=False)
          print(productId_amount.head(10))
          -----------------------------------
          Product_ID
          TEC-CO-10004722????61599.8240
          TEC-PH-10004664????30041.5482
          OFF-BI-10003527????27453.3840
          TEC-MA-10002412????22638.4800
          TEC-PH-10004823????22262.1000
          FUR-CH-10002024????21870.5760
          FUR-CH-10000027????21329.7300
          OFF-AP-10004512????21147.0840
          FUR-TA-10001889????20730.7557
          OFF-BI-10001359????19823.4790
          Name:?Sales,?dtype:?float64

          從上面可以看出,銷量最高的大部分是辦公用品,而銷售額最高的大部分是電子產(chǎn)品、家具這些單價(jià)較高的商品。

          利潤前10的商品。

          productId_Profit=?df.groupby('Product_ID').sum()['Profit'].sort_values(ascending=False)
          print(productId_Profit.head(10))
          ------------------------------------
          Product_ID
          TEC-CO-10004722????25199.9280
          OFF-AP-10004512????10345.5840
          TEC-PH-10004823?????8121.4800
          OFF-BI-10003527?????7753.0390
          TEC-CO-10001449?????6983.8836
          FUR-CH-10002250?????6123.2553
          TEC-PH-10004664?????5455.9482
          OFF-AP-10002330?????5452.4640
          TEC-PH-10000303?????5356.8060
          FUR-CH-10002203?????5003.1000
          Name:?Profit,?dtype:?float64

          利潤前10的商品有一半是電子產(chǎn)品,可以重點(diǎn)考慮提升這部分產(chǎn)品的銷量,來增加整體的利潤。

          具體商品種類的銷售情況。

          #?根據(jù)商品種類和子種類,重新重合成一個(gè)新的種類
          df['Category_Sub_Category']?=?df[['Category','Sub_Category']].apply(lambda?x:str(x[0])+'_'+str(x[1]),axis=1)
          #?按照新的種類進(jìn)行分組,統(tǒng)計(jì)銷售額和利潤
          df_Category_Sub_Category=df.groupby("Category_Sub_Category").agg({"Profit":"sum","Sales":"sum"}).reset_index()
          #?按照銷售額倒序排序
          df_Category_Sub_Category.sort_values(by=["Sales"],ascending=False,?inplace=True)
          #?每個(gè)種類商品的銷售額累計(jì)占比
          df_Category_Sub_Category['cum_percent']?=?df_Category_Sub_Category['Sales'].cumsum()/df_Category_Sub_Category['Sales'].sum()
          df_Category_Sub_Category

          結(jié)果如下:c268a7083d6bc480b0c1bd9a33282c2f.webp

          從圖表中可以很清晰的看到不同種類商品的銷售額貢獻(xiàn)對比,有將近一半的商品的總銷售占比達(dá)到84%,應(yīng)該是自家優(yōu)勢主營產(chǎn)品,后續(xù)經(jīng)營中應(yīng)繼續(xù)保持,可以結(jié)合整體戰(zhàn)略發(fā)展適當(dāng)加大投入,逐漸形成自己的品牌。

          同時(shí),也可以發(fā)現(xiàn),末尾占比16%的產(chǎn)品中大部分是辦公用品中的小物件。可以考慮與其他主營產(chǎn)品結(jié)合,連帶銷售來提升銷量,或者考慮對這些商品進(jìn)行優(yōu)化。

          但是值得關(guān)注的是,Tables(桌子)的利潤是負(fù),表明這個(gè)產(chǎn)品目前處于虧損狀態(tài),應(yīng)該是促銷讓利太多。通過檢查原數(shù)據(jù),發(fā)現(xiàn)Tabels大部分都在打折,打折的銷量高達(dá)76%。如果是在清庫存,這個(gè)效果還是不錯(cuò)的,但如果不是,說明這個(gè)產(chǎn)品在市場推廣上遇到了瓶頸,或者是遇到強(qiáng)競爭對手,需要結(jié)合實(shí)際業(yè)務(wù)進(jìn)行分析,適當(dāng)改善經(jīng)營策略。

          4.3 用戶情況分析
          4.3.1 不同類型的客戶占比
          df["Segment"].value_counts().plot(kind='pie',?autopct='%.2f%%',?shadow=True,?figsize=(14,?6))

          結(jié)果如下:45be89af8eb5b8ac2fecbc99345905ac.webp

          從上圖可以看出,這四年來,普通消費(fèi)者的客戶占比最多,達(dá)到51.7%。

          再看一下每一年不同類型的客戶數(shù)量情況。

          Segment_Year?=?df.groupby(["Segment",?'year']).agg({'Customer_ID':'count'}).reset_index()
          sns.barplot(x='Segment',?y='Customer_ID',?hue='year',?data?=?Segment_Year)
          plt.title('2011-2014?Segment?Customer')

          結(jié)果如下:17b0eaf3352c470560a6f4ea4e837659.webp

          從上面可以看出,每類客戶每年均在保持增長趨勢,客戶結(jié)構(gòu)還是非常不錯(cuò)的。

          看一下不同類型的客戶每年貢獻(xiàn)的銷售額。

          Segment_sales?=?df.groupby(["Segment",?'year']).agg({'Sales':'sum'}).reset_index()
          sns.barplot(x='Segment',?y='Sales',?hue='year',?data?=?Segment_sales)
          plt.title('2011-2014?Segment?Sales')

          結(jié)果如下:42f80a8896dc64ab34365c0a206466b1.webp

          各個(gè)類型的客戶每年貢獻(xiàn)的銷售額都在穩(wěn)步提升,普通消費(fèi)者貢獻(xiàn)的銷售額最多,這和客戶占比也有一定關(guān)系。

          4.3.2 客戶下單行為分析

          首先截取Customer_ID, Order_Date, Quantity, Sales, month為新的子集,并對Order_Date進(jìn)行排序,方便后續(xù)分析 :

          grouped_Customer?=?df[['Customer_ID','Order_Date',?
          ??????????'Quantity',?'Sales',?'month']].sort_values(['Order_Date']).groupby('Customer_ID')
          grouped_Customer.head()

          結(jié)果如下:1038360a2e34a005af5feca5c042dcf9.webp

          看一下用戶的第一次購買日期分布。

          grouped_Customer.min().Order_Date.value_counts().plot()

          結(jié)果如下:f016eacf633c40a6b10f49d9fa86e888.webp再來看一下用戶的最后一次購買日期分布。

          grouped_Customer.max().Order_Date.value_counts().plot()

          結(jié)果如下:dc399ae0b40381e26681c5e50fe06cc7.webp

          從上面可以看出, 在13年初以后新用戶增長的趨勢緩慢,商家可以通過廣告等推廣策略吸收更多的新用戶;而通過觀察最近一次購買日期,可以發(fā)現(xiàn)用戶基本沒有流失,也驗(yàn)證了每年銷售額的增長趨勢。

          總體來說新客戶數(shù)量是在逐年遞減的,說明該企業(yè)老客戶的維系不錯(cuò),但新客獲取率較低。如果能夠在新客戶獲取上能夠突破,會給企業(yè)帶來很大的增長空間。

          再來看看只購買過一次的客戶數(shù)量 。

          #?統(tǒng)計(jì)每個(gè)客戶第一次和最后一次購買記錄
          Customer_life?=?grouped_Customer.Order_Date.agg(['min','max'])
          #?查看只有一次購買記錄的顧客數(shù)量,第一次和最后一次是同一條記錄,則說明購買只有一次
          (Customer_life['min']?==?Customer_life['max']).value_counts()
          -----------------------------------------------------
          False????1580
          True???????10
          dtype:?int64

          從結(jié)果來看,只購買一次的用戶只有10個(gè),大部分用戶都會購買多次,說明回頭率很高,也驗(yàn)證了上面關(guān)于該企業(yè)老客戶的維系不錯(cuò)的結(jié)論。

          4.3.3 RFM模型分析

          RFM的含義:

          • R(Recency):客戶最近一次交易時(shí)間的間隔。R值越大,表示客戶交易發(fā)生的日期越久,反之則表示客戶交易發(fā)生的日期越近。
          • F(Frequency):客戶在最近一段時(shí)間內(nèi)交易的次數(shù)。F值越大,表示客戶交易越頻繁,反之則表示客戶交易不夠活躍。
          • M(Monetary):客戶在最近一段時(shí)間內(nèi)交易的金額。M值越大,表示客戶價(jià)值越高,反之則表示客戶價(jià)值越低。

          RFM分析就是根據(jù)客戶活躍程度和交易金額的貢獻(xiàn),進(jìn)行客戶價(jià)值細(xì)分的一種方法。

          首先構(gòu)建RFM表。

          rfm?=?df.pivot_table(index='Customer_ID',
          ????????????????????values?=?["Quantity","Sales","Order_Date"],
          ??????????????aggfunc={"Quantity":"sum","Sales":"sum","Order_Date":"max"})

          #?所有用戶最大的交易日期為標(biāo)準(zhǔn),求每筆交易的時(shí)間間隔即為R
          rfm['R']?=?(rfm.Order_Date.max()?-?rfm.Order_Date)/np.timedelta64(1,'D')
          #?每個(gè)客戶的總銷量即為F,總銷售額即為M
          rfm.rename(columns={'Quantity':'F','Sales':'M'},inplace?=?True)
          rfm.head()

          結(jié)果如下:53120a32129e47a54f53f6927cea4364.webp

          接著對客戶價(jià)值進(jìn)行標(biāo)注,將客戶分為8個(gè)等級。

          #?基于平均值做比較,超過均值為1,否則為0
          rfm[['R','F','M']].apply(lambda?x:x-x.mean())

          def?rfm_func(x):
          ????level?=x.apply(lambda?x:'1'if?x>0?else?'0')
          ????level?=level.R?+level.F?+level.M
          ????d?=?{
          ????????"111":"重要價(jià)值客戶",
          ????????"011":"重要保持客戶",
          ????????"101":"重要挽留客戶",
          ????????"001":"重要發(fā)展客戶",
          ????????"110":"一般價(jià)值客戶",
          ????????"010":"一般保持客戶",
          ????????"100":"一般挽留客戶",
          ????????"000":"一般發(fā)展客戶"
          ????}
          ????result?=?d[level]
          ????return?result

          rfm['label']=?rfm[['R','F','M']].apply(lambda?x:x-x.mean()).apply(rfm_func,axis?=1)
          rfm.head()

          結(jié)果如下:53120a32129e47a54f53f6927cea4364.webp

          對重要價(jià)值客戶和非重要價(jià)值客戶進(jìn)行可視化展示。

          rfm.loc[rfm.label=='重要價(jià)值客戶','color']='g'
          rfm.loc[~(rfm.label=='重要價(jià)值客戶'),'color']='r'
          rfm.plot.scatter('F','R',c=?rfm.color)

          結(jié)果如下:3cc4b9d969898f12cba3b7a17dee9e62.webp通過RFM識別不同的客戶群體,能夠衡量客戶價(jià)值和客戶利潤創(chuàng)收能力,可以指定個(gè)性化的溝通和營銷服務(wù),為更多的營銷決策提供有力支持,為企業(yè)創(chuàng)造更大的利益。

          4.3.4 ?新用戶、活躍用戶、不活躍用戶和回歸用戶分析

          設(shè)置Customer_ID為索引,month為列名,統(tǒng)計(jì)每個(gè)月的購買次數(shù)。

          pivoted_counts?=?df.pivot_table(index=?'Customer_ID',
          ???????????????????????????????columns=?'month',
          ???????????????????????????????values=?'Order_Date',
          ???????????????????????????????aggfunc=?'count').fillna(0)
          #?大于一次的全部設(shè)為1
          df_purchase?=?pivoted_counts.applymap(lambda?x:1?if?x>0?else?0)
          df_purchase.head()

          結(jié)果如下:098df074fe2e24a838e4196587dd610e.webp

          定義狀態(tài)函數(shù)并進(jìn)行狀態(tài)標(biāo)記。

          def?active_status(data):
          ????status?=?[]
          ????for?i?in?range(48):
          ????????if?data[i]?==?0:
          ????????????if?len(status)>0:
          ????????????????if?status[i-1]?==?"unreg":
          ?????????????????#?未注冊客戶
          ????????????????????status.append("unreg")
          ????????????????else:
          ?????????????????#?不活躍用戶
          ????????????????????status.append("unactive")
          ????????????else:
          ????????????????status.append("unreg")
          ????????????
          ????????#?若本月消費(fèi)了
          ????????else:
          ????????????if?len(status)?==?0:
          ?????????????#?新用戶
          ????????????????status.append("new")
          ????????????else:
          ????????????????if?status[i-1]?==?"unactive":
          ?????????????????#?回歸用戶
          ????????????????????status.append("return")
          ????????????????elif?status[i-1]?==?"unreg":
          ????????????????????status.append("new")
          ????????????????else:
          ????????????????????status.append("active")
          ????return?pd.Series(status)??

          purchase_stats?=?df_purchase.apply(active_status,axis?=1)
          purchase_stats.head()

          結(jié)果如下:caea7936baaeeb930a4a7abcb6173455.webp

          用NaN替代 "unreg",并統(tǒng)計(jì)每月各狀態(tài)客戶數(shù)量。

          purchase_stats_ct?=?purchase_stats.replace('unreg',np.NaN).apply(lambda?x:pd.value_counts(x))
          #?用0填充NaN
          purchase_stats_ct.fillna(0).T.plot.area()

          結(jié)果如下:711866a3135ae9d7a58fd79315236f46.webp

          從以上結(jié)果可以發(fā)現(xiàn)活躍客戶、新客戶和回歸客戶,每年呈一定的規(guī)律起伏,這可能和年終年末大促有關(guān),需要更多數(shù)據(jù)進(jìn)行佐證;同時(shí)可以發(fā)現(xiàn)新客數(shù)量每年均在減少,說明該商家新客獲取率較低,如果能在新客戶獲取上取得突破,會給商家?guī)砗艽蟮脑鲩L空間。

          4.3.5 復(fù)購率和回購率分析
          • 復(fù)購率計(jì)算指標(biāo):用戶在該月購買過一次以上算復(fù)購。
          purchase_r?=?pivoted_counts.applymap(lambda?x?:1?if?x>1?else?np.NaN?if?x==0?else?0)
          (purchase_r.sum()/purchase_r.count()).plot(figsize=(10,4))

          結(jié)果如下:37a945e76bfc12af4884203beda4c25f.webp

          • 回購率計(jì)算指標(biāo):在該月購買過,且在下月也購買時(shí)計(jì)入回購。
          def?purchase_back(data):
          ????status=[]
          ????for?i?in?range(47):
          ????????if?data[i]?==1:
          ????????????if?data[i+1]?==?1:
          ????????????????status.append(1)
          ????????????if?data[i+1]?==?0:
          ????????????????status.append(0)
          ????????else:
          ????????????status.append(np.NaN)
          ????status.append(np.NaN)
          ????return?status

          purchase_b?=?df_purchase.apply(purchase_back,axis?=1,result_type='expand')
          (purchase_b.sum()/purchase_b.count()).plot(figsize=(10,4))

          結(jié)果如下:40cee375030f7e9803b6e567443d936d.webp

          從上可以發(fā)現(xiàn)復(fù)購率基本大于0.525,且呈總體上升趨勢,說明客戶忠誠度高,回購率在年中年末呈峰形態(tài),可能與商家折扣活動或節(jié)日有關(guān)。

          5.總結(jié)

          以上就是數(shù)據(jù)分析的基本流程,通過 場、貨、人 三個(gè)不同的角度去分析一家全球超市的銷售、商品、用戶情況,并根據(jù)分析結(jié)果給出一些有利于拓展用戶、提升銷量的辦法。當(dāng)然,這份數(shù)據(jù)集包含信息很多,還可以進(jìn)行其它一些方面的分析,來給出更好的建議。

          5d5d4e808d7748a4a3cec4996378b58f.webp

          瀏覽 179
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲天堂美女 | 欧洲激情第一页 | 青青草黄视频无限在线观 | 菠萝视频一区二区 | 男人露大鸡巴无遮挡免费视频 |