赞
踩
1、分析背景
针对国外一家超市各个门店2019年1~3月运营数据进行经营分析
打开数据源,拥有字段17个,具体的分析方向以超市运营与数据源字段所包含的信息来展开(超市销售不包含客户id,分析依据以人次计量):
2、明确问题
超市的经营的好坏与否和商品的售卖情况密切相关,好的商品销售能够带来巨大的利润,销售的本质永远围绕着人、货、场三个核心,围绕这三个核心,我们对以下问题进行数据分析,分析公司的整体运营情况,提出合理化的建议,提升公司营收的目的。
1、企业整体的运营情况分析 ,了解运营情况。
2、商品结构分析,了解各种商品的销售情况,找出消费者偏爱的商品,那些商品带来更多的营收,那些商品能够带来更多的客户流量。
3、客户价值分析,了解客户结构,会员用户与普通用户的消费偏爱,女性消费者与男性消费者的消费习惯,如何使普通用户转化为会员用户。
分析思路:
1、企业整体运营状况,运用多维度拆解,从销售额,利润,净利润,不同区域门店销售情况,了解企业运营现状。
2、商品结构分析,运用对比法从销售额进行分析。
3、客户画像分析,从整体角度了解客户结构,从是否为会员、性别、付款方式,客户评分等判断。
3、理解数据
数据源共17个字段,是某企业超市3月销售数据
1、导入数据
#导入模块
import numpy as np
import pandas as pd
from datetime import datetime
from matplotlib import pyplot as plt
from pylab import mpl
#设置字体、路径、读入
mpl.rcParams['font.sans-serif'] = ['SimHei'] # SimHei是黑体的意思
path = 'D:/supermarket_sales - Sheet1.csv'
data = pd.read_csv(path,sep=',')
2、查看数据集的信息,包括描述统计信息,从整体上理解数据
print(data.head()) #数据源字段过多,利用iloc()采用四次索引完全展示数据
print(data.index)
print(data.shape)
print(data.columns)
数据源共17个字段,有1000行,利用data.dtypes查看数据类型
4、数据清洗
为了方便理解,将字段重命名,并去除无用字段(税费统一为售价5%)。
mapping = {}
for i,j in zip(['Invoice ID', 'Branch', 'City', 'Customer type', 'Gender',
'Product line', 'Unit price', 'Quantity', 'Tax 5%', 'Total', 'Date',
'Time', 'Payment', 'cogs', 'gross margin percentage', 'gross income',
'Rating'],['发票编号','超市分支','市区','客户类型','性别','商品分类组',
'单价','数量','税费','收入','购买日期','购买时间','付款方式','销货成本','毛利率',
'净收入','客户评分']):
mapping[i] = j
data.rename(columns=(mapping),inplace=True)
print(data.columns)
data = data.drop(['发票编号','超市分支','税费'],axis=1)
5、时间格式转换
#时间格式转换
print(data[['购买日期','购买时间']].head()) #查看时间格式
data.loc[:,'购买日期'] = pd.to_datetime(data.loc[:,'购买日期'],
format='%m/%d/%Y',errors='coerce')
data.loc[:,'购买时间'] = pd.to_datetime(data.loc[:,'购买时间'],
format='%H:%M',errors='coerce')
#判断转化是否成功,存在NAT,如果存在,采用分块更改
print(data.isnull().sum())
#排序,对时间进行升序排序
data_s = data.sort_values(by=['购买日期','购买时间'],ascending=True,na_position='first')
#截取月日字段
dt=data_s['购买日期'].astype(str)
dt=dt.apply(lambda x:datetime.strptime(x,'%Y-%m-%d'))
data_s['month']=dt.map(lambda x:x.month)
data_s['day']=dt.map(lambda x:x.day)
6、对于超市整体经营进行分析,我们选取相关计算字段,构建模型。
#选择子集
sales_data = data_s[['购买日期','购买时间','收入','净收入','month','day','数量']]
print(sales_data.describe()) #查看结构是否有问题
#构建模型
#计算三个月的销售额、利润额、销量、利润率
data_sale = data_s.groupby('month').sum()[['收入','净收入','数量']]
data_sale.plot(kind='bar',colormap='RdYlGn_r',alpha=0.5)
plt.show()
由上图可以看出二月份售量与售价均低于其他两月,可推测为假期作用,进一步进行解析。
7、计算同比增长率,每日销售额/利润,每日销售额/销量/利润额堆叠图
计算同比增长率
rate = data_sale.pct_change()
print(rate)
# 每日销售额/利润
data_sale_day=pd.pivot_table(sales_data,index='day',columns='month',values=['收入','净收入','数量'],aggfunc='sum')
print(data_sale_day)
#每日销售额/销量/利润额堆叠图
fig,axes = plt.subplots(1,3,figsize = (20,4))
data_sale_day['收入'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[0],title='销售额')
data_sale_day['数量'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[2],title='销量')
data_sale_day['净收入'].plot(colormap = 'Accent_r',ax=axes[1],title='利润额')
由每日销售额/利润、每日销售额/利润,每日销售额/销量/利润额堆叠图观察发现,2019年2月天数为28天,每天的售量无较大的波动,整体的销售情况弱于1月与3月。在2月7日,2月15日,2月27日销量与净收入突然增长,需对超市运营情况进一步解析,判断原因。
经营情况在在地理纬度上进行分析对比
#各市区门店销售情况
data_place = data_s[['收入','净收入','数量','市区','month']]
data_place1 = data_place.groupby(by='市区').sum()[['收入','净收入','数量']]
print(data_place1)
#各市区门各月销售情况
data_place = data_place.pivot_table(['收入','净收入','数量'],index=['市区','month'],aggfunc='sum')
print(data_place)
#不同地区门店销售/销量/利润额堆叠图
fig,axes = plt.subplots(3,3,figsize = (20,16))
data_place.loc['Mandalay','收入'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[0,0],title='Mandalay销售额')
data_place.loc['Mandalay','数量'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[1,0],title='Mandalay销量')
data_place.loc['Mandalay','净收入'].plot(colormap = 'Accent_r',ax=axes[2,0],title='Mandalay利润额')
data_place.loc['Naypyitaw','收入'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[0,1],title='Naypyitaw销售额')
data_place.loc['Naypyitaw','数量'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[1,1],title='Naypyitaw销量')
data_place.loc['Naypyitaw','净收入'].plot(colormap = 'Accent_r',ax=axes[2,1],title='Naypyitaw利润额')
data_place.loc['Yangon','收入'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[0,2],title='Yangon销售额')
data_place.loc['Yangon','数量'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[1,2],title='Yangon销量')
data_place.loc['Yangon','净收入'].plot(colormap = 'Accent_r',ax=axes[2,2],title='Yangon利润额')
由各市区门店销售情况、各市区门各月销售情况、不同地区门店销售/销量/利润额堆叠图可以得出三个市区门店销售无明显差异,整体上经营情况一致。
从商品角度出发,进行分析。
#不同种类商品收入、销量、利润额的变化
print(data.groupby('商品分类组').sum()[['收入','净收入','数量']])
data_sale_type = pd.pivot_table(data_s,index='month',columns='商品分类组',values=['收入','净收入','数量'],aggfunc='sum')
print(data_sale_type)
fig,axes = plt.subplots(1,3,figsize = (20,4))
data_sale_type['收入'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[0],title='收入')
data_sale_type['数量'].plot.area(colormap = 'Accent_r',stacked=False,ax=axes[2],title='销量')
data_sale_type['净收入'].plot(colormap = 'Accent_r',ax=axes[1],title='利润额')
plt.show()
由上表格和数据可以看出,在1~3月中,Food and beverages(食品与饮料),Fashion accessories(时尚用品)2月销量未受到总体下降影响,反而增高。
由此根据以上结论推断出,2月销量遇挫原因为假期效应。
企业可根据当地节日变化调整商品结构与营销策略。
用tableau进行用户分析
#导出清理好的数据集
data_s.to_csv('d:/market.delear.csv')
将用户评分分箱为四段,低于三分为很不满意,3-6为不满意,6~8为一般,8-9满意,以上为很满意。
IF ROUND([客户评分],1)❤️ then ‘很不满意’
ELSEIF ROUND([客户评分],1)<6 THEN ‘不满意’
ELSEIF ROUND([客户评分],1)<8 THEN ‘一般’
ELSEif ROUND([客户评分],1)<9 THEN ‘满意’
ELSE ‘非常满意’
END
由上仪表盘可得知,会员消费相较于普通客户,钟爱于Food and beverages(食物),在Electronic accessories(电子配件)消费较少,而普通用户却恰恰相反,会员更喜爱用信用卡进行支付,会员顾客对于超市评价相较于普通用户较消极。
由男女消费比例可以看到,女性更愿意在时尚上花费更多的开销,更愿意为此办理会员,与男性关注健康得消费习惯恰恰相反。
进一步使用spss进行探索
针对以上两种现象,可利用spss软件来进一步分析商品结构,与用户。但因样本量太小,客户评分评分检验不符合正态分布,单个得食物消费评分样本量过低,不能构成依据,需扩大容量,进一步进行分析。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。