数据分析Qgis-城市餐饮店铺选址
目标:从三个维度“口味”、“人均消费”、“性价比”对不同菜系进行比较,并筛选出可开店铺的餐饮类型
实现的具体细节:
① 计算出三个维度的指标得分
② 评价方法:
口味 → 得分越高越好
性价比 → 得分越高越好
人均消费 → 价格适中即可
③ 制作散点图,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)
项目目标: 城市餐饮店铺选址 第一部分:从三个维度"口味"."人均消费"."性价比"对不同菜系进行比较,并筛选出可开店铺的餐饮类型 要求: ...
- 数据分析案例--01 城市餐饮店铺选址分析
城市餐饮店铺选址分析 数据下载链接: 链接:https://pan.baidu.com/s/1l2-EEMhK0-n8gFPLuOHb1g 提取码:7olt 要求: 1.从三个维度"口味&q ...
- 城市餐饮店铺选址分析
城市餐饮店铺选址的分析 基于这样一个数据 从 "口味"."人均消费"."性价比" 三个维度对不同菜系进行比较,并筛选出可开店铺的餐饮类型 ① ...
- 项目07城市餐饮店铺选址分析
问题 [项目07] 城市餐饮店铺选址分析 1.从三个维度"口味"."人均消费"."性价比"对不同菜系进行比较,并筛选出可开店铺的餐饮类型 要 ...
- 数分笔记整理21 - 数据处理项目 - 城市餐饮店铺选址分析 电商打折套路解析
[项目07] 城市餐饮店铺选址分析 ''' [项目07] 城市餐饮店铺选址分析1.从三个维度"口味"."人均消费"."性价比"对不同菜系进行 ...
- 项目01城市餐饮店铺选址分析
一.项目要求 1.从三个维度"口味"."人均消费"."性价比"对不同菜系进行比较,并筛选出可开店铺的餐饮类型 要求: ① 计算出三个维度的指 ...
- Python 数据分析微专业课程--项目06 城市餐饮店铺选址分析
1.项目说明 通过对上海餐饮数据的分析,选择相对较好的餐饮类型和地段开店 2.项目具体要求 从三个维度"口味"."人均消费"."性价比"对不 ...
- 【python数据分析实战】城市餐饮店铺选址问题(2)—— 确定餐馆的具体位置
1. 选址的评价指标如下: 人口密度指标 → 得分越高越好 道路密度指标 → 得分越高越好 餐饮热度指标 → 得分越高越好 同类竞品指标 → 得分越低越好 综合 ...
- 【python数据分析实战】城市餐饮店铺选址问题(1)—— 对不同菜系进行比较,并筛选出可开店铺的餐饮类型
1. 首先将要使用的库全部进行导入,并设置程序运行路径 import os os.chdir(r"C:\Users\86177\Desktop") #设置路径 import pan ...
最新文章
- Socket(套字节)编程,客户端 服务器端的发送消息
- GRUB 启动 WIN PE 镜像(ISO)
- kaggle数据集_ArXiv170万篇论文数据集上线Kaggle!
- C# 错误 175: 具有固定名称“System.Data.SQLite.EF6”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载
- VS2010~2015番茄助手VA_X 2073 重新安装时遇到问题The security key for this program currently stored on your system
- JS记坑 ----- children返回的类数组
- mongodb安装、远程访问设置、管理命令、增删改查操作以及GUI
- HDU 3350 #define is unsafe
- 傻傻弄不清楚SAP和ERP?
- 计算机第一个应用领域是,第一代计算机主要应用领域是什么
- android 点击对话框按钮 不关闭按钮,Android在单击PositiveButton后不要关闭AlertDialog...
- linux tty core code,linux tty core 源码分析(6)
- Floyd Thomas - Principles of Electric Circuits_ Conventional Current-Pearson (2021) 电路基础书籍推荐
- java微信公众号支付开发平台_微信公众号支付demo,微信公众号支付Java DEMO
- 计算机顶会论文多少钱,计算机视觉顶会文章的解读汇总(CVPR/ECCV/ICCV/NIPS)
- pytorch统计模型参数量
- python 入门书籍-入门python有什么好的书籍推荐?
- AtCoder题解——Beginner Contest 170——F - Pond Skater
- Web服务器的配置与应用
- Ubuntu18.04个人常用工具软件
热门文章
- 华为云点学堂为你揭开DevOps转型的秘密
- 2022夏PAT甲级题解 by小柳2022.6.7
- Lambda 表达式 详解——【参考MSDN】
- mongodb基本语法及操作(增删改查)
- linux安装ati工具,Ubuntu 12.10 安装ATI显卡驱动安装
- forget word out a~4
- android studio 下拉菜单,android studio 的下拉菜单Spinner使用详解
- LABS1000-01空盒气压计检定系统
- 实现74HC85的功能以及16位数值比较器
- linux网卡聚合是什么意思,linux网卡聚合