数据分析处理(七)

一天什么时间下单最多

import pandas as pd  #导入pandas用于表格操作
import xlrd  #导入xlrd用于获取一个表格里多个sheet
from matplotlib import pyplot as plt#导入pyplot用于绘图
from datetime import datetime as dt

# 解决中文乱码问题
#sans-serif就是无衬线字体,是一种通用字体族。
#常见的无衬线字体有 Trebuchet MS, Tahoma, Verdana, Arial, Helvetica, 中文的幼圆、隶书等等。
#di
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
#sheet名字读取多张表
table1=pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail1') 
table2=pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail2')
table3=pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail3')
foodData=pd.concat([table1,table2,table3],axis=0,sort=False)
foodData['dishes_name']=foodData['dishes_name'].apply(lambda x:x.strip()) #去除名字空格。
foodData['place_order_time']=foodData['place_order_time'].apply(lambda x:pd.to_datetime(x).hour)  #对原数据字段重新赋值,利用lambda函数取值进行给予。
dataGroup=foodData[['order_id','place_order_time']]  #取出多个字段下的值,构成新的数组。dataFrame类型为分组做好准备
data_sort=dataGroup.groupby(by='place_order_time').count()  #以place_order_time进行分组,然后将其它数据以分好组进行计数。
data_sort.sort_values('order_id',ascending=False,inplace=True)  #取出要排序的数据值,降序
data_sort[:10].plot.bar()  #将排序好的数据取出十条绘图

在这里插入图片描述
数据分析:
1.X轴为日期某一天,Y轴为用户下菜单的数量。
2.整体分布图来看,处于最多的前四个用户下菜单数基于1400-1600数量之间,
3.局部图来看,18号这天最多,不到1600。
4.以最多峰顶数据来看,我们可以适当准备材料的数量。

星期几下单数最多(菜的个数)

foodData['place_order_time']=foodData['place_order_time'].apply(lambda x:pd.to_datetime(x).weekday_name)
dataGroup=foodData[['order_id','place_order_time']]
data_sort=dataGroup.groupby(by='place_order_time').count()
data_sort.sort_values('order_id',ascending=False,inplace=True)
data_sort['order_id'].plot.bar()  
代码思想与上面相同就不详细讲解了,只需要修改一下啊,day--weekday_name即可

在这里插入图片描述
数据分析:
1.X轴为日期星期某天,Y轴为用户下菜单的数量。
2.整体分布图来看,周六日下菜单的数量最多,处于3000作用。其他几天每天也相差不大,差不多是周六日的三分之一。。
3.针对此数据,我们可以得出周六日买饭菜的人最多,对应的我们就需要周末时间员工比平时要多辛苦些,也可以适当给员工多点加班费。

星期几下订单数最多(菜品的个数)

foodData=foodData.drop_duplicates(['order_id'])
foodData['place_order_time']=foodData['place_order_time'].apply(lambda x:pd.to_datetime(x).weekday_name)
dataGroup=foodData[['order_id','place_order_time']]
data_sort=dataGroup.groupby(by='place_order_time').count()
data_sort.sort_values('order_id',ascending=False,inplace=True)
data_sort['order_id'].plot.bar()  
代码与上面基本一样,唯一区别就是加了第一行去重,因为求的是菜品。就需要把多余的菜品去除掉,才可以计算。

在这里插入图片描述
数据分析:同上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值