【python数据分析实战】城市餐饮店铺选址问题(2)—— 确定餐馆的具体位置

1. 选址的评价指标如下:

     人口密度指标 → 得分越高越好
     道路密度指标 → 得分越高越好
     餐饮热度指标 → 得分越高越好
     同类竞品指标 → 得分越低越好
     综合指标 = 人口密度指标x0.4 + 餐饮热度指标x0.3 + 道路密度指标x0.2 +同类竞品指标x0.1(假定)

2. 需要的空间数据(全是投影坐标系)

     上海行政区:net_population.shp (上海1km²格网内的人口密度数据)
     具体的道路:road.shp (上海道路数据)
     网格数据:需要后面自己划分设定

qgis做空间统计之后,网格数据导出点数据,投影成wgs84地理坐标系,导出excel文件

3. 指标处理

1)人口密度指标:对应net_population.shp中的数据,打开qgis,通过导入的该文件,双击进入‘样式’,选择‘渐进’,Z字段进行‘分位数’分类,然后点击‘应用’,就得到了要求的结果

–> 输出结果为:
在这里插入图片描述
2)道路密度指标: 就是网格数据除以网格类的道路长度,选择菜单栏‘矢量’下面的‘分析工具’,点击‘计算线条总长度,这时候要新建一个文件夹来保存创建的数据文件,这样会计算每个网格里面的道路长度,并生成一个新的画布new_result(建议不要和原来的名称一样),打开属性表后,可以在’Z’值后增加了一个‘长度’列

–> 输出结果为:
在这里插入图片描述
3)餐饮热度指标:加载餐饮数据.csv文件,编码默认GBK,然后选择横纵坐标,这时候加载的时候选择是WGS84的坐标系,如果直接使用投影坐标系,则该数据和地图数据不再一块。然后在将导入的数据转化为投影坐标系,这时候右键导入的数据,‘另存为’,选择投影坐标系,输入好文件名称(这里命名为cy)后,存在上一步创建好的文件夹里就可以了

–> 输出结果为:
在这里插入图片描述
计算网格里餐饮店的个数,选择菜单栏上的‘矢量’,‘分析工具’,然后点击‘计算多边形内点的数目’,这时候‘输入多边形矢量图层’选择完成道路密度指标时候创建的新的画布new_result,'输入的点矢量’就是刚刚加载的cy数据,这时候属性聚合的统计方法选择‘总计’,输出的字段保存为cy_count,画布名称为new_result2,这时候属性表里面就多了一列‘cy_count’的数据

–> 输出结果为:
在这里插入图片描述
4)同类竞争指标:针对cy的数据,打开属性表做一个选择,打开表达式选择‘字段和值’下面的类别(双击),在左侧窗口点击‘=’,之后在右下点击全部唯一,找到‘素菜’,并双击。然后重新打开属性表,可以看到上方有个’已选中178

–> 输出结果为:
在这里插入图片描述
这时候点击左下角的‘显示所有要素’,这时候将cy数据另存为,注意勾选‘仅保存选中的要素’,命名为sc,投影坐标系。然后计算网格中素菜馆的个数,按照上一步骤重复一下即可(这里的输入多边形矢量图层选择new_result2,,输入的点矢量就是刚刚加载的sc数据),最终的画布new_result3就是最终的数据了

–> 输出结果为:
在这里插入图片描述
最后:将网格转变为多边形质心(点),选择‘矢量’,‘集合工具’,点击‘多边形质心’,输入层选择new_result3,输出的文件名称为result_point,这时候要添加lng和lat,要将投影坐标系再转回到wgs84坐标系中,点击另存为,选择wgs84坐标系后,保存文件result_point_wgs84,这时候打开属性表,新建字段,分别创建lng、lat,都选择小数(浮点型),分别对应几何图形里面的$x, $y.至此所有的处理工作完成,导出数据就行,新建一个Excel表格,ctrl + a 键全选qgis里面的数据粘贴到Excel表格里面就可以了,第一列删掉,然后保存在桌面。数据样式如下:(直截取部分)

–> 输出结果为:
在这里插入图片描述
4. python数据处理

1)数据导入并查看

加载刚刚通过qgis处理过后的数据

df2 = pd.read_excel('data.xlsx')
data_df2_count = len(df2)
print('一共有的数据量为{}'.format(data_df2_count))
print(df2.head())

–> 输出结果为:

一共有的数据量为7222

  人口密度   道路长度    餐饮计数  素菜餐饮计数 		lng        lat
0  20666  13427.636733  1205.0      13.0  		121.441774  31.228846
1  20666  10871.020833   632.0      9.0  		121.441922  31.219827
2  36929  12104.466337   972.0      4.0  		121.452417  31.219953
3  38393  11489.521043   346.0      4.0  		121.441477  31.246885
4  12314  12615.408243   231.0      4.0  		121.504325  31.256653

2) 缺失值查看以及处理

print(df2.isna().sum())

–> 输出结果为:

Z              0
长度           0
cy_count    4896
sc_count    7114
lng            0
lat            0
dtype: int64

可以发现sc_count(也就是素菜馆的数量)字段缺失数据严重,因为就是给素菜馆选址,所以符合要求的地点很少,那么对缺失的数据这里不可能全部删除,这里使用0进行填补缺失值,并对数据的字段名称进行修改

df2.fillna(0, inplace= True)
df2.columns = ['人口密度','道路长度','餐饮计数','素菜餐饮计数','lng','lat']
print(df2.head(15))

–> 输出结果为:
在这里插入图片描述
3)指标标准化

df2['rkmd_norm'] = (df2['人口密度'] - df2['人口密度'].min())/(df2['人口密度'].max() - df2['人口密度'].min())
df2['cyrd_norm'] = (df2['餐饮计数'] - df2['餐饮计数'].min())/(df2['餐饮计数'].max() - df2['餐饮计数'].min())
df2['scjp_norm'] = (df2['素菜餐饮计数'].max() - df2['素菜餐饮计数'])/(df2['素菜餐饮计数'].max() - df2['素菜餐饮计数'].min())
df2['dlmd_norm'] = (df2['道路长度'] - df2['道路长度'].min())/(df2['道路长度'].max() - df2['道路长度'].min())

df2['finial_score'] = df2['rkmd_norm']*0.4 + df2['cyrd_norm']*0.3 +df2['scjp_norm']*0.1+df2['dlmd_norm']*0.2
data_final_q2 = df2.sort_values(by='finial_score',ascending = False).reset_index()
del data_final_q2['index']

–> 输出结果为:(注意素菜/同类竞品指标采用的是最小标准化,其余的都是最大标准化,注意区别)
在这里插入图片描述
4) 绘制空间散点图,确定具体位置

#单独确定散点图的大小
data_final_q2['size'] = data_final_q2['finial_score'] * 20
data_final_q2['color'] = 'green'
data_final_q2['color'].iloc[:20] = 'red'#设置好颜色后,再将前二十位的设置成为重要颜色,顺序不能反了

source = ColumnDataSource(data_final_q2)
output_file('餐馆地址.html')

hover = HoverTool(tooltips = [
    ('经度','@lng'),
    ('纬度','@lat'),
    ('最终得分','@finial_score'),
])

p = figure(plot_width = 800,plot_height = 800,title = '空间散点图',
               tools = [hover, 'box_select, reset, wheel_zoom,pan,crosshair'])

p.square(x = 'lng',y ='lat',source = source,line_color = 'black',line_dash =[6,4],fill_alpha = 0.8, color = 'color',size = 'size')

show(p)

–> 输出结果为:(注意lng,lat是不能取整的了,否则就得不到需要的位置数据)
在这里插入图片描述

好的,作为一个AI语言模型,我可以提供一些关于使用Stata进行回归分析的基本思路和步骤。 1. 首先,我们需要安装并打开Stata软件,然后导入数据集Woody3.dta。 2. 在Stata中,我们可以使用“regress”命令进行多元线性回归分析。具体命令如下: ``` regress y competitors pop income ``` 这将把y作为因变量,competitors、pop和income作为自变量进行回归分析。 3. 在回归分析结果中,我们需要关注以下几个方面: - 拟合优度:我们可以查看模型的R方值来评估拟合优度。R方值越接近1,说明模型拟合得越好。 - 自变量系数:我们可以查看每个自变量的系数,来了解其对因变量的影响程度。如果系数为正,说明该自变量与因变量呈正相关;如果系数为负,说明该自变量与因变量呈负相关。 - 显著性检验:我们可以查看每个自变量的P值,来确定其是否对模型有显著性贡献。通常情况下,P值小于0.05被认为是具有显著性的。 4. 最后,我们可以使用回归模型来预测新Woody's餐馆的销售收入。我们可以输入该地区的竞争者数量、居民人数和家庭平均收入,然后根据模型预测销售收入。这将有助于我们评估该地区是否适合开设新的Woody's餐馆,并确定餐馆预计的销售收入水平。 总之,使用Stata进行回归分析,可以帮助我们预测餐馆销售收入,并确定影响销售收入的因素。这将有助于我们为新的Woody's餐馆选址,并预测其销售收入水平。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lys_828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值