logo资料库

餐饮业数据分析.docx

第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
资料共20页,剩余部分请下载后查看
目录
1.前言:
2.餐饮企业数据分析的步骤与流程
4、使用K-MEANS聚类算法进行客户价值分析
3.构建K-Means模型:
5客户流失预测:
6.总结
课题名称:餐饮业数据分析 班 级: 18 级统计学 1 班 1234567 ______ 学 号: 姓 名: 成 绩: 啊 啊
目录 1.前言: 2.餐饮企业数据分析的步骤与流程 4、 使用 K-MEANS 聚类算法进行客户价值分析 5 客户流失预测: 6. 总结 2 3 9 14 18 1
一、项目需求 1.前言: 俗话说的民意食为天,随着科技的发展和人们生活水平的提高。餐饮行业作 为我国第三产业中的一个传统服务性行业,始终保持着旺盛的增长势头,取得了 突飞猛进的发展,展现出繁荣兴旺的新局面。与此同时,我国餐饮业发展的质量 和内涵也发生了重大变化。根据国家统计局数据显示,餐饮行业餐费收入从 2006 到 2015 年都处于增长的趋势,同比增长率有很大的波动,如图所示。 2
2.餐饮企业数据分析的步骤与流程 通过对某餐饮企业的数据进行分析,最终为餐饮企业提出改善的建议。主要步 骤如下图所示。 (1)从系统数据库中迁移与分析相关的数据到分析数据库中,包括客户信息、 菜品详情、订单表和订单详情等。 (2)对数据进行预处理,统计每日用餐人数、每日销售额并进行数据清洗等。 (3)进行特征工程,构建 RFM 特征和客户流失特征。 (4)使用 K-means 算法,对客户进行聚类分析,并基于聚类结果进行客户价值 分析。 (5)个人总结。 3
3.数据预处理 订单表(meal_order_info.csv)和客户信息表(users.csv)中包含 2016 年 8 月份的订单和对应客户的数据,将使用该部分数据进行客户价值聚类分析。历史 订单表(info_new)和历史客户信息表(user_loss)包含 2016 年 1~7 月份的订 单和对应客户的数据,将使用该部分数据构建客户流失预测模型,统计每日用餐 人数与销售额。 1.统计订单和历史订单中每日用餐人数和销售额。如下展示: 2. 统计用餐人数与销售额 import pandas as pd import matplotlib.pyplot as plt info = pd.read_csv('../data/meal_order_info.csv', sep=',', encoding='gbk') info_before = pd.read_csv('../data/info_new.csv' ,sep=',' ,encoding='utf-8') info_all = pd.concat([info_before,info]) print('查看数据\n',info.shape,info_before.shape,info_all.shape) #查看订单数据 为 1 的数据 info = info_all[info_all['order_status'].isin(['1'])] info = info.reset_index(drop = True) #统计每日用餐数 和 营业额度 for i,k in enumerate(info['use_start_time']): y = k.split() y = pd.to_datetime(y[0]) info.loc[i,'use_start_time'] = y groupbyday = info[['use_start_time','number_consumers','accounts_payable']].groupby(by='use_ start_time') sale_day = groupbyday.sum() 4
sale_day.columns = ['人数','销量'] plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.figure(figsize=(12,6)) plt.title('每日销售额折线图 作者:唐郁昕 学号:1710225039') plt.xlabel('日期') plt.ylabel('销售额') plt.plot(sale_day['销量']) plt.show() plt.close 3.统计每日用餐人数与销售额 #新建面板 plt.figure(figsize=(12,6)) plt.title('每日销售额折线图 作者:唐郁昕 学号:1710225039') plt.xlabel('日期') plt.ylabel('销售额') plt.plot(sale_day['销量']) plt.show() plt.close 5
3.客户价值分析处理 info_august = pd.read_csv('../data/meal_order_info.csv', encoding = 'gbk') users_august = pd.read_csv('../data/users.csv', sep=',' ,encoding='GBK') info_august_new = info_august[info_august['order_status'].isin(['1'])] info_august_new = info_august_new.resetindex(drop=True) print('提取的订单数据维数:' ,info_august_new.shape) info_august_new.to_csv('../tmp/info_new.csv',index=False,encoding ='utf-8') for i in range(1,len(info_august_new)): num = users_august[users_august['USER ID'] == info_august_new.iloc[i - 1, 1]].index.tolist() users_august.iloc[num[0], 14] = info_august_new.iloc[i - 1, 9] users_august.iloc[num[0],14] = info_august_new.iloc[i-1,9] user = users_august user['LAST VISITS'] = user['LAST VISITS'].fillna(999) 6
user = user.drop(user[user['LAST VISITS'] == 999].index.tolist()) user = user.iloc[:,[0,2,12,14]] print(user.head()) user.to_csv('../tmp/users_loss.csv', index=False, encoding='utf-8') 4.合并订单表和客户信息表 users = pd.read_csv('../temp/user_loss.csv', encoding='gbk') info = pd.read_csv('../data/info_new.csv', encoding = 'utf-8') print("历史客户信息表的维数: ", users.shape) print('历史订单表的维数:' , info.shape) #将时间转为时间格式 users['CREATED'] = pd.to_datetime(users['CREATED']) info['use_start_time'] = pd.to_datetime(info['use_start_time']) info['lock_time'] = pd.to_datetime(info['lock_time'])#匹配用户的最后一次用餐时间 for i in range(len(users)): infol = info.iloc[info[info['name']==users.iloc[i,2]].index.tolist(),:] if sum(info['name']==users.iloc[i,2]) != 0: users.iloc[i,14]= max(infol['use_start_time']) #特征选取 #提取有效订单 info = info.loc[info['order_status'] == 1, ['emp_id','number_consumers','expenditure']] info = info.rename(columns = {'emp_id':"USER ID"}) 5.对空值进行处理 7
分享到:
收藏