Python数据分析-餐馆菜品关联分析

一、研究背景

随着餐饮行业的快速发展,如何提高服务质量、优化运营模式以及增加客户满意度成为每个餐饮企业关注的重点。在这种背景下,数据分析技术被广泛应用于餐饮管理中。通过分析餐饮订单数据,可以发现客户的消费行为和偏好,从而为企业制定营销策略、改进服务提供有力支持。本研究通过对某餐饮企业的订单数据进行分析,旨在揭示客户消费行为的规律和商品之间的关联关系,为企业提升运营效率和客户满意度提供数据支持。

二、研究意义

  • 理论意义:通过数据分析挖掘餐饮订单数据中的潜在规律和模式,可以为相关研究提供新的视角和方法,丰富餐饮行业的数据分析理论。

  • 实际意义:本研究的结果可以帮助餐饮企业更好地理解客户需求,优化菜单设计和促销策略,提高客户满意度和忠诚度。此外,通过关联规则分析发现商品间的购买关系,可以帮助企业在制定套餐和组合优惠时更加科学和合理,提升销售额。

  • 管理意义:通过对订单数据的分析,企业管理者可以发现运营中的问题和改进空间,例如高频消费的时间段、热门菜品、常见搭配等,为日常运营管理提供参考依据,进而提高整体运营效率。

三、实证分析

完整代码和数据集

首先读取数据

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 加载数据集
order_info_path = 'data.csv'
order_detail_path = 'data1.csv'

meal_order_info = pd.read_csv(order_info_path)
meal_order_detail = pd.read_csv(order_detail_path)

 

检查缺失值和重复值

 

发现还是存在缺失值的情况

随后继续进行数据处理

duplicate_info = meal_order_info.duplicated().sum()
duplicate_info

duplicate_detail = meal_order_detail.duplicated().sum()
duplicate_detail

删除缺失值较多的字段

cleaned_meal_order_info = meal_order_info.drop(columns=['mode', 'check_closed', 'cashier_id', 'pc_id', 'order_number', 'print_doc_bill_num', 'lock_table_info'])
cleaned_meal_order_detail = meal_order_detail.drop(columns=['logicprn_name', 'parent_class_name', 'cost', 'discount_amt', 'discount_reason', 'kick_back', 'add_info', 'bar_code'])

 随后进行描述性统计分析

info_desc = cleaned_meal_order_info.describe()
info_desc

给出的数据统计描述了一个餐饮订单数据集的各个变量。info_idemp_id 分别表示信息和员工的唯一标识符,范围分别是137到1325和982到1610,平均值为771.64和1205.67,标准差分别为324.42和168.28。number_consumers 表示用餐人数,范围从1到10,平均值为5.21,标准差为2.36。dining_table_iddining_table_name 分别表示餐桌的唯一标识符和名称,范围分别是459到1519和1001到1040。expenditure 表示支出,范围从48到1314,平均值为492.29,标准差为268.27。dishes_count 表示菜品数量,范围从1到36,平均值为11.81,标准差为5.65。accounts_payable 也是支出,数值与 expenditure 一致。org_id 表示组织的唯一标识符,范围从304到330,数据较为集中。order_status 表示订单状态,值为0或1,平均值为0.99,表示大多数订单已完成。phone 为电话号码,显示一致的值1.868888e+10,可能是数据脱敏处理。总的来说,这些数据描述了一个餐饮环境中的订单情况,包括用餐人数、支出、菜品数量等关键信息。

 

 接下来进行可视化 -

消费金额分布

plt.figure(figsize=(10, 6))
sns.histplot(cleaned_meal_order_info['expenditure'], kde=True, bins=30, color='skyblue')
plt.title('消费金额分布', fontsize=15)
plt.xlabel('消费金额', fontsize=12)
plt.ylabel('频率', fontsize=12)
plt.grid(True)
plt.show()

可视化 - 用餐人数分布 

plt.figure(figsize=(10, 6),dpi=200)
sns.countplot(cleaned_meal_order_info['number_consumers'], palette='viridis')
plt.title('用餐人数分布', fontsize=15)
plt.xlabel('用餐人数', fontsize=12)
plt.ylabel('频率', fontsize=12)
plt.grid(True)
plt.show()

 # 可视化 - 菜品数量分布

可视化 - 账户应付款分布

plt.figure(figsize=(10, 6),dpi=200)
sns.histplot(cleaned_meal_order_detail['amounts'], kde=True, bins=30, color='orange')
plt.title('金额分布', fontsize=15)
plt.xlabel('金额', fontsize=12)
plt.ylabel('频率', fontsize=12)
plt.grid(True)
plt.show()

 可视化 - 金额分布

# 使用Apriori算法挖掘频繁项集
frequent_itemsets = apriori(df_te, min_support=0.02, use_colnames=True)

# 生成关联规则
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)

# 输出关联规则
print(rules.head())

# 可视化关联规则
def plot_association_rules(rules):
    G = nx.DiGraph()
    
    for _, rule in rules.iterrows():
        antecedent = ', '.join(rule['antecedents'])
        consequent = ', '.join(rule['consequents'])
        G.add_edge(antecedent, consequent, weight=rule['lift'], label=f"支持度: {rule['support']:.2f}, 置信度: {rule['confidence']:.2f}, 提升度: {rule['lift']:.2f}")

    pos = nx.spring_layout(G, k=1)
    plt.figure(figsize=(15, 10))
    nx.draw(G, pos, with_labels=True, node_color='lightblue', node_size=3000, font_size=10, font_weight='bold', edge_color='gray')
    edge_labels = nx.get_edge_attributes(G, 'label')
    nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=8)
    plt.title('关联规则网络', fontsize=15)
    plt.show()

plot_association_rules(rules)

数据描述了几种商品间的关联规则。例如,规则“白饭/小碗 → 北冰洋汽水”的支持度为0.022293,表示在所有交易中有2.2293%的交易同时包含这两种商品。该规则的置信度为0.112903,表示在购买白饭/小碗的交易中,有11.2903%的交易也购买了北冰洋汽水,提升度为1.661794,表示购买白饭/小碗后购买北冰洋汽水的可能性是随机情况下的1.661794倍。另一个规则“北冰洋汽水 → 白饭/小碗”也有相同的支持度,但置信度更高为0.328125,提升度同样为1.661794,表明购买北冰洋汽水后购买白饭/小碗的可能性更大。类似地,规则“五色糯米饭(七色) → 冰糖红豆薏米粥”有支持度0.025478,置信度0.128342,提升度1.328554,表明购买五色糯米饭后购买冰糖红豆薏米粥的可能性高于随机情况。规则“冰糖红豆薏米粥 → 五色糯米饭(七色)”有相同的支持度和提升度,但置信度为0.263736,表明逆向关联也存在。最后,规则“五色糯米饭(七色) → 凉拌菠菜”的支持度为0.058386,置信度0.294118,提升度1.029958,表明这对商品的关联性较弱。总的来说,这些关联规则揭示了几种商品间的购买关联,帮助理解客户的购买行为。

四、结论

通过对餐饮订单数据的实证分析,我们得出以下结论:

  1. 客户消费行为规律:通过描述性统计和可视化分析,可以发现客户的消费行为具有一定的规律性。例如,大部分订单的消费金额集中在中低范围,用餐人数多为小规模,这为企业制定营销策略和改进服务提供了数据支持。

  2. 商品购买关联关系:通过关联规则分析,揭示了商品间的购买关联。例如,白饭/小碗和北冰洋汽水、五色糯米饭和冰糖红豆薏米粥等商品间存在较强的购买关联。这些信息可以帮助企业在设计套餐和促销活动时,合理搭配商品,提升客户满意度和销售额。

  3. 运营优化建议:通过数据分析,企业可以发现运营中的问题和改进空间。例如,了解高频消费的时间段、热门菜品和常见搭配,可以帮助企业更好地进行库存管理、人员调配和促销活动,提高整体运营效率。

  • 48
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值