目标:从三个维度“口味”、“人均消费”、“性价比”对不同菜系进行比较,并筛选出可开店铺的餐饮类型
实现的具体细节:
① 计算出三个维度的指标得分
② 评价方法:
口味 → 得分越高越好
性价比 → 得分越高越好
人均消费 → 价格适中即可
③ 制作散点图,x轴为“人均消费”,y轴为“性价比得分”,点的大小为“口味得分”
绘制柱状图,分别显示“口味得分”、“性价比得分”
实现过程
载入数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
from bokeh.plotting import figure,show,output_file
from bokeh.models import ColumnDataSource
print('finished')import os
os.chdir('E:\Users\54672\Desktop\城市餐饮选址')
df1=pd.read_excel('上海餐饮数据.xlsx', sheet_name=0)

计算口味,客单价,性价比指标,数据清洗+加性价比计算

data1=df1[['类别','口味','环境','服务','人均消费']]
data1.dropna(inplace=True)
data1=data1[(data1['口味']>0)&(data1['人均消费']>0)]
data1['性价比']=(data1['口味']+data1['环境']+data1['服务'])/data1['人均消费']
def f1():fig,axes=plt.subplots(1,3,figsize=(10,4))data1.boxplot(column=['口味'],ax=axes[0])data1.boxplot(column=['人均消费'],ax=axes[1])data1.boxplot(column=['性价比'],ax=axes[2])

制作箱线图,查看异常值

def f1():fig,axes=plt.subplots(1,3,figsize=(10,4))data1.boxplot(column=['口味'],ax=axes[0])data1.boxplot(column=['人均消费'],ax=axes[1])data1.boxplot(column=['性价比'],ax=axes[2])def f2(data,col):q1=data[col].quantile(q=0.25)q3=data[col].quantile(q=0.75)iqr=q3-q1t1=q1-3*iqrt2=q3+3*iqrreturn data[(data[col]>t1)&(data[col]<t2)][['类别',col]]

```python
data_kw=f2(data1,‘口味’)
data_rj=f2(data1,‘人均消费’)
data_xjb=f2(data1,‘性价比’)

def f3(data,col):
col_name=col+’_norm’
data_gp=data.groupby(‘类别’).mean()
data_gp[col_name]=(data_gp[col]-data_gp[col].min())/(data_gp[col].max()-data_gp[col].min())
data_gp.sort_values(by=col_name,inplace=True,ascending=False)
return data_gp

数据合并
```python
data_kw_score=f3(data_kw,'口味')
data_rj_score=f3(data_rj,'人均消费')
data_xjb_score=f3(data_xjb,'性价比')
data_final_q1=pd.merge(data_kw_score,data_rj_score,left_index=True,right_index=True)
data_final_q1=pd.merge(data_final_q1,data_xjb_score,left_index=True,right_index=True)

柱状图散点图的绘制

from bokeh.layouts import gridplot
from bokeh.models import HoverTool
from bokeh.models.annotations import BoxAnnotation
output_file('project07_h1.html1')
data_final_q1['size']=data_final_q1['口味_norm']*40
data_final_q1.index.name='type'
data_final_q1.columns=['kw','kw_norm','price','price_norm','xjb','xjb_norm','size']
#讲列名改为英文
source=ColumnDataSource(data_final_q1)
#创建数据
hower=HoverTool(tooltips=[('餐饮类型','@type'),('人均消费','@price'),('性价比得分','@xjb_norm'),('口味得分','@kw_norm')])
result=figure(plot_width=800,plot_height=300,title='餐饮类型得分',x_axis_label='人均消费',y_axis_label='性价比得分',tools=[hower,'box_select,reset,xwheel_zoom,pan,crosshair'])
result.circle(x='price',y='xjb_norm',source=source,line_color='black',line_dash=[6,3],fill_alpha=0.6,size='size')
price_mid=BoxAnnotation(left=40,right=80,fill_alpha=0.1,fill_color='navy')
result.add_layout(price_mid)
#散点图
data_type=data_final_q1.index.tolist()
kw=figure(plot_width=800,plot_height=300,title='口味得分',x_range=data_type,tools=[hower,'box_select,reset,xwheel_zoom,pan,crosshair'])
kw.vbar(x='type',top='kw_norm',source=source,width=0.8,alpha=0.7,color='red')
#柱状图
price=figure(plot_width=800,plot_height=300,title='人均消费得分',x_range=data_type,tools=[hower,'box_select,reset,xwheel_zoom,pan,crosshair'])
price.vbar(x='type',top='price_norm',source=source,width=0.8,alpha=0.7,color='green')
#柱状图2
p=gridplot([[result],[kw],[price]])
show(p)


接下来选择一个餐饮类型,在qgis中做将上海划分成格网空间,结合python辅助做空间指标评价,得到餐饮选址位置。


df2 = pd.read_excel('空间统计.xlsx',sheetname=0,header=0)
data2 = df2.fillna(0)
data2.head()

指标统计,标准化,计算综合评分并查看top10网络ID

data2['rkmd_norm'] = (data2['人口密度']-data2['人口密度'].min())/(data2['人口密度'].max()-data2['人口密度'].min()) # 人口密度指标标准化
data2['cyrd_norm'] = (data2['餐饮计数']-data2['餐饮计数'].min())/(data2['餐饮计数'].max()-data2['餐饮计数'].min()) # 餐饮热度指标标准化
data2['tljp_norm'] = (data2['素菜餐饮计数'].max()-data2['素菜餐饮计数'])/(data2['素菜餐饮计数'].max()-data2['素菜餐饮计数'].min()) # 同类竞品指标标准化
data2['dlmi_norm'] = (data2['道路长度']-data2['道路长度'].min())/(data2['道路长度'].max()-data2['道路长度'].min()) data2['final_score'] = data2['rkmd_norm']*0.4 + data2['cyrd_norm']*0.3 + data2['tljp_norm']*0.1 + data2['dlmi_norm']*0.2
data_final_q2 = data2.sort_values(by = 'final_score',ascending=False).reset_index()
data_final_q2[:10]
data_final_q2['size'] = data_final_q2['final_score'] * 20
data_final_q2['color'] = 'green'
data_final_q2['color'].iloc[:10] = 'red'
# 添加size字段source = ColumnDataSource(data_final_q2)
# 创建ColumnDataSource数据hover = HoverTool(tooltips=[("经度", "@lng"),("纬度", "@lat"),("最终得分", "@final_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',fill_alpha = 0.5,size = 'size',color = 'color')
p.ygrid.grid_line_dash = [6, 4]
p.xgrid.grid_line_dash = [6, 4]
# 散点图
show(p)

数据分析Qgis-城市餐饮店铺选址相关推荐

  1. 数据分析实战——城市餐饮店铺选址分析(1)

    项目目标: 城市餐饮店铺选址 第一部分:从三个维度"口味"."人均消费"."性价比"对不同菜系进行比较,并筛选出可开店铺的餐饮类型 要求: ...

  2. 数据分析案例--01 城市餐饮店铺选址分析

    城市餐饮店铺选址分析 数据下载链接: 链接:https://pan.baidu.com/s/1l2-EEMhK0-n8gFPLuOHb1g 提取码:7olt 要求: 1.从三个维度"口味&q ...

  3. 城市餐饮店铺选址分析

    城市餐饮店铺选址的分析 基于这样一个数据 从 "口味"."人均消费"."性价比" 三个维度对不同菜系进行比较,并筛选出可开店铺的餐饮类型 ① ...

  4. 项目07城市餐饮店铺选址分析

    问题 [项目07] 城市餐饮店铺选址分析 1.从三个维度"口味"."人均消费"."性价比"对不同菜系进行比较,并筛选出可开店铺的餐饮类型 要 ...

  5. 数分笔记整理21 - 数据处理项目 - 城市餐饮店铺选址分析 电商打折套路解析

    [项目07] 城市餐饮店铺选址分析 ''' [项目07] 城市餐饮店铺选址分析1.从三个维度"口味"."人均消费"."性价比"对不同菜系进行 ...

  6. 项目01城市餐饮店铺选址分析

    一.项目要求 1.从三个维度"口味"."人均消费"."性价比"对不同菜系进行比较,并筛选出可开店铺的餐饮类型 要求: ① 计算出三个维度的指 ...

  7. Python 数据分析微专业课程--项目06 城市餐饮店铺选址分析

    1.项目说明 通过对上海餐饮数据的分析,选择相对较好的餐饮类型和地段开店 2.项目具体要求 从三个维度"口味"."人均消费"."性价比"对不 ...

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

    1. 选址的评价指标如下: 人口密度指标 → 得分越高越好      道路密度指标 → 得分越高越好      餐饮热度指标 → 得分越高越好      同类竞品指标 → 得分越低越好      综合 ...

  9. 【python数据分析实战】城市餐饮店铺选址问题(1)—— 对不同菜系进行比较,并筛选出可开店铺的餐饮类型

    1. 首先将要使用的库全部进行导入,并设置程序运行路径 import os os.chdir(r"C:\Users\86177\Desktop") #设置路径 import pan ...

最新文章

  1. Socket(套字节)编程,客户端 服务器端的发送消息
  2. GRUB 启动 WIN PE 镜像(ISO)
  3. kaggle数据集_ArXiv170万篇论文数据集上线Kaggle!
  4. C# 错误 175: 具有固定名称“System.Data.SQLite.EF6”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载
  5. VS2010~2015番茄助手VA_X 2073 重新安装时遇到问题The security key for this program currently stored on your system
  6. JS记坑 ----- children返回的类数组
  7. mongodb安装、远程访问设置、管理命令、增删改查操作以及GUI
  8. HDU 3350 #define is unsafe
  9. 傻傻弄不清楚SAP和ERP?
  10. 计算机第一个应用领域是,第一代计算机主要应用领域是什么
  11. android 点击对话框按钮 不关闭按钮,Android在单击PositiveButton后不要关闭AlertDialog...
  12. linux tty core code,linux tty core 源码分析(6)
  13. Floyd Thomas - Principles of Electric Circuits_ Conventional Current-Pearson (2021) 电路基础书籍推荐
  14. java微信公众号支付开发平台_微信公众号支付demo,微信公众号支付Java DEMO
  15. 计算机顶会论文多少钱,计算机视觉顶会文章的解读汇总(CVPR/ECCV/ICCV/NIPS)
  16. pytorch统计模型参数量
  17. python 入门书籍-入门python有什么好的书籍推荐?
  18. AtCoder题解——Beginner Contest 170——F - Pond Skater
  19. Web服务器的配置与应用
  20. Ubuntu18.04个人常用工具软件

热门文章

  1. 华为云点学堂为你揭开DevOps转型的秘密
  2. 2022夏PAT甲级题解 by小柳2022.6.7
  3. Lambda 表达式 详解——【参考MSDN】
  4. mongodb基本语法及操作(增删改查)
  5. linux安装ati工具,Ubuntu 12.10 安装ATI显卡驱动安装
  6. forget word out a~4
  7. android studio 下拉菜单,android studio 的下拉菜单Spinner使用详解
  8. LABS1000-01空盒气压计检定系统
  9. 实现74HC85的功能以及16位数值比较器
  10. linux网卡聚合是什么意思,linux网卡聚合