Python数据分析与可视化教案6.3 餐饮数据分析与可视化.docx
《Python数据分析与可视化教案6.3 餐饮数据分析与可视化.docx》由会员分享,可在线阅读,更多相关《Python数据分析与可视化教案6.3 餐饮数据分析与可视化.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6. 3餐饮数据分析与可视化餐饮行业是一个历史悠久的行业,在每一位经理的脑袋里,都无时不刻不在盘算着门 店的运营情况,但绝大局部只把情况存在存在脑海里,这也是为什么在餐饮行业里,一直 会听到这样的困惑:“一家店盈利,三家店打平,再开下去就亏了”。只凭一人的脑力,很 难计算统筹如此多门店的利润。一、数据源不同视角可能会得到不同答案,为了能全面了解和分析经营情况,可以对菜品、就餐 人数、销售金额等多种分析视角进行分析。本案例以某餐饮店2019年7月数据为例,对其 进行数据分析与可视化,数据文件为如图6-*所示。inf。id,name,number_consumers,dining_table_id
2、,dishes_count,payable,start_time,lock_time,order_status417 港宇怡 4150151%5,2016/8/1 11:05,2016/8/1 11:11,1301,赵颖31430,6,321,2016/8/1 11:15,2016/8/1 11:31,1413,徐毅凡,6/488,15,854,2016/8/1 12:42,2016/8/1 12:54,1415,张大鹏,4/502/0,466,2016/8/1 12:51,2016/8/1 13:08,1392,孙熙凯,10,1499,24,704,2016/8/1 12:58,2016/8
3、/1 13:07,1381,沈晓雯,4/487,7,239,2016/8/1 13:15,2016/8/1 13:23,1429,苗泽坤,4/501,15,699,2016/8/1 13:17,2016/8/1 13:34,1433,李达明,8/490,14,511,2016/8/1 13:38,2016/8/1 13:50,1图6-*数据源其中,各个字段的意义如下:info_id :表示订单编号。name :表示订餐客户姓名。number_consumers :表示就餐人数。dining_table_id :表示桌号。dishes_count :表示菜品数量。payable :表示消费金额。
4、start_time :表示下单时间。lock_time :表示结账时间。ordejstatus :表示订单状态,T表示订单结算成功,表示缺少结账时间,即 O表示没有结账成功。二、目标1 .数据中有些数据缺少结账时间,将这些数据去除。2 .为了分析就餐时间,从下单时间和结账时间中提取就餐时间。3 .统计双休日订单占比。4 .统计大桌(就餐人数在8到10人之间)订单占比。5 .计算平均销售金额、平均就餐人数、平均菜品数量、平均就餐时间等总体指标。6 .统计不同就餐人数的订单数量频数,并加以比拟,分析哪些就餐人数的订单较多。7 .分析不同星期和不同就餐人数对于销售金额的影响。8 .统计消费金额总和
5、排名最高前5个客户。9 .计算周一到周日的菜品数量,并分析最高出现在周几。10 .计算周一到周日的消费金额平均值。11 .根据不同就餐人数统计频数绘制柱形图,分析哪些就餐人数的出现的情况较多。12 .根据周一到周日的消费金额(“payable”)的平均值绘制折线图。三、步骤步骤1 :导入库,设置参数。(1)导入所需要的库 pandas、matplotlib.pyploto(2)利用pd.set_option解除显示宽度的显示,设置数据对齐。(3)利用reParams设置相关参数,将显示字体设置为黑体,字体大小设置为15。步骤1代码如下:import pandas as pdimport mat
6、plotlib.pyplot as pitpd.set_option(display.width,None)pd.seCoptionCdisplay.unicode.easLasiari-WidthTrue)plt.rcParams,font.sans-serif=Simhei,1 =15步骤2 :导入数据并查看。利用read_csv导入meal_info.csv (meal_info.csv存放在c:data路径中),将读入的数据 命名为data。查看data的行数与列数以及数据的前5行。步骤2代码如下:data = pd.read_csv(nc:datameal_info.csv,enco
7、ding=,gbk)print(数据的行数二 %dn 数据的列数=%dn%(data.shapeO,data.shape 1 )print(数据的前 5 行为:n”,data.head。)输出结果如图6-*所示。Run:6-1图6-*步骤2输出结果C:UsersliliangAnaconda3python.exeC:/Users/liliang/PycharProjects/sjfx/6-l.py5B(据的行政 依据的列数= 依据的前5行为 info_id9459namenumber.consumersdining_table_iddishes_countpayablestart.timelo
8、ck_ti(neorder_statusw0417苗宇怡4.015015165.02019/7/111:052019/7/111:1111301赵旗3.014306321.02019/7/111:152819/7/111:3112413博被凡6.0148815854.02019/7/112:422019/7/112:5413415张大朋4.0150210466.02019/7/112:512019/7/113:0814392孙熙泰10.0149924704.02019/7/112:582019/7/113:071Process finished withexit code 0步骤3 :数据去空
9、。(1)查看含有空值的列名及对应的空值个数。和ulock_time两列中均(2)删除没有消费金额或没有结账时间的数据,“payable”出现空值的行(即),结果在原数据中显示,并查看数据的行数。步骤3代码如下:null_result = data.isnull().sum()null_result 二 null_result.loc null_result0 null_result = null_result.sort_values(ascending=False)print(数据空值情况为:nnull_result)data 二 data.dropna(axis=0,subset=|paya
10、ble,lock-timehowny1) print(去空后的数据的行数=n,data.shapeO)输出结果如图6-*所不。Run:6-1AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-1.py数据空值情况为: payable18二=lock_time9number_consumers 7.dtype: int64去空后的数据的行数=918Process finished with exit code 0图6-*步骤3输出结果步骤4 :时间序列处理。(1)将下单时间(startjime)和结
11、账时间(lock_time)转换成时间格式。(2)生成新列 “meal_time,表示就餐时间,其公式为:meal_time=lock_time-start_time。(3)从开始时间(“staruime”)中抽取出“星期”,生成新变量“weekday”(“星 期,)。步骤4 (1)代码如下:datastart_time = pd.to_datetime(data,start_time,)datalock_time二 pd.to_datetime(data lock_time) 步骤4 (2)代码如下:dataldeaLtime1= datalock_time - datastait_time
12、步骤4 (3)代码如下:dataweekday* = datastart_time.dt.weekday_nameprint(数据的前 5 行为:n”,data.head。)输出结果如图6-*所不。Run:6-1C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/6-l.py 数据的前5行为:info_idname number_consumersdining_table_id dishes.countpayablestart.timelock.timeorder_statu$ deal.time we
13、ekday0417苗宇怡4.015015165.0 2019-07-0111:05:00 2019-07-0111:11:00100:06:00 Monday13013.814306321.0 2019-87-0111:15:00 2019-07-0111:31:00100:16:00 Monday二2413徐股凡6.0148815854.0 2019-07-0112:42:00 2019-07-0112:54:00100:12:00 Monday3415张大IK4.0150210466.0 2019-07-0112:51:00 2019-07-0113:08:00100:17:00 Mond
14、ay4392孙熙凯10.0Process finished with exit code 0步骤5 :数据筛选。149924704.0 2019-07-01 12:58:00 2019-07-01图6-*步骤4输出结果13:07:00100:09:00 Monday(1)筛选双休日的订单数据(Saturday和Sunday),计算筛选结果的行数,并计算其 比例。(2)筛选就餐人数在8到10人之间的订单数据,计算筛选结果的行数,并计算其比 例。步骤5 (1)代码如下:loc_resultl = data.loc(dataweekday,=Saturday,) | (data,weekday=,S
15、unday,)print。双休日的订单数据的比例为:.2f%”%(loc_resultl .shapeO/data.shapeO* 100)步骤5 (2)代码如下:loc_result2 = data.k)c(datanumber_consumers=8) & (data,number_consumers,= 10)print(就餐人数在8到10人之间的订单数据的比例为:.2f%”%(loc_result2.shape0/data.shape0J:1:100)输出结果如图6-*所不。Run:6-1AC:UsersliliangAnaconda3python.exe C:/Users/lilia
16、ng/PycharmProjects/sjfx/6-l.py双休日的订单数据的比例为:57.95%就卷人数在8到10人之间的订单数据的比例为:24.18%;示Process finished with exit code 0 ;图6-*步骤5输出结果步骤6 :描述性统计分析。(1)计算平均销售金额、平均就餐人数、平均菜品数量、平均就餐时间。(2)统计不同就餐人数的订单数量频数,并按降序排序。步骤6 (1)代码如下:pay_mean = round(datarpayable.mean(),2)con_mean = round(datanumber_consumers.mean(),2)dish_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python数据分析与可视化 教案 6.3 餐饮数据分析与可视化 Python 数据 分析 可视化 餐饮
限制150内