当前位置:首页 > 全能助手 > 正文

python数据分析实战之超市零售分析

1、明确需求和目的对一家全球超市四年(2011-2014)的销售数据进行“人、货、场”分析,并给出提升销量的针对性建议。场:整体运营情况分析,包括销售额、销量、利润、客单价、市场布局等具体情况分析。货:商品结构、优势/爆款商品、劣势/待优化商品等情况分析。人:客户数量、新老客户、RFM模型、复购率、...

1、明确需求和目的对一家全球超市四年(2011-2014)的销售数据进行“人、货、场”分析,并给出提升销量的针对性建议。场:整体运营情况分析,包括销售额、销量、利润、客单价、市场布局等具体情况分析。货......


1、明确需求和目的

对一家全球超市四年(2011-2014)的销售数据进行“人、货、场”分析,并给出提升销量的针对性建议。

场:整体运营情况分析,包括销售额、销量、利润、客单价、市场布局等具体情况分析。

货:商品结构、优势/爆款商品、劣势/待优化商品等情况分析。

人:客户数量、新老客户、RFM模型、复购率、回购率等用户行为分析。

2、数据收集

数据集为“superstore_”,共有51290条数据,共24个特征。

3、数据预处理

3.1数据整合

3.1.1加载相关库和数据集

使用的库主要有:pandas、numpy、matplotlib、seaborn

使用的数据集:superstore_

加载零售数据集,使用'ISO-8859-1'编码方式df=_csv('superstore_',encoding='ISO-8859-1')()


3.1.2数据概览

首先看一下数据集大小(行列信息):

(51290,24)

看一下数据概况:

整体销售情况子数据集,包含下单日期、销售额、销量、利润、年份、月份信息sales_data=df[['Order_Date','Sales','Quantity','Profit','year','month']]sales_(5)------------------------------Order_

按照年份、月份对销售子数据集进行分组求和:

sales_year=sales_(['year','month']).sum()sales_year


对以上数据进行拆分,每年为一个表:

看一下2014年的数据


4.1.1销售额分析

构建销售表:

sales=([year_2011['Sales'],year_2012['Sales'],year_2013['Sales'],year_2014['Sales']],axis=1)颜色越深,销售额越高_gradient()


从上图可以看出,基本上每一年都是下半年销售额比上半年要高,而且随着年份的增大,销售额也有明显的增加,说明销售业绩增长较快,发展还是比较好的。

肉眼可见的是每一年的销售额都比前一年要好,来实际计算一下具体的增长率和每年的销售总额:

计算每年增长率rise_12=sales_sum[1]/sales_sum[0]-1rise_13=sales_sum[2]/sales_sum[1]-1rise_14=sales_sum[3]/sales_sum[2]-1rise_rate=[0,rise_12,rise_13,rise_14]面积堆叠图(stacked=False)


从上图可以大致看出,该超市的销售季节性明显,总体上半年是淡季,下半年是旺季。上半年中6月份销售额比较高,下半年中7月份的销售额偏低。

对于旺季的月份,运营推广等策略要继续维持,还可以加大投入,提高整体销售额。

对于淡季的月份,可以结合产品特点进行新产品拓展,举办一些促销活动等吸引客户。

4.1.2销量分析

构建销量表:

quantity=([year_2011['Quantity'],year_2012['Quantity'],year_2013['Quantity'],year_2014['Quantity']],axis=1)颜色越深,销量越高_gradient()


看一下销量增长率和每年的销量总和:

计算每年增长率rise_12=quantity_sum[1]/quantity_sum[0]-1rise_13=quantity_sum[2]/quantity_sum[1]-1rise_14=quantity_sum[3]/quantity_sum[2]-1rise_rate=[0,rise_12,rise_13,rise_14]计算年度总利润并图表展示profit_sum=()profit_(kind='bar',alpha=0.5)()profit_sum=({'profit_sum':profit_sum})profit_sum["year"]=[2011,2012,2013,2014]sales_sum=({'sales_sum':()})sales_sum["year"]=[2011,2012,2013,2014]profit_sum=(profit_sum,sales_sum)profit_sum["profit_rate"]=profit_sum["profit_sum"]/profit_sum["sales_sum"]profit_sum-----------------------------profit_sumyearsales_sumprofit_+060.1101781307415.2791020122.677439e+060.15.2301820133.405746e+060.1194853504165.9704620144.299866e+060.117252


从上面的结果可以看出,每年的利润和销售额一样,是在逐年增加的,说明企业经营还是比较妥善的,但是利润率总体平稳,稳定在11%-12%之间,总体利润率也还是不错的。

4.1.4客单价分析

客单价是指商场(超市)每一个顾客平均购买商品的金额,客单价也即是平均交易金额。从某种程度上反映了企业的消费群体的许多特点以及企业的销售类目的盈利状态是否健康。

总消费次数:同一天内,同一个人发生的所有消费算作一次消费。

客单价=总消费金额/总消费次数

计算总消费次数price_dr=_duplicates(subset=['Order_Date','Customer_ID'])根据商品种类和子种类,重新重合成一个新的种类df['Category_Sub_Category']=df[['Category','Sub_Category']].apply(lambdax:str(x[0])+'_'+str(x[1]),axis=1)按照销售额倒序排序df_Category_Sub__values(by=["Sales"],ascing=False,inplace=True)统计每个客户第一次和最后一次购买记录Customer_life=grouped__(['min','max'])所有用户最大的交易日期为标准,求每笔交易的时间间隔即为Rrfm['R']=(_()-_Date)/(1,'D')基于平均值做比较,超过均值为1,否则为0rfm[['R','F','M']].apply(lambdax:())defrfm_func(x):level=(lambdax:'1'ifx0else'0')level=++={"111":"重要价值客户","011":"重要保持客户","101":"重要挽留客户","001":"重要发展客户","110":"一般价值客户","010":"一般保持客户","100":"一般挽留客户","000":"一般发展客户"}result=d[level]returnresultrfm['label']=rfm[['R','F','M']].apply(lambdax:()).apply(rfm_func,axis=1)()


对重要价值客户和非重要价值客户进行可视化展示:

[=='重要价值客户','color']='g'[~(=='重要价值客户'),'color']='r'('F','R',c=)


通过RFM识别不同的客户群体,能够衡量客户价值和客户利润创收能力,可以指定个性化的沟通和营销服务,为更多的营销决策提供有力支持,为企业创造更大的利益。

4.3.4新用户、活跃用户、不活跃用户和回归用户分析

设置Customer_ID为索引,month为列名,统计每个月的购买次数:

pivoted_counts=_table(index='Customer_ID',columns='month',values='Order_Date',aggfunc='count').fillna(0)未注册客户("unreg")else:若本月消费了else:iflen(status)==0:回归用户("return")elifstatus[i-1]=="unreg":("new")else:("active")(status)purchase_stats=df_(active_status,axis=1)purchase_()


用NaN替代“unreg”,并统计每月各状态客户数量:

purchase_stats_ct=purchase_('unreg',).apply(lambdax:_counts(x))#用0填充NaNpurchase_stats_(0).()


从以上结果可以发现活跃客户、新客户和回归客户,每年呈一定的规律起伏,这可能和年终年末大促有关,需要更多数据进行佐证;同时可以发现新客数量每年均在减少,说明该商家新客获取率较低,如果能在新客户获取上取得突破,会给商家带来很大的增长空间。

4.3.5复购率和回购率分析

复购率计算指标:用户在该月购买过一次以上算复购。

purchase_r=pivoted_(lambdax:1==0else0)(purchase_()/purchase_()).plot(figsize=(10,4))


回购率计算指标:在该月购买过,且在下月也购买时计入回购。

defpurchase_back(data):status=[]foriinrange(47):ifdata[i]==1:ifdata[i+1]==1:(1)ifdata[i+1]==0:(0)else:()()returnstatuspurchase_b=df_(purchase_back,axis=1,result_type='expand')(purchase_()/purchase_()).plot(figsize=(10,4))


从上可以发现复购率基本大于0.525,且呈总体上升趋势,说明客户忠诚度高,回购率在年中年末呈峰形态,可能与商家折扣活动或节日有关。

5、总结

本文分别通过“场、货、人”三个不同的角度去分析一家全球超市的销售、商品、用户情况,并根据分析结果给出一些有利于拓展用户、提升销量的办法。当然,这份数据集包含信息很多,还可以进行其它一些方面的分析,来给出更好的建议。

最新文章