数据分析:餐厅订单数据分析
创始人
2024-05-23 15:15:07
0

数据分析:餐厅订单数据分析

当你的知识储备不够的时候,就要学会模仿别人的有点,随之转化为自己的知识。
当知识储备达到一定的阶段后,就可以在自己的领域里开疆扩土。
作者:AOAIYI
觉得文章不错或能帮到你的学习,记得点赞收藏评论哦


文章目录

  • 数据分析:餐厅订单数据分析
  • 一、前言
  • 二、数据预处理
  • 三、统计卖出菜品的平均价格
  • 四、对菜名进行频数统计(取最大前10名)并可视化
  • 五、订单ID点菜数量Top10
  • 六、统计消费最多的订单ID
  • 七、统计中午11点-晚上22点订单量
  • 八、统计一个星期中哪一天订单量最多
  • 总结


一、前言

目前我国餐饮行业已进入成熟阶段,增长势头不减,整体水平逐年提升,综合水平和发展质量不断提高,发展步伐加快。同时经历多年的发展与市场竞争,中国餐饮业发展已经进入了投资主体多元化、经营业态多样化、经营模式连锁化和行业发展产业化的新阶段,中国餐饮业的发展势头持续强劲,发展前景更加看好。

改革开放以来,随着中国经济的快速发展,生产能力和人民收入水平的不断提高,中国从七八十年代的“吃饭难”到九十年代的“吃饱”,再到二十一世纪以来的不断追求吃特色、吃健康、吃营养、吃便捷、吃文化、吃休闲。中国餐饮行业伴随经济发展,不仅成为人民生活水平和消费能力提升的见证,也逐步成为扩内需、促销费、稳增长、惠民生的支柱产业。

同时随着互联网突飞猛进的发展和普及,“互联网+”已成为一个时代趋势,餐饮行业成为线上互联网连接线下的最大入口。整个餐饮行业包括餐饮食材供应领域,互联网餐饮行业一站式交易平台的进入改变了传统的餐饮行业的发展,将传统的线下交易搬到了线上,加快了行业的流通和服务的普及。

餐饮行业作为传统行业,为了提高订单量和降低成本。对某餐厅现有的数据进行可视化分析。

二、数据预处理

1.前期导入需要准备的库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2.加载数据

data1 = pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail1')
data2 = pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail2')
data3 = pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail3')

3.按照行对数据合并

data = pd.concat([data1,data2,data3],axis=0)  
data.head(5)

在这里插入图片描述
4.按照列删除na列,并且修改源数据

data.dropna(axis=1,inplace=True)
data.info()

在这里插入图片描述

三、统计卖出菜品的平均价格

round(data['amounts'].mean(),3)  #方法一:pandas自带函数
round(np.mean(data['amounts']),3)  #方法二:numpy函数处理

结果:

44.821

四、对菜名进行频数统计(取最大前10名)并可视化

1.首先,统计出前十的菜名

dishes_count = data['dishes_name'].value_counts()[:10]
print(dishes_count)

在这里插入图片描述

2.将前十的菜名进行可视化

dishes_count.plot(kind='bar',fontsize=16)
for x,y in enumerate(dishes_count):plt.text(x,y+2,y,ha='center',fontsize=12)#显示出数量并在中心点

在这里插入图片描述

五、订单ID点菜数量Top10

1.对订单ID进行分组求和

data['total_amounts'] =data['counts']*data['amounts']  #统计单道菜消费总额
dataGroup = data[['order_id','counts','amounts','total_amounts']].groupby(by='order_id')
Group_sum = dataGroup.sum()  #分组求和
sort_counts = Group_sum.sort_values(by='counts',ascending=False)
sort_counts

在这里插入图片描述

2.对订单ID前十点菜数量进行可视化

sort_counts['counts'][:10].plot(kind='bar',fontsize=16)
plt.xlabel('订单ID')
plt.ylabel('点菜数量')
plt.title('订单ID点菜数量Top10')

在这里插入图片描述

六、统计消费最多的订单ID

1.将订单ID进行排序

sort_total_amounts = Group_sum.sort_values(by='total_amounts',ascending=False)
sort_total_amounts 

在这里插入图片描述

2.可视化

sort_total_amounts['total_amounts'][:10].plot(kind='bar')
plt.xlabel('订单ID')
plt.ylabel('消费金额')
plt.title('消费金额前10')

在这里插入图片描述

七、统计中午11点-晚上22点订单量

data['hourcount'] = 1 # 新列,用作计数器
data['time'] = pd.to_datetime(data['place_order_time']) #将时间转换成日期类型存储
data['hour'] = data['time'].map(lambda x:x.hour)
gp_by_hour = data.groupby(by='hour').count()['hourcount']
gp_by_hour

在这里插入图片描述

2.可视化

gp_by_hour.plot(kind='bar')
plt.xlabel('小时')
plt.ylabel('点菜数量')
plt.title('点菜数与小时的关系图')

在这里插入图片描述

八、统计一个星期中哪一天订单量最多

data['weekcount'] = 1
data['weekday'] = data['time'].map(lambda x:x.weekday())
gp_by_weekday = data.groupby(by='weekday').count()['weekcount']
gp_by_weekday

在这里插入图片描述

gp_by_weekday.plot(kind='bar')
plt.xlabel('星期')
plt.ylabel('点菜数量')
plt.title('点菜数量与星期关系图')

在这里插入图片描述


总结

为什么纸上谈兵不行?纸上谈兵太理想化了,把自己没有发现的问题隐藏了,当成了不存在的问题。只有实际多多亲自动手,才会发现有太多的问题是书上没提到的,也是自己没想到的。才会发现,一个小小的问题也要搞上半天。当然,如果你基础巩固的话,那这些问题应该都是可以被你解决的。熟练后,就不认为这些问题了。
不要看代码不难就感觉会了,只有自己的手打一遍,没有错误,编程的严谨些决定了,你错一个字母都不行。所以大家一定要注意,编程是自己打出来的,不是复制,粘贴你就会了,以后碰到了,还是不会。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...