数据分析处理(五)

ID点菜次数最多

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



# 解决中文乱码问题
#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) #axis=0合并行
foodData['total_amounts']=foodData['amounts']*foodData['counts']  #设置总价新字段并赋值。
dataGroup=foodData[['order_id','counts','amounts','total_amounts']] #取出多个字段构建新dataFrame类型为分组做准备
data_sort=dataGroup.groupby(by='order_id').sum()  #分组求和
data_sort.sort_values(by='counts',ascending=False,inplace=True) #降序
data_sort[:10].plot.bar() #展示

在这里插入图片描述
数据分析:
1.X为订单,Y为数量
2.总体分布图来看,用户点菜排名靠前的前十处于30左右。
3根据菜数最多的这些数量,可以看出一顿饭给不同用户我们准备最多的准备量。

订单花钱最多

foodData['total_amounts']=foodData['amounts']*foodData['counts']
dataGroup=foodData[['order_id','counts','amounts','total_amounts',]]
data_sort=dataGroup.groupby(by='order_id').sum()  
data_sort.sort_values(by='total_amounts',ascending=False,inplace=True)
data_sort['total_amounts'][:10].plot.bar()
#和上述思想一样

在这里插入图片描述
订单ID平均菜品最贵

第一种方法:
#这里因为ID,每个ID点的菜品不会一样,所以可以直接用mean函数来求平均值。
dataGroup=foodData[['order_id','amounts']]
data_sort=dataGroup.groupby(by='order_id').mean()
data_sort.sort_values('amounts',ascending=False,inplace=True)
data_sort['amounts'][:10].plot.bar()

第二种方法
counts_list=foodData['counts'].values.tolist()  #取出值转成List
for i in counts_list:
    num=str(i).replace(str(i),'1')  #遍历出的数据都替换成1个
    foodData['counts']=int(num) #然后循环重新赋值   dataGroup1=foodData[['order_id','counts','amounts']]  #取多个字段
data_sort=dataGroup1.groupby(by='order_id').sum()  求和
data_sort['mean_price']=data_sort['amounts']/data_sort['counts'] #菜品和除以新赋值后菜品数量
data_sort.sort_values(by='mean_price',ascending=False,inplace=True) 排序
data_sort['mean_price'][:10].plot.bar()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值