当前位置: 首页 > 科技观察

使用Python分析统计必胜客餐厅

时间:2023-03-17 18:23:46 科技观察

之前一篇文章,100行代码爬取了全国必胜客餐厅的所有信息。在必胜客官网上讲了如何爬取全国各大城市的餐厅信息。虽然抓到了餐厅的数据信息,但是数据已经“躺死”在硬盘里了。我不记得了,我已经第n次这样做了。说到这里,又要回到我的大学时代了。我从大学开始接触Python,当时好奇心很强。很好奇为什么Python可以在不需要浏览器的情况下抓取网站数据。我在心里感叹,这简直太棒了。为了体验抓取数据的乐趣,我写了很多爬虫。随着知识的扩展,我了解了数据分析领域。这才知道爬取的数据,背后隐藏着一些信息。我自己也在学习。这篇文章可以算是数据分析的初稿。主要内容是从数据中提取必胜客餐厅的一些信息。01环境搭建百度前端技术部开源了一个基于Javascript的数据可视化图表库。它的名字叫ECharts。可以说是前端数据可视化的利器,可以提供直观、生动、交互、可定制的数据可视化图表。国内的一位大神突然想到,这么简单易用的库能和Python结合起来就好了。于是乎,pyecharts库应运而生。所以pyecharts的作用是一个生成Echarts图表的类库。本文所有图标均由pyecharts生成。安装库也很简单,使用pip安装即可。pipinstallpyecharts02数据清洗数据清洗是数据分析中必不可少的一步。这一步是清理一些脏数据。因为网站本身可能存在空数据,或者在匹配爬取网站信息时出现一些混淆数据。这些都需要去除。我之前把数据写成json文件,我先把数据读出来。然后将json文本数据转成字典类型。defget_datas():"""从文件中获取数据"""file_name='results.json'withopen(file_name,'r',encoding='UTF-8')asfile:content=file.read()data=json.loads(content,encoding='UTF-8')#print(data)returndata然后遍历字典,统计每个城市的餐厅总数。defcount_restaurants_sum(data):"""遍历字典,统计每个城市的餐厅总数"""results={}forkey,valueindata.items():results[key]=len(value)#print(key,len(value))returnresults将字典中的每一个key-value转换成一个tuple,然后根据value进行倒序排序。restaurants_sum=sorted(restaurants_sum.items(),key=lambdaitem:item[1],reverse=True)最后根据显示的结果手动删除一些脏数据。defclean_datas(data):"""清除脏数据,经过分析发现('新区',189),('南区',189),('朝阳',56)是脏数据,即必胜客官网的区域选项中包含三个名称[('新区',189),('上海',189),('南区',189),('北京',184),('深圳',95),('广州',86),('杭州',78),('天津',69),('朝阳',56),('苏州',54)]"""data.remove(('新区',189))data.remove(('南区',189))data.remove(('朝阳',56))returndata至此,数据工作已经完成。03数据分析我们已经得到了清洗后的数据,我们简单的打印数据,然后画直方图。defrender_top10():"""绘制直方图显示全国必胜客餐厅总数排名前10位的城市根据清洗数据的结果,Top城市如下('上海',189),('北京',184),('深圳',95),('广州',86),('杭州',78),('天津',69),('苏州',54),('西安',52),('武汉',51),('成都',48)"""attr=["上海","北京","深圳","广州","杭州","天津","苏州","西安","武汉","成都"]values=[189,184,95,86,78,69,54,52,51,48]bar=Bar("披萨数量全国各大城市的小屋餐厅")bar.add("Total",attr,values,is_stack=True,is_more_utils=True)bar.render("render_bar.html")得出如下结果:不难看到一线城市的必胜客餐厅多,省会城市的餐厅比非省会城市多。我们继续画饼图,看看北京、上海、广州、深圳的餐厅数量占全国的比例。defrender_top10_percent():"""画饼图显示北上广深餐厅数量占全国的比例。"""configure(global_theme='macarons')attr=["上海","北京","深圳","广州","其他城市"]value=[189,184,95,86,1893]#根据count_other_sum()计算的饼图=Pie("北京、上海、广州深圳")pie.add("",attr,value,is_label_show=True,is_more_utils=True)pie.render("render_pie.html")得出如下结果:从数据来看,餐厅数量北京、上海、广州和深圳的餐厅数量占全国的22.64%。其他二三线城市占比77.36%。说明必胜客餐厅不仅着眼于大城市,还向二三四线城市拓展领域。作者:极客猴子,热衷于Python,目前擅长使用Python制作网络爬虫和Django框架。