Python实战项目——餐厅订单数据分析(一)

.markdown-body pre,.markdown-body pre>code.hljs{color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}

项目背景

餐厅经营的好坏需要用数据来说明,如果一个餐厅生意惨淡,那么应该先收集最近的数据,然后进行数据分析,再对应相应出现的问题进行解决和做出对应的商业调整。今天开始我们分析一来家餐厅的数据。
在这里插入图片描述

认识数据并预处理

拿到一个数据,第一步就是要进行数据预处理。我们经常遇见的数据存在噪声、冗余、关联性、不完整性等。

数据预处理的常见方法

(1)数据清理:将数据中缺失的值补充完整、消除噪声数据、识别或删除离群点并解决不一致性。
(2)数据集成:将多个数据源中的数据进行整合并统一存储
(3)数据变换:通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式
(4)数据归约:数据挖掘经常数据量很大,通过对数据集进行规约或简化,可以保持元数据的完整性,且数据归约后的结果与规约前的结果几乎相同。

这里我们简单介绍,不做深入解释。这不是我们今天的主要内容。

数据介绍

我们的数据是一个餐厅订单,其中包括detail_id,order_id,dishes_id等一系列餐厅数据。拥有3个sheet,数据项大约1w左右。还有各种各样的美食和酒水,看的我流口水(蒜蓉生蚝,蒙古烤羊腿,桂圆枸杞鸽子汤,38度剑南春 ,美妙绝伦之白莲花,姜葱炒花蟹)
在这里插入图片描述
在这里插入图片描述

导入数据

现在我们开始导入数据到notebook

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示
%matplotlib inline
# 加载数据
data1 = pd.read_excel('D:\\meal_order_detail.xlsx',sheet_name='meal_order_detail1')
data2 = pd.read_excel('D:\\meal_order_detail.xlsx',sheet_name='meal_order_detail2')
data3 = pd.read_excel('D:\\meal_order_detail.xlsx',sheet_name='meal_order_detail3')

数据预处理

# 数据预处理(合并数据,NA等处理),分析数据
data = pd.concat([data1,data2,data3],axis=0)  #按照行进行拼接数据
# data.head(5)
data.dropna(axis=1,inplace=True) #按照列删除na列,并且修改源数据
data.info()

在这里插入图片描述

简单统计

接下来我们进行数据的简单统计

统计卖出菜品的平均价格
round(data['amounts'].mean(),2)  #方法一:pandas自带函数
round(np.mean(data['amounts']),2)  #方法二:numpy函数处理

在这里插入图片描述
两种方法都可以,但我自己习惯第一种。

频数统计,什么菜最受欢迎 (对菜名进行频数统计,取最大前10名)
dishes_count = data['dishes_name'].value_counts()[:10]

结果如图所示,果然大家都爱吃白饭。。。
在这里插入图片描述

数据可视化matplotlib

既然大家都爱吃白饭,那我们就直接可视化上面那个结果好了。

dishes_count.plot(kind='line',color=['r'])
dishes_count.plot(kind='bar',fontsize=16)
for x,y in enumerate(dishes_count):
    print(x,y)
    plt.text(x,y+2,y,ha='center',fontsize=12)

如图,果然还是图更显而易见。
在这里插入图片描述

8月份餐厅订单点菜种类前10名,平均点菜25个菜品
data_group = data['order_id'].value_counts()[:]
data_group.plot(kind='bar',fontsize=16,color=['r','m','b','y','g'])
plt.title('订单点菜的种类Top10')
plt.xlabel('订单ID',fontsize=16)
plt.ylabel('点菜种类',fontsize=16)

在这里插入图片描述

8月份订单点菜数量前10名

这一步首先我们的进行简单操作,我们求订单ID点菜数量Top10,因此分组order_id,counts求和,排序,前十。

统计单道菜消费总额

data['total_amounts'] =data['counts']*data['amounts'] 

分组求和

dataGroup = data[['order_id','counts','amounts','total_amounts']].groupby(by='order_id')
Group_sum = dataGroup.sum()  #分组求和

sort_counts =Group_sum.sort_values(by='counts',ascending=False)
sort_counts['counts'][:10].plot(kind='bar',fontsize=16)
plt.xlabel('订单ID')
plt.ylabel('点菜数量')
plt.title('订单ID点菜数量Top10')

在这里插入图片描述

哪个订单ID吃的钱最多(排序)

也就是求消费金额。

sort_total_amounts =Group_sum.sort_values(by='total_amounts',ascending=False)
sort_total_amounts['total_amounts'][:10].plot(kind='bar')
plt.xlabel('订单ID')
plt.ylabel('消费金额')
plt.title('消费金额前10')

在这里插入图片描述

哪个订单ID平均消费最贵
Group_sum['average'] = Group_sum['total_amounts']/Group_sum['counts']
sort_average = Group_sum.sort_values(by='average',ascending=False)
sort_average['average'][:].plot(kind='bar')
plt.xlabel('订单ID')
plt.ylabel('消费单价')
plt.title('订单消费单价前10')

在这里插入图片描述

一天当中什么时间段,点菜量比较集中(hour)
data['hourcount'] = 1 # 新列,用作计数器
data['time'] = pd.to_datetime(data['place_order_time']) #将时间转换成日期类型存储
data['hour'] = data['time'].map(lambda x:x.hour)
gp_by_hour = data.groupby(by='hour').count()['hourcount']
gp_by_hour.plot(kind='bar')
plt.xlabel('小时')
plt.ylabel('点菜数量')
plt.title('点菜数与小时的关系图')

在这里插入图片描述

哪一天订餐数量最多
data['daycount'] = 1  
data['day'] = data['time'].map(lambda x:x.day)  #解析出天
gp_by_day  = data.groupby(by='day').count()['daycount']
gp_by_day.plot(kind='bar')
plt.xlabel('8月份日期')
plt.ylabel('点菜数量')
plt.title('点菜数量与日期的关系图')
#拓展:排序,取点菜量最大的前5天

在这里插入图片描述

查看星期几人数最多,订餐数最多,映射数据到星期
data['weekcount'] = 1
data['weekday'] = data['time'].map(lambda x:x.weekday())
gp_by_weekday = data.groupby(by='weekday').count()['weekcount']
gp_by_weekday.plot(kind='bar')
plt.xlabel('星期')
plt.ylabel('点菜数量')
plt.title('点菜数量与星期关系图')

在这里插入图片描述

总结

以上就是对数据的简单认识和处理,通过作图让我们能够更加清晰的认识数据,加深了解数据之间的联系和区别
不同维度进行数据分析:
针对订单order_id:
什么菜最受欢迎
点菜的种类
点菜的数量
消费金额最大
平均消费
针对时间日期进行分析:
点菜量比较集中的时间
哪一天订餐量最大
星期几就餐人数最多
技术点:
拼接数据:pd.concat([列1,…])
分组进行统计(分组求和)
排序,切片Top10
绘制柱状图走势和高度

---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于python数据分析项目——链家上海二手房数据分析(一),我可以提供一些帮助。首先,你可以使用Python中的Pandas库来收集和处理链家上海二手房的数据。Pandas可以帮助你从网站上获取相关信息,并针对指定的数据集执行许多不同的操作,以便更好地分析和理解这些数据。此外,还可以使用Matplotlib库来可视化数据,以便更清楚地了解链家上海二手房的特征。 ### 回答2: 链家上海二手房数据分析是一个使用Python进行数据探索和分析的项目。通过对链家网站上的二手房数据进行爬虫操作,我们可以获取到大量的关于上海二手房的信息。 在这个项目中,我们首先需要搭建一个爬虫,用于从链家网站上获取到二手房的数据。我们可以利用Python中的网络请求库和解析库,如requests和BeautifulSoup,来发送网络请求并解析返回的网页内容,从而获取到我们需要的数据。 获取到数据后,我们可以进行数据清洗和预处理。这一步骤主要是针对数据中存在的缺失值、异常值等问题进行处理,以确保数据的准确性和一致性。我们可以使用Python中的pandas库来进行数据的清洗和预处理操作。 接下来,我们可以对数据进行探索性分析。通过使用Python中的数据可视化库,如matplotlib和seaborn,我们可以对数据的特征进行可视化展示,以便更好地理解数据的分布和关系。我们可以绘制直方图、散点图、箱线图等来探索二手房价格、面积、位置等特征与其他变量之间的关系。 最后,我们可以进行一些统计分析,如计算二手房价格的平均值、中位数等统计指标,以及进行一些基本的回归分析,如线性回归等。这些分析可以帮助我们揭示出二手房市场的一些趋势和规律,为我们做出更好的决策提供依据。 总之,链家上海二手房数据分析项目是一个利用Python进行数据爬取、清洗、探索和分析的项目,通过对这些步骤的操作,我们可以更好地理解上海二手房市场的情况,并从中获取到有价值的信息。 ### 回答3: 链家是中国最大的房地产经纪公司之一,在其网站上能够找到各个城市的二手房信息。本项目选取了链家上海的二手房数据进行分析。 首先,我们需要从链家网站上爬取二手房的相关数据,包括房屋的价格、面积、区域、朝向、装修情况等等。通过分析这些数据,我们能够得到一些有趣的结论。 比如,我们可以通过计算平均价格和面积,找出上海不同区域二手房的价格及面积分布情况。通过这些分布情况,我们可以了解到哪些区域的二手房更贵,哪些区域的二手房面积更大,帮助购房者做出更明智的决策。 此外,我们还可以通过数据分析,得到不同房屋朝向和装修情况对价格的影响。通过比较不同朝向和装修情况下的价格差异,我们可以了解到市场对于这些因素的偏好,从而也为购房者提供一些参考。 另外,我们还可以通过分析不同时间段内的二手房成交量,找出上海二手房市场的活跃时段。这对于购房者来说也是非常有用的,因为他们可以根据市场活跃程度来选择合适的时间进行购买。 最后,我们还可以通过数据分析,找出上海二手房市场的热门区域和热门楼盘。这些信息对于投资者来说尤为重要,因为他们可以根据市场趋势来选择合适的投资区域和楼盘。 通过对链家上海二手房数据的分析,我们可以得到很多有用的信息,帮助购房者和投资者做出更明智的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值