基于python的汉堡王连锁店全国店铺信息分析与可视化_第1页
基于python的汉堡王连锁店全国店铺信息分析与可视化_第2页
基于python的汉堡王连锁店全国店铺信息分析与可视化_第3页
基于python的汉堡王连锁店全国店铺信息分析与可视化_第4页
基于python的汉堡王连锁店全国店铺信息分析与可视化_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1引言1

1.1项目背景1

1.2开发工具和环境2

1.2.1Python介绍2

1.2.2MySQL介绍2

1.2.3Jypyternotebook介绍3

1.2.4GoogleChrome介绍3

2需求分析3

2.1项目需求分析3

2.2采集目标功能分析4

2.3关键技术分析4

2.3.1网络爬虫技术4

2.3.2文件存取技术5

2.3.3可视化技术6

3数据采集6

3.1店铺信息数据爬取分析6

3.2城市数据采集页面分析8

3.3字段数据分析9

3.4爬取城市信息编程实现10

4数据清洗与处理15

4.1数据清洗15

4.2储存数据15

4.3编程实现16

5数据统计和可视化分析18

5.1数据准备18

5.1.1中国地图绘制18

I

湖南商务职业技术学院毕业设计

5.1.2提供早餐的店铺占比饼图绘制20

5.1.3江苏省地级市分布绘制21

5.1.4是否可使用储蓄卡分析23

5.2数据展示25

5.2.1中国地图省份分布统计25

5.2.2是否提供早餐的占比饼图分析26

5.2.3江苏省地级市分布情况26

5.2.4各省份储蓄卡功能的统计数据与分析27

5.3综述28

6小结28

参考资料30

II

湖南商务职业技术学院毕业设计

基于python的汉堡王连锁店全国店铺信息分析与可

视化

1引言

经济发展迅速、数字统计发展的阶段,面对着快速的变化既是挑战也是新

的机遇,当代年轻人如何根据大数据统计出来的信息总结前人的经验,发现其

中不足来扩展新的思路是至关重要的。可以感受到互联网和大数据带给我们前

所未有的发展进度,智能手机和移动支付可以统计人们的消费情况,如何通过

消费轨迹、消费喜好的数据对于市场情况的分析?统计的数值如何更好清楚明

了的展示?这些事情都可以让我们去思考,然后去学习完成。

依托计算机信息技术的脱矿,2022年期间所新起的餐饮类店铺不下百家,

成功打响名气并且发展的存在,但在光阴似箭、发展快速的时代中销声匿迹的

也不少。作为人口大国餐饮占据很大的市场,通过计算行业对杂乱无章的信息

进行统计,从中发现其规律提高成功率,减少失败。目前发展情况的情况下,

信息资源成为行业的重要财富,从海量普通数字中展现出来的价值和道理,掌

握大数据技术让信息技术领域带来的经济繁荣。

1.1项目背景

全国连锁店铺产生的信息数据及时进行统计和分析,可以促进该品牌的经

济提高。据数据统计显示,2016年后,连锁餐饮行业的市场需求和模式的经营

越来越成熟,进入了稳定长期发展阶段。在该时期中连锁的餐饮门店增多,一

方面可反映经济前景向上的发展趋势,另一方面也驱动了创新的方向。

消费人群偏向多元化趋势,如何利用政策、行业社会的环境和经济情况等

加强连锁店的综合实力,使之向上不衰退。轻食行业的崛起,在大众提倡健康

饮食蔬菜搭配,少吃油炸食品的强劲对手的时候,对于汉堡王这种中式快餐的

品牌如何在市场中稳定自身实力?可以从大数据统计的信息中得出一些宝贵的

经验。

获得全国连锁店铺信息情况需要在汉堡王的官方网站中查询。设计获得店

铺信息的数据有很多,这次项目通过python爬虫对网页进行解析,提取资

料。主要是对店铺所在省份和其地级市、名称、地址和提供的服务功能等信息

进行分析,得到初始数据之后对其进行清洗然后存储与MySQL中,统计和利用

1

湖南商务职业技术学院毕业设计

可视化的图表方式反映情况。在绘制的图表中可以得出汉堡王连锁店铺的发展

趋势、为何呈现此分布情况的缘由、可以运用什么方式来抓住客户。

1.2开发工具和环境

1.2.1Python介绍

Python是一个具有结合了高层次的面向对象的程序设计语言,具备了较强

的可读性,也是一种解释性、互交性语言。是一门相对与较新的初学者的语

言。对于初学的程序员来说,python没有c++、java等其他语言难,相对来说

更加容易学习和操作。

Python是由GuidovanRossum在荷兰的研究所的二十年代八十年代末时

期所设计出来的,是由其他脚本语言中得到启发设计而成。Python也被叫做

“胶水语言”,用于“黏合”各种语言大程序模块。起初Python并不被大家认

可,但随着语法简单,现在也常处于开发语言的前三之间。

随着多元化发展Python现如今也有了一席之地,可用于网页爬虫、可视

化分析、人工智能、黑客编程和机械学习等多方向发展。例如Web开发应用,

通过Django、web2py、TurboGears等框架来完成http服务器与程序之间的联

络;也可以写基于python的自动化脚本,如高峰时期火车票的购买等;作为

游戏网络的开发、大数据的计算。

数据清洗、数据爬虫等现在许多地方都存在了python的影子。

最后,现如今该语言广受公司、大学课堂的喜欢,越来越受到广泛的关注

与重视,在学校课堂教学课程的应用范围也逐渐扩大,相信在该行业会持续向

上趋势发展。

1.2.2MySQL介绍

作为存储数据的仓库数据库,是可以存放大量有规律、有阻止并且可

以共享的数据学习集合。MySQL是数据库中的其中一种关系型数据库管理系

统,将数据保存到不同数据库的不同表中,可以更好区分数据类别并且提高了

灵活性。MySQL使用的SQL语言进行插入、增加、修改、删除和查看等操作,

可以在短时间内存放很多数据。

计算机发明初始是各国在世界大战中用来计算破译敌军密码的一个工具,

发展到后期需要计算一些实验中相关的数据以及公式。

在计算过程中难免会产生多个不同的实验数据,再后来人们将每个不同的

2

湖南商务职业技术学院毕业设计

数据按一定的顺序存入到计算机的硬盘中,按照一定顺序排列。最后这种按一

定结构存入数据的容器,人们将之称为数据库。

MySQL的发展历史可以追溯到1979年,使用basic设计的报表工具,后续

逐渐拓展其他功能,如视图、游标、触发器等等进而形成今天我们使用的

MySQL。它不仅能容量大而且高效安全,开源免费的特点也是受到大众的欢迎

和喜爱。使用该工具可以提高自身对数据的敏感度,在无规律中寻找规律,在

大数据中分类数据。

1.2.3Jypyternotebook介绍

现在涌出非常多的应用程序用于编写程序,其中jupyternotebook就是

一个以开源web应用程序,可以运行多种语言包括python、scala、R等,是

安装anaconda来用jupyternotebook。它的用途也很广泛:数据清洗、数据

可视化、机器学习等,是一款适合进行大数据科学计算的编程程序。

Jupyternotebook此前也被称为IPythonnotebook是一个互交式的笔记

本,也是一个Web应用程序。因为它能观察到程序的过程和运行结果,所以更

适合数据分析。

Jupyternotebook与IPython终端共同使用同一个内核,可以同时连接多

个前端,用于快速开发新的前端;不同内核一样的前端则用于新的开发语言。

不受其他系统的限制,不用安装其他的编辑器,简单便捷也是其一大特点之

一。这次项目主要是进行一个对初始数据进行清洗,并且保存至MySQL表中。

1.2.4GoogleChrome介绍

GoogleChrome是一个由谷歌公司开发的浏览器,中文名翻译过来就是谷

歌浏览器,其作用是浏览网页和打开使用python可视化绘制的html文件。在

2012年google宣布退出的安卓平台的chrome浏览器第一个beta版本。慢慢

的其成为主流使用的浏览器,从而也给谷歌公司带来了很可观的利润。Chrome

的发展同时带动了JavaScript、html等其它技术的成熟。

2需求分析

2.1项目需求分析

1、技术可靠性

Python超越java的热度直接夺冠,可见现在它的技术也收到了大众的认

3

湖南商务职业技术学院毕业设计

可,其易学习和使用就深受喜欢。一门语言在发展的过程中都需要大量时间来

成长来完善,python也不例外,在建立40多年来成熟的python社区、大量适

用的文档和视频指导,从初学者到成熟的程序员,现有数百个框架和库的技术

支持,更加是在此次项目中占据主导地位。

计算科学、云计算和大数据技术潮流下其作用发挥的淋漓尽致。起初从网

页爬取数据,到将其清洗并且保存至csv文件、txt记事本或者excel表格,

图表的可视化分析python语言都可完成,其强大功能支持着项目的完成。

2、项目可靠性

作为人口大国,粮食是每天的必需品,从以前的解决温饱问题到不仅要吃

饱还要吃好的精神需求,餐饮行业也进而得以发展。那么在这么多品牌中出类

拔萃需要从各方面的统计分析来进行归纳总结。

针对全国汉堡王连锁店铺信息为例,对官网数据进行爬虫,从各省份店铺

数量分布、特别省份中地级市数量分布以及其服务项目深度分析,提取有用有

利的得出结论。

2.2采集目标功能分析

本次数据集来源于汉堡王网站的餐厅页面,先通过selenium动态爬取全

部省份和其相应地级市来获得所需的信息,利用该信息来获得名称等店铺信

息。初数据有1400条,进行去重和去空值清洗存入MySQL中的数据是1384

条,确保了数据的真实性和可用性。

此次筛选的数据有省份、城市、名称、地址、营业时间、电话、是否提供

早餐和储蓄卡功能。从地理位置,全国地图各省份分析呈此现象分布的缘由,

沿海省份经济更加发达;从城市政策,以江苏省为例的地级市分布数量,省会

具有更好的政策和综合实力;从品牌提供的服务,以早餐和储蓄卡为例,分析

如何绑定消费者和精准推广。

2.3关键技术分析

2.3.1网络爬虫技术

Python爬虫是由编写的程序来进行自动抓取网页信息的程序,其由调度

器、URL管理器、网页下载器、网页解析器和应用程序五个部分组成,由爬虫

调度来开始、结束或者停止爬取情况。有些网站存在反爬虫功能,此时使用静

态网页和动态网页的一些应对方式,如添加header模仿真人的方法爬虫、间

4

湖南商务职业技术学院毕业设计

隔一段时间再进行下一次请求或者模仿ajax发出请求对相应的json文件中获

得信息。日常生活中想要获得G或者T级别的数据是需要花费很多时间,但是

自动化的python爬虫可以缩短你的工作时间,提高你的工作效率。

Python爬虫中图案是一个蜘蛛网和一只蜘蛛,可以很形象的形容了爬虫过

程,如果把我们比作蜘蛛,互联网就是蜘蛛网,互联网中会通过一些结点来连

接下一个网页的信息从而每个网页、信息之间都产生了一点联系,就如蜘蛛网

每个线之间都存在相加的点,蜘蛛所做的工作就是找到其中规律把它编制成一

张网,沿着蜘蛛线得到自己想要的猎物数据。

自动化的python爬虫技术通过点击运行鼠标的行为,之后的数据爬取完

全交给了程序。现实生活中学会此技术也会带来不少好处,减少繁琐的程序,

如获得某电影院所有电影信息、自动化在高峰期抢票或者获得全国连锁店铺的

信息等。十五都存在双面性,爬虫也不例外。一些心思叵测的人将其用来爬取

网页或者公司中不允许爬取的内容,当爬虫放在违法的事情上则变成了不好的

技术,所有拥有这门技术应该懂法知法守法,不要做让自己后悔的事情,在法

律的范围内获取自己所需数据。

2.3.2文件存取技术

使用python中第三方库json将得到的信息存入txt记事本中,如图2-

1;json.load可以读取文件数据,如图2-2。

图2-1写入txt记事本

图2-2读取txt记事本

在xlwt库中写入数据到excel表格中,首先写入列名称后再逐行写入店

铺信息,如图2-3。

5

湖南商务职业技术学院毕业设计

图2-2excel表格写入

2.3.3可视化技术

虽然从网页中用python爬虫技术保存数据到excel表格中,但多条数据

的存储无法一眼看出规律所在,所以使用python的数据可视化分析技术,通

过图表的方式更加直观的显示所突出的信息。

显然我们获取到的数据是一串串冗长的字符串,当有成千上万条信息的时

候我们短时间内很难看出,我们需要进行深入的了解和分析。对这一坨枯燥而

乏味的数据集进行处理完毕后,我们就要导入需要的第三方库将数据合理的进

行判断,决定使用什么样的几何图形才能最好、并且直观的表达出数据集的信

息。

数据可视化是指根据数据的特点、统计数量或者属性等通过图形、图像的

方式有概念的呈现。可视化技术是二十世纪五十年代计算机的图形学初期,那

时候通过构建图形图表来展示,随着科技越来越发达,通过可视化技术各种各

样的图或表也随之产生。可视化的应用也分为宏观态势可视化、设备仿真可视

化和数据统计分析可视化三类,此次主要使用的就是数据统计分析可视化,通

过提取MySQL中所需信息来进行统计绘制而成的图或表。

使用第三方库pyecharts或者matplotlib绘制直方图、饼图、折线图、

散点图、日历图等等,其中还有一些特别的图,如中国地图绘制、广州省图绘

制或者词云图。将枯燥无味的文字和数字转变为各种形状的图案,也是人们智

慧的发展。

3数据采集

3.1店铺信息数据爬取分析

打开汉堡王官网页面,进入餐厅页面(url为

/restaurant/index.html),如图3-1。

6

湖南商务职业技术学院毕业设计

图3-1汉堡王数据网站页面

F12打开网页源代码选择Netwrok,选择Fetch/XHR文件,找到存储店铺

信息的文件并且选择Headers。随意点击城市和地级市,观察Headers中的

ResquestURL中的变化,根据页面、省份和城市不同来改变url不一样,并且

获得不同店铺信息。将店铺信息存储到excel表格中,进行数据清洗后导入

MySQL。

图3-2查看url变化

7

湖南商务职业技术学院毕业设计

3.2城市数据采集页面分析

首先我们通过谷歌的浏览器来查找汉堡王的官方网页,然后点击网页中的

餐厅页面来观察数据情况图3-1,其中url是

/restaurant/index.html。

在网页中点击切换城市观察网页网址的变化,发现未改变网站如图3-2。

在图3-3随意选择省份和地级市,从而观察网站网址没有改变。

图3-3点击切换城市

在图3-3页面中动态点击选择省份和选择地级市从而获取分布了汉堡王的

城市有哪些。F12查看网页源代码,选择省份和地级市观察网页源代码变化,

并且查找出数据所在位置,如图3-4。获取汉堡王全国所有城市信息,按照

txt文件保存。

8

湖南商务职业技术学院毕业设计

图3-4动态爬取城市数据

3.3字段数据分析

用selenium库中webdriver来动态获取城市信息数据,打开网页源代码

定位到切换城市和切换地级市的部分。可以发现省份部分未点开时数据是隐藏

的,需要点击箭头展开才能在网页源代码中看见汉堡王所分布的省份信息(如

图3-5),将各省份使用列表储存。

循环遍历省份列表,通过text()方法点击省份后,点击切换地级市的箭

头,展开对应省份的不同地级市(如图3-6),将地级市用列表存储。在储存城

市信息的最后,以省份为键地级市列表为值存入字典中。根据网页特点来爬取

页面数据将最后字典写入txt格式的文件中。

动态变化url中的省份、地级市和页面字段获得省份、地级市、店铺名

称、店铺地址、营业时间、店铺电话、早餐配置和储蓄卡字段,并且保存到全

国汉堡王店铺信息.xls文件中。

9

湖南商务职业技术学院毕业设计

图3-5省份信息

图3-6地级市数据

3.4爬取城市信息编程实现

将文件所需的库导入python文件中,如图3-7

10

湖南商务职业技术学院毕业设计

图3-7getCity导入库

使用库打开一个url为/restaurant/index.html

的Chrome页面,并且等待直到页面完全加载出现(如图3-8),运用selenium

库来动态爬取使用城市的数据。

图3-8等待数据

代码实现如下:

#@Author:田嘉良

#@File:getCity.py

#@software:PyCharm

importjson

fromseleniumimportwebdriver

fromselenium.webdriver.support.uiimportWebDriverWait

fromselenium.webdriver.supportimportexpected_conditionsasEC

frommon.byimportBy

frommon.action_chainsimportActionChains

driver=webdriver.Chrome()

url='/restaurant/index.html'

driver.get(url)

driver.maximize_window()

wait=WebDriverWait(driver,10)

wait.until(EC.presence_of_element_located((By.CLASS_NAME,'current_ci

ty')))

#点开切换城市选项卡

c=driver.find_element(By.XPATH,'//div[@class="current_city"]/a')

11

湖南商务职业技术学院毕业设计

current_city=ActionChains(driver).click(c).perform()

#点击选择省份箭头

selection=driver.find_elements(By.XPATH,'//span[@class="select2-

selection__arrow"]')

ActionChains(driver).click(selection[0]).perform()

#读取省份名称

option=driver.find_elements(By.XPATH,'//li[@class="select2-

results__option"]')

print(type(option),len(option))

all_province=[]

foroinoption:

all_province.append(o.text)

print(all_province)

getCitys={}

forainall_province:

pro=driver.find_element(By.XPATH,'//ul[@class="select2-

results__options"]/li[text()="{}"]'.format(a))

ActionChains(driver).click(pro).perform()

ActionChains(driver).click(selection[1]).perform()

#读取各省份对应的城市名称

citys=driver.find_elements(By.XPATH,'//ul[@class="select2-

results__options"]/li')

c=[]

forjincitys[1:]:

c.append(j.text)

getCitys[a]=c

ActionChains(driver).click(selection[0]).perform()

print(getCitys)

print(type(getCitys))

driver.close()

withopen('getCitys.txt','w',encoding='utf-8')asf:

json.dump(getCitys,f,ensure_ascii=False,indent=4)

在得到汉堡王全国分布的城市之后,再来爬全国店铺名称、地址和电话等

相关信息。先导入所需python库,如图3-9。

12

湖南商务职业技术学院毕业设计

3-9所需库

使用json.load()方法打开getCitys.txt文件,循环遍历字典中的key和

遍历key的每一个列表值,从而的到店铺信息的url,设置请求头部模拟成浏

览器来访问,以json文件显示存,从json文件中获得总店铺数量并且进行计

算得出店铺页面数量,如图3-10。

3-10获得json

根据前面分析进行爬虫,将数据逐条并且保存在xls表格中,完整代码如

下所示:

@Author:田嘉良

#@File:hamburger.py

#@software:PyCharm

importrequests

importjson

importxlwt

withopen('../City_Data/getCitys.txt','r',encoding='utf-8')asf:

data=json.load(f)

shopDatas=[]

forpindata.keys():

forcindata[p]:

13

湖南商务职业技术学院毕业设计

#获取每个城市店铺信息的page数量

url='/restaurant/getMapsListAjax?page={}&store

Province={}&storeCity={}&localSelect=&search='.format('1',p,c)

header={

'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;

x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/

Safari/537.36'

}

res=requests.get(url,headers=header)

js=res.json()

page_num=int(js['data']['total'])/5

if(int(page_num)_num==0):

page_num=int(page_num)

else:

page_num=int(page_num)+1

#循环遍历每个城市的每个page的信息

forninrange(1,page_num+1):

page_url=

'/restaurant/getMapsListAjax?page={}&storeProv

ince={}&storeCity={}&localSelect=&search='.format(n,p,c)

page_header={

'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;

x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/

Safari/537.36'

}

citydata=requests.get(page_url,headers=page_header).json()

#print(citydata)

storeShops=citydata['data']['data']

forshopinstoreShops:

d=[]

d.append(shop['storeProvince'])

d.append(shop['storeCity'])

d.append(shop['storeName'])

d.append(shop['storeAddress'])

d.append(shop['storeBusinessHours'])

d.append(shop['storePhone'])

d.append(int(shop['hasBreakfast']))

d.append(int(shop['useCard']))

shopDatas.append(d)

foriinshopDatas:

14

湖南商务职业技术学院毕业设计

print(i)

col=['省份','地级市','店铺名称','店铺地址','营业时间','店铺电话','早

餐配置','储蓄卡功能']

shopDatas.insert(0,col)

book=xlwt.Workbook(encoding="utf-8")

sheet1=book.add_sheet("全国汉堡王店铺信息",cell_overwrite_ok=True)

forrowinrange(0,len(shopDatas)):

forcinrange(0,len(col)):

sheet1.write(row,c,shopDatas[row][c])

book.save("全国汉堡王店铺信息.xls")

4数据清洗与处理

在得到全国店铺信息之后,我们需要对初始信息进行数据清洗和查看。确

定获得的数据是否存在全行空值和无效的数据。进行数据清洗将不相关或者有

问题的记录进行筛选清除。完成清洗地数据会提高工作效率和信息得到更高利

用率。

此次程序中要进行数据检查是否有无效数据。在汉堡王官网中有些店铺没

有电话或者营业时间会存在,所以在清洗过程中要查看是否全行为空值。在根

据不同的数据进行不同筛选。

4.1数据清洗

在JupyterNotebook中读取excel数据表,对原始数据进行清洗,判断

是否存在无效值、全行空值或者对特定列重复值。在全国汉堡王店铺信息表中

发现无全行为空的值,对店铺地址该列进行重复值的判断发现表格中存在重复

值,按照保留第一次出现的重复数据删除其他行的原则清洗数据。将清洗完成

的数据进行储存到MySQL创建的表格中,以便于后期可视化画图所需。

4.2储存数据

利用不同的库来存储数据,并且数据存储的文件也存在很多种类,例如常

见后缀为txt记事本、csv、xls和xlsx的文件、json文件或者存储在MySQL

数据库的表格中。其中记事本和文件形式相对MySQL数据库的内存较小。其中

数据库也分为关系型数据库和非关系型数据库,常用的关系型数据库有Oracle

和MySQL,操作起来很便捷、容易查询并且维护等特点也是其优点。这次所使

15

湖南商务职业技术学院毕业设计

用保存数据的有三种:记事本、excel和MySQL。

其中记事本用于存储各省份城市数据,以省份作键其地级市为值。excel

存储为清洗之前的数据,存储省份、地级市、店铺名称、店铺地址、营业时

间、店铺电话、早餐配置、储蓄卡功能字段。在NavicatPremium12创建好

数据库和表,jupyternotebokk编写代码保存完成清洗的最终信息至表中。

4.3编程实现

在MySQL命令列界面中创建数据库,如图4-1。USEburgerking语句切换

数据库

图4-1创建数据库

在burgerking数据库下创建globalstore表,如图4-2。

图4-2创建表

库和表的准备工作完成之后,在jupyternotebook工具中将数据进行清

洗,找出重复值或者全行为空值的行进行删除,如图4-3和4-4所示。

16

湖南商务职业技术学院毕业设计

图4-3读初始数据

图4-4数据清洗过程

图4-5所示连接数据库,用insertinto语句逐条插入数据。

17

湖南商务职业技术学院毕业设计

图4-5MySQL存储

5数据统计和可视化分析

5.1数据准备

5.1.1中国地图绘制

PyCharm创建一个新python文件,将所需库导入(图5-1)。在用pymysql

库的方法来读取特定globalstore表中的数据,因为是要对汉堡王在全国按照

省份来统计数量,所以特定取省份这列来进行统计计算(图5-2)。

图5-1数据准备页面

18

湖南商务职业技术学院毕业设计

图5-2各省份分布情况

在统计好汉堡王店铺各省份分布情况之后,来用pyecharts.charts的Map

绘制中国地图,并且保存至名为globalMap.html网页,使用Chrome浏览器打

开查看。完整代码如下:

#@Author:田嘉良

#@File:ChinaMap.py

#@software:PyCharm

importpymysql

frompyecharts.chartsimportMap

frompyechartsimportoptions

fromcollectionsimportCounter

db=pymysql.connect(host='localhost',port=3306,user="root",passwd='',

database='burgerking')

c=db.cursor()

sql='selectprovincefromglobalstore'

c.execute(sql)

mit()

total=c.fetchall()

#将数据转化为列表类型再统计各省分布数量

lists=[]

foriintotal:

lists.append(i[0])

count=Counter(lists)

p=[list(z)forzinzip(count.keys(),count.values())]

#绘制全国分布地图

defglobalMap()->Map:

c=(

Map(

init_opts=options.InitOpts(width="1000px",height='600px')

19

湖南商务职业技术学院毕业设计

)

.set_global_opts(

title_opts=options.TitleOpts(title="汉堡王在全国省份分布

情况"),

visualmap_opts=options.VisualMapOpts(

min_=min(count.values()),

max_=max(count.values()),

range_text=['数量分布',''],

pos_top="middle",

pos_left="left",

orient='vertical'

)

)

.add(

series_name='最多分布',

data_pair=p,

maptype='china',

is_map_symbol_show=False

)

)

returnc

globalMap().render("globalMap.html")

print("全国各省汉堡王数量分布情况地图表已完成")

5.1.2提供早餐的店铺占比饼图绘制

根据是否提供早惨来绘制饼图分析,先导入画图所需的库并且连接数据

库,使用sql语句获取所需数据情况,完整代码如下:

#@Author:田嘉良

#@File:pie.py

#@software:PyCharm

importpymysql

importmatplotlib.pyplotasplt

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus']=False

db=pymysql.connect(host="localhost",port=3306,user="root",passwd="",

database="burgerking")

20

湖南商务职业技术学院毕业设计

c=db.cursor()

sql="selecthasBreakfastfromglobalstore"

c.execute(sql)

mit()

dict={'提供早餐':0,'不提供早餐':0}

foriinc.fetchall():

if(i[0]==1):

dict['提供早餐']=dict['提供早餐']+1

else:

dict['不提供早餐']=dict['不提供早餐']+1

label=['提供早餐','不提供早餐']

plt.pie(dict.values(),labels=label,autopct='%1.1f%%',textprops={'fon

tsize':12,'color':'black'},startangle=155)

plt.axis('auto')

plt.title('店铺是否提供早餐占比图')

plt.show()

5.1.3江苏省地级市分布绘制

在中国地图图表中得出江苏省是分布数量最多的一个省份,所以对江苏省

进行更加详细的分析。通过条形图来观察其地级市的分布情况。新建一个

python文件然后导入绘制条形图所需库,如图5-3。

图5-3各省份分布情况

从数据库的表中获得特定province=”江苏省”,然后对city来进行统计

分析。Pycharts.charts的Bar来绘制条形图,存在名为jiangsu.html的网

页。完整编程如下:

#@Author:田嘉良

#@File:JiangSuBar.py

#@software:PyCharm

importpymysql

fromcollectionsimportCounter

21

湖南商务职业技术学院毕业设计

frompyecharts.chartsimportBar

frompyechartsimportoptionsasopts

db=pymysql.connect(host='localhost',port=3306,user="root",passwd='',

database='burgerking')

c=db.cursor()

sql='selectcityfromglobalstorewhereprovince="江苏省"'

c.execute(sql)

mit()

jiangsu=c.fetchall()

lists=[]

forjinjiangsu:

lists.append(j[0])

d=Counter(lists)

x=list(d.keys())

y=list(d.values())

#绘制江苏省各市分布情况

defjiangsu_Bar()->Bar:

c=(

Bar()

.add_xaxis(x)

.add_yaxis("各市汉堡王店铺数量",y)

.reversal_axis()

.set_global_opts(

title_opts=opts.TitleOpts(title="江苏省各市汉堡王店铺分

布数量"),

toolbox_opts=opts.ToolboxOpts(is_show=True),

legend_opts=opts.LegendOpts(is_show=True),

xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(position="lef

t"))

)

.set_series_opts(

label_opts=opts.LabelOpts(position="right")

)

)

returnc

jiangsu_Bar().render("jiangsu.html")

print("江苏省地级市的数量分布图完成")

22

湖南商务职业技术学院毕业设计

5.1.4是否可使用储蓄卡分析

此图是将各省份的能使用储蓄卡店铺和不能使用的店铺数量分别进行统

计,通过条形图的形式绘制数据,进而分析储蓄卡功能是否是一个普遍现象还

是比较稀有。

首先通过useCard的不同来查询并且得到不同省份不同数量,在Mysql表

格中useCard为0的是没有储蓄卡功能、1是有储蓄卡功能。在能使用和不能

使用的数据中,都存在对方所没有的省份名称,使用if语句来将不存在的就

为0,最后以省份名称为键列表为值的字典保存处理完成的数据,列表第一个

元素为无储蓄卡功能的店铺数量。最后来绘制以省份不同来统计是否有储蓄卡

功能的条形图。

代码如下:

#@Author:田嘉良

#@File:useCard.py

#@software:PyCharm

frompyechartsimportoptionsasopts

frompyecharts.chartsimportBar,Grid

importpymysql

db=pymysql.connect(host="localhost",port=3306,user="root",passwd="",

database="burgerking")

c=db.cursor()

sql="selectprovincefromglobalstore"

c.execute(sql)

mit()

province=dict()

foriinc.fetchall():

province[i[0]]=[]

sql2='selectprovince,count(*)fromglobalstorewhereuseCard=0

groupbyuseCard,province'

c.execute(sql2)

mit()

nouse=dict()

foriinc.fetchall():

nouse[i[0]]=i[1]

sql3="selectprovince,count(*)fromglobalstorewhereuseCard=1

groupbyuseCard,province"

c.execute(sql3)

23

湖南商务职业技术学院毕业设计

mit()

use=dict()

foriinc.fetchall():

use[i[0]]=i[1]

forpinprovince.keys():

l=list()

if(pnotinnouse.keys()):

l.append(0)

else:

l.append(nouse[p])

if(pnotinuse.keys()):

l.append(0)

else:

l.append(use[p])

province[p]=l

print(province)

defbar()->Bar:

c=(

Bar(init_opts=opts.InitOpts(height="600px"))

.add_xaxis(list(province.keys()),)

.add_yaxis("不可以使用",[i[0]foriinprovince.values()])

.add_yaxis("可以使用",[i[1]foriinprovince.values()])

.set_global_opts(

title_opts=opts.TitleOpts(title="各省份是否可以使用储蓄

卡的店铺数量"),

toolbox_opts=opts.ToolboxOpts(),

legend_opts=opts.LegendOpts(is_show=True),

xaxis_opts=opts.AxisOpts(name='x',axispointer_opts=opts.AxisPointerO

pts(is_show=True),axislabel_opts={"rotate":45,"interval":0})

)

.set_series_opts(

markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(name='min

',type_='min'),

opts.MarkPointItem(name='max',type_='max')])

)

)

returnc

grid=Grid(init_opts=opts.InitOpts(height="600px"))

grid.add(bar(),grid_opts=opts.GridOpts(pos_bottom="20%"))

24

湖南商务职业技术学院毕业设计

grid.render("各省份是否有储蓄卡功能分析条形图.html")

5.2数据展示

5.2.1中国地图省份分布统计

图5-4地图绘制展示

把从globalstore表中查找出来的数据进行统计与处理,根据省份不同来

统计数量,统计完成后使用数据用Map绘制中国地图,地图完成如图5-4。从

图中可以看出每个省份分布数量不一样,从单个来看最多的有209个是江苏

省,最少的有0个是新疆维吾尔自治区和青海省;从局部地区来看分布较多的

是东南方向的省份,其中东南方向沿海省份分布较多,西北的地势复杂经济较

落后的地区分布较少。

由上述分布分析得知沿海省份城市经济也较为发达、城市规模也更加先

进,从而导致地区的店铺分布也多,店铺也带动的地区实力所以两者是相会作

用的情况下越来越繁华昌盛。从数据总数来看全国店铺总共有1843条数据,

由此可见汉堡王连锁店在中国食品产业发展很好,广泛分布在各地。也足以证

明其市场需求量也很大,资产发展状况朝好的方向发展。对于该连锁店往后可

以向北方地区扩大。

25

湖南商务职业技术学院毕业设计

5.2.2是否提供早餐的占比饼图分析

图5-6是否提供早餐占比饼图

从图5-6中看出全国店铺中提供早餐这项服务占比是49.8%和50.2%,相

当于1:1,比例一样多,因此早餐服务并不是汉堡王店铺中必要服务。

5.2.3江苏省地级市分布情况

图5-5江苏省地级市分布情况

筛选省份为江苏省并且对其分布的地级市进行统计的绘制出条形图,图5-

5。从中得出结论:南京市分布数量最多,连云港市分布数量最少,汉堡王在

26

湖南商务职业技术学院毕业设计

江苏省分布总数为209家店铺。南京市作为江苏省的省会,其综合实力宏厚。

首先南京市作为江苏省的省会是省的政治中心,会拥有更好的政策和资源,人

口的流动也大多数在省会,对于餐饮业是很重要的一点。

5.2.4各省份储蓄卡功能的统计数据与分析

图5-7储蓄卡功能数据展示页面

根据每个省份中具备储蓄卡功能和不具备储蓄卡功能的店铺数量进行统计

和分析绘图的结果是如图5-7,从图中得知在不可以用储蓄卡的店铺中最少的

是0、最多的是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论