数据分析实战项目练习——餐厅订单数据
餐廳訂單數據分析
本文將從以下幾個方面對餐廳訂單數據進行可視化展示及剖析,旨在為營業者提供一定的決策和建議。
接下來我們查看合并后的數據信息,觀察數據的基本構成
由基本信息可知該數據集共由10037條數據構成,其中數據類型分別是int整型、float 浮點型、object 、datetime64[ns]四種類型。同時我們發現還存在non-null的缺失數據,對其應進行進一步的處理。
data.dropna(axis=1,inplace=True) # 刪除數據中的空值列,列的話是1,inplace= True 作用于源數據再次觀察數據信息,發現空值數據已被剔除。
接下來我們對菜品的平均價格進行計算,可用如下兩種方式實現。
統計買出菜品的平均價格
方法一:pandas 自帶函數
數據結果顯示:44.821360964431605
round(data['amounts'].mean(),2) #round 函數進行四舍五入操作,此處保留2位數據結果顯示:44.82
方法二:numpy 函數 (當數據量多的時候,建議使用此方法)
數據結果顯示:44.82
頻數統計 什么菜最受歡迎(對菜名進行頻數統計,然后取最大的前10名)
結果顯示如圖
由于我們此處只需計算前十名的數據,所以對多余數據進行剔除,僅保留前十名。
結果如下:
將最受歡迎的菜品TOP10進行可視化展示
從顯示結果來看,該餐廳的熱門菜品可分為兩類:
素菜類:涼拌菠菜。
肉菜類:麻辣小龍蝦、辣炒魷魚 、芝士燴波士頓龍蝦、香酥兩吃大蝦 、燜豬手 。
其中谷稻小莊經查詢為飲品類,白飯/大碗、五色糯米飯(七色)、白飯/小碗為主食類不屬于菜品范疇。
對此,我們可以提出建議如下:
①熱門菜品涼拌菜類可否增加品類,以吸引顧客再次消費。
②生鮮食品能否和其他傳統菜品進行搭配銷售,以提高傳統菜品的銷售量。
③主食類價格調整策略:如小碗米飯1元,大碗米飯1.5元。
訂單ID點菜種類TOP10
data_group = data['order_id'].value_counts()[:10] data_group.plot(kind='bar',fontsize=16) plt.title('訂單點菜的種類TOP10') plt.xlabel('訂單ID',fontsize=16) plt.ylabel('點菜種類',fontsize=16) for x,y in enumerate(data_group):print(x,y)plt.text(x,y+1,y,ha='center',fontsize=12) ##ha='center'字體居中顯示 plt.title('訂單點菜的種類TOP10') plt.xlabel('訂單ID') plt.ylabel('點菜種類') 上圖總結:八月份餐廳訂單點菜種類前10名,平均點菜25個菜品。該點菜種類的菜品,那個菜品利潤更高,可適當加大宣傳力度,做好營銷工作。以提高餐廳的利潤。
訂單ID點菜數量TOP10(分組order_id,counts求和,排序,前十)
上圖總結:八月份餐廳訂單點菜數量前10名,平均點菜30個菜品。餐廳經營者可否根據點餐數量設滿足不同需求的個性化菜單,對就餐者提供合理的訂餐建議,避免菜品浪費現象產生。
訂單id消費最多的金額TOP10(排序)
上圖顯示了前10名訂單ID消費金額的分布情況,根據分布情況,餐廳經營者可否將訂單ID者劃分為不同的等級,如VIP1、VIP2、VIP3、VIP4、VIP5。數字越大等級越高。針對VIP辦理年卡、季卡、月卡、周卡等促進顧客進行多次消費。
訂單ID平均消費最貴TOP10
Group_sum['average']=Group_sum['total_amounts']/Group_sum['counts'] sort_average = Group_sum.sort_values(by='average',ascending=False) sort_average['average'][:10].plot(kind='bar') plt.title('消費單價前10名') plt.xlabel('訂單ID') plt.ylabel('消費單價')觀察上圖可看出前十名消費單價集中在100元左右。餐廳經營者可根據消費水平對餐廳菜品價格進行合理定價。同時幫助經營者認清該餐廳的消費等級,通過對餐廳消費水平設置價格標簽,來精準的尋找該消費階層的人群。
** 一天當中什么時間段,點菜量比較集中(用hour來計算)**
data['hourcount']= 1 #創建新列,用于計數 data['time'] = pd.to_datetime(data['place_order_time']) #將時間轉換成日期類型存儲原始數據長這樣:
可以看到數據格式并不規范,我們需進行處理
pandas中的to_datetime()可獲取指定的時間和日期
將2016/8/1 11:05:36轉換成2016-8-1 11:05:36
data[‘hour’] = data[‘time’].map(lambda x:x.hour)
此處操作是將上一步中轉換了的日期類型數據進行拆分,分別將日期和時間賦予到不同的列。
可以看到原始表格新增了兩列,分別是time列和hour列。
pandas的groupby需要明確以什么維度聚合,以及聚合的方式是sum求和,抑或max求最值,還是count計數。上述代碼是用‘hour’來聚合,聚合方式是count計數。接下來繪制以小時來聚合的數據,代碼展示如下:
gp_by_hour.plot(kind='bar',fontsize=16) for x,y in enumerate(gp_by_hour):print(x,y)plt.text(x,y+1,y,ha='center',fontsize=12) ##ha='center'字體居中顯示 plt.xlabel('小時',fontsize=16) plt.ylabel('下單數量',fontsize=16) plt.title('下單數與小時的關系圖',fontsize=16)- List item
從上述圖表中我們可以得到如下結論:
①14:00和22:00 下單人數最少,可以減少該時間段工作的員工人數。
②17:00-21:00 時間段,進餐人數達到了一日中的高峰期,下單數量均大于1000。可以增加該時間段員工的數量,或者雇傭該小時段的臨時工,來幫助餐廳服務的開展。
③上午的下單量約為下午下單量的三分之二,人們更傾向于下午時間段在餐廳消費。
那一天訂餐數量最多(操作同上)
查看星期幾人數最多,訂餐數最多,映射數據到日期
時間維度的餐廳訂單分析,可以幫助經營者合理的設置員工排班時間和員工規模數量的敲定。做出更清楚、客觀的決策。
總結
以上是生活随笔為你收集整理的数据分析实战项目练习——餐厅订单数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AKKA:大数据下的并发编程模型
- 下一篇: Spring Boot 整合定时任务,可