每日菜的总价格
import numpy as np
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, 中文的幼圆、隶书等等。
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
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['total_price']=foodData['counts']*foodData['amounts'] #设置新的字段为总价。
foodData['place_order_time']=foodData['place_order_time'].apply(lambda x:pd.to_datetime(x).day) #取出天给日期字段下的值重新赋值
dataGroup=foodData[['place_order_time','total_price']] #取出多个字段构建构建新的dataFrame类型,为分组做好准备。
data_sort=dataGroup.groupby(by='place_order_time').sum()#以place_order_time分组后的数据进行求和处理。
data_sort.sort_values('total_price',ascending=False,inplace=True) #取值排序
data_sort[:10].plot.bar() #拿排序好的数据进行绘图
数据分析:
1.X为哪一天,Y为菜的总价格。
2.从前十来总体分布图来看排名靠前基于30000-40000之间,可以看出饭店一天的总收入分布趋势。最火爆的时间与数量。
3.根据最火爆时间并对其分析原因,做进一步改善,可以做的更好。
每日单盘均价
foodData['place_order_time']=foodData['place_order_time'].apply(lambda x:pd.to_datetime(x).day)
dataGroup=foodData[['place_order_time','amounts']]
data_sort=dataGroup.groupby(by='place_order_time').mean() #求平均的方法
data_sort.sort_values('amounts',ascending=False,inplace=True)
data_sort[:10].plot.bar()
换汤不换药,类似上面,不做详解
每天售出盘子的数量
foodData['place_order_time']=foodData['place_order_time'].apply(lambda x:pd.to_datetime(x).day)
dataGroup=foodData[['place_order_time','counts']]
print(type(dataGroup))
data_sort=dataGroup.groupby(by='place_order_time').sum()
data_sort.sort_values('counts',ascending=False,inplace=True) #计算counts的数量,因为i它有的为1,有的不为1,所以计算它总数量才合理。
data_sort[:10].plot.bar()