1. 项目简介
餐饮业生意好坏的影响因素通常有很多,包括店铺菜系、口味、服务态度、周边环境、人口密度、所在区域、人均消费等等方面。本项目以上海城市为例,对其餐饮业消费数据进行统计分析,从三个维度“口味”、“人均消费”、“性价比”对不同菜系进行横向比较。针对某一商铺类型,将上海划分成格网空间,做空间指标评价,基于聚类算法,得到较好选址的网格位置的中心坐标,以及所属区域。
2. 功能组成
基于聚类算法的城市餐饮数据分析与店铺选址系统的功能组成如下图所示:
3. 任务需求分析与实现思路
3.1 任务需求
- 从三个维度“口味”、“人均消费”、“性价比”对不同菜系进行比较,并筛选出可开店铺的
- 选择一个餐饮类型,将上海划分成格网空间,做空间指标评价,得到餐饮选址位置
3.2 实现思路
1. 从三个维度“口味”、“人均消费”、“性价比”对不同菜系进行比较,并筛选出可开店铺的
- 计算出三个维度的指标得分
- 评价方法:
- 口味 → 得分越高越好
- 性价比 → 得分越高越好
- 人均消费 → 价格适中即可
- 制作散点图,x轴为“人均消费”,y轴为“性价比得分”,点的大小为“口味得分”,绘制柱状图,分别显示“口味得分”、“性价比得分”
2. 选择一个餐饮类型,将上海划分成格网空间,做空间指标评价,得到餐饮选址位置
- 通过空间分析,分别计算每个格网内的几个指标:人口密度指标、道路密度指标、餐饮热度指标、同类竞品指标
- 评价方法:
- 人口密度指标 → 得分越高越好
- 道路密度指标 → 得分越高越好
- 餐饮热度指标 → 得分越高越好
- 同类竞品指标 → 得分越低越好
- 综合指标 = 人口密度指标0.4 + 餐饮热度指标0.3 + 道路密度指标0.2 +同类竞品指标0.1
- 最后得到较好选址的网格位置的中心坐标,以及所属区域
4. 工具包导入与数据读取
本项目数据统计分析主要采用 numpy 和 pandas,可视化采用 Matplotlib、seaborn 和 bokeh实现:
import os
import gc
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
np.random.seed(7)
plt.style.use(‘fivethirtyeight’)
import warnings
warnings.filterwarnings(‘ignore’)
from bokeh.plotting import figure,show,output_file
from bokeh.models import ColumnDataSource
from bokeh.layouts import gridplot
from bokeh.models import HoverTool
from bokeh.models.annotations import BoxAnnotation
from bokeh.io import output_notebook
from matplotlib.font_manager import FontProperties
# 读取字体路径,设置字体为思源黑体
myfont=FontProperties(fname=r'/System/Library/Fonts/Hiragino Sans GB.ttc')
sns.set(font=myfont.get_name())
output_notebook()
读取上海餐饮数据和上海地区的人口密度数据,并进行缺失值分析:
data_df = pd.read_csv(‘上海餐饮数据.csv’, encoding=‘gbk’)
data_df = data_df.drop(columns=[‘城市’])
data_df = data_df[data_df[‘人均消费’] > 0]
people_df = pd.read_csv(‘上海地区人口密度数据.csv’, encoding=‘gbk’)
people_df.columns = [‘人口密度’,‘道路长度’,‘餐饮计数’,‘素