一天什么时间下单最多
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()
代码与上面基本一样,唯一区别就是加了第一行去重,因为求的是菜品。就需要把多余的菜品去除掉,才可以计算。
数据分析:同上