admin 管理员组

文章数量: 1086061

餐饮日销售情况分析仪

Python+Excel制作动态分析仪

背景:餐饮行业属于快消品,因此对经营情况的把握应该越及时越好,因此制作每日销售情况分析。

表结构信息

表名字段名
订单详情日期,单号,店名,会员折扣,付费时间,桌号,来店人数
菜品明细单号,菜品明细,消费金额
店铺信息店名,二人台数,三人台数,四人及以上台数,总台数

分析指标

指标名称指标含义
折扣额占销售总额的10%-20%
折扣率10%-20%
KPL每家店的销售金额与所有店的总平均金额之比
销售总金额当日店铺实际收入
总台数店铺总桌数
翻台率(餐桌使用次数-总台位数)÷总台位数×100%
单均消费当日店铺所有缴费单的平均金额
座位数店铺实际拥有座位的数量
上座率(餐桌使用次数-总台位数)÷总台位数×100%
人均消费当日到店每个人的平均消费金额(销售总额/客流量)
开台率餐桌使用次数÷总台位数×100%

Python分析

  • 读入数据

订单详情:

column = ['billdate','billnumber','shopname','billdiscount','paytime','tablenumber','peoplecount']
bill = pd.read_csv('-bill.csv',header = None,names = column)
bill.head()


菜品明细:

col = ['billnumber','detail','pay']
order = pd.read_csv('-order.csv',header = None ,names = col)
order.head()


店铺信息:

col = ['shopname','twotable','threetable','fourtable','alltable']
shop = pd.read_csv('-shop.csv',header = None ,names = col)
shop

shop['allseat'] = shop['twotable']*2 + shop['threetable']*3 + shop['fourtable']*4
shop

  • 表格连接分析
    1.订单维度:
newbill = pd.merge(bill, order_pay, on=['billnumber'], how='left')
newbill['rebate'] = newbill['pay']*newbill['billdiscount']
newbill.head()


加入时间因子

newbill['time'] = newbill['billdate']+' '+newbill['paytime']
newbill['time'] = pd.to_datetime(newbill['time'])
newbill = newbill.set_index("time")
newbill.head()

#每小时的总收入
y_bill = newbill.groupby(lambda x: x.hour).sum()
y_bill['pay'].plot(kind='bar')

#每小时的总单数
y_bill = newbill.groupby(lambda x: x.hour).count()
y_bill['pay'].plot(kind='bar')

#每小时的平均收入
y_bill = newbill.groupby(lambda x: x.hour).mean()
y_bill['pay'].plot(kind='bar')

#每小时的人流量
y_bill['peoplecount'].plot()

newbill.to_csv('newbill.csv')

2.菜品维度:

orderdetail = pd.merge(order,bill, on=['billnumber'], how='left')
orderdetail.head()

#一个订单几个菜
detail_count = orderdetail.groupby('billnumber')[['detail']].count()
detail_count.tail()
#一个店铺卖出去多少道菜
orderdetail.groupby('shopname')['detail'].count()
#菜品的价格分布
orderdetail.groupby('detail')['pay'].describe()

orderdetail.to_csv('orderdetail.csv')

3.店铺维度:

shoptatal = pd.merge(newbill,shop, on=['shopname'], how='left')
shoptatal.head()

shoptatal_group = shoptatal.groupby('shopname')
#总单数
billcount = shoptatal_group.billnumber.count()
#总人数
peoplesum = shoptatal_group.peoplecount.sum()
#折扣总金额
rebatesum = shoptatal_group.rebate.sum()
#店汇总金额
paysum = shoptatal_group.pay.sum()
#单均消费
per_billpay = paysum/billcount
#人均消费
per_peoplepay = paysum/peoplesum
#总台数
alltable = shoptatal_group.alltable.mean()
#总座位数
allseat = shoptatal_group.allseat.mean()
#开台率 = 餐桌使用次数÷总台位数×100%
opening_rate = billcount / shoptatal_group.alltable.mean()
#翻台率 =(餐桌使用次数-总台位数)÷总台位数×100%
turnover_rate = (billcount - alltable)/alltable
#上座率 = 来店人数÷总餐位数×100%
attendance_rate = peoplesum/allseat
#折扣率
discount = rebatesum / paysum
#KPL
KPL = paysum / avgpay
#总平均销售额
avgpay = shoptatal.pay.sum()/5

数据合并

data = {'kpl':KPL,'总单数':billcount,'总人数':peoplesum,'店汇总金额':paysum,'折扣总金额':rebatesum,'折扣率':discount,'单均消费':per_billpay,'人均消费':per_peoplepay,'开台率':opening_rate,'翻台率':turnover_rate,'上座率':attendance_rate}
total = pd.DataFrame(data,index=None)
total 

total.to_csv('total.csv')

PowerBI
工具:excel2016加强版,Power Query,Power Pivot
第一步导入数据:

若出现乱码,需将编码改为utf-8

加载数据,加载会将表格数据传入到excel中,加载到则只创建链接,这里我选择的是加载到。

接下来选择只创建链接,并将数据添加到数据模型,选择加载。

出现下图说明加载成功

依次将newbill,orderdetail,total表加载到excel。
双击进入PQ界面

检查每个字段的数据类型

完成后点击关闭并上载

进入excel界面,点击Power pivot

重新检查数据类型,并创建表与表之间的链接


创建KPL

创建透视表



根据需要创建数据透视图,使用切片器将所有表链接在一起,实现动态变化控制。

本文标签: 餐饮日销售情况分析仪