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
创建透视表
根据需要创建数据透视图,使用切片器将所有表链接在一起,实现动态变化控制。
本文标签: 餐饮日销售情况分析仪
版权声明:本文标题:餐饮日销售情况分析仪 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1688025052a170167.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论