来源:大数据前沿
本文多图,建议阅读10分钟。
本文以省份为界限统计了各省餐厅的推荐菜,以及餐厅品牌等信息,发现了一个可怕的事实,竟然全国人民都爱吃金针菇,也发现了很多具有“地域特色”的菜品。
早就想统计一下某团的美食数据,拖了很久,终于写代码把全国所有的美食数据抓了下来,一共有60万家餐厅。
本文以省份为界限统计了各省餐厅的推荐菜,以及餐厅品牌等信息,发现了一个可怕的事实,竟然全国人民都爱吃金针菇(see you tomorrow);也发现了很多具有“地域特色”的菜品。
快来找找你的家乡人民最爱吃的菜吧。
一. 统计概况
小编将60万餐厅在地图上进行了可视化,不过该图并没有达到我的预期效果。我认为60w数据应该比当前壮观,不过从可视化文件看上去餐厅的数量真有点“寥寥无几”,我分析了一下原因,大致是因为:
数据中的餐厅过度集中,导致可视化后亮点聚拢在一起。从地图上看,高亮地区主要集中在北京、长三角、珠三角和成渝地区。
数据的经纬度坐标精度不够,导致可视化后亮点很大程度的重叠,也有可能是我抓取的数据被投毒了。
省份维度的统计:
以下两张图分别是地图可视化图和条形图,可以看见,广东省的餐厅最多,大约有6.6万家。
总的来说沿海地区的省份餐厅数量稍微多一些,影响因素主要在于人口、餐饮业、以及互联网的普及程度,因为O2O的餐饮模式,部分地区的店铺并没有挂在网上。
城市维度的分析:
以下两张图是城市维度的可视化,很明显,第一张图中,圆圈越大代表餐厅越多,其中4座超一线城市——北上广深全部上榜。
当然另外两座城市上榜也是毫无疑问的,两座以吃著名、来了就不想走的城市——成都和重庆。
恭喜成都喜提第一!
二. 各省餐厅推荐菜
下面我们来看看各地餐厅的热门菜。
首先来看整体情况,全国餐厅中的推荐菜top100:
金针菇三个大字映入眼帘,对,金针菇是排第一的!我真的是好奇为什么,see you tomorrow 有这么大的魅力?除此之外看不出什么地域特色。
先来看看北京和上海,因为北京的外来人口较多,且各个地方的人都有,所以菜品也都比较大众,特色菜并不明显。上海我不太了解,但是在北京,酸梅汤应该是大部分餐厅都有的,麻辣香锅、宫保鸡丁、烤鸭、烤鱼,都是经常吃的。代金券这个梗我以为只有北京有,没想到上海也有哇。因为北京的O2O餐饮很发达,很多餐厅都直接把代金券写进了推荐菜里。
北京:
上海:
再来看看沿海地区,福建和广东最有特色。
福建:从菜品上来看,已经有一些沿海的味道了。
广东:牛肉丸可以理解,金针菇呢?茶位是指喝茶的地方吗?求解释。
看了沿海,我们再来看看极具特色的重庆和四川。
重庆:看着就是一股火锅的味道,是嘞,次火锅儿要次油碟,毛肚要次鲜的,吃火锅要老油,红汤锅底,无骨凤爪,耗儿鱼,鹌鹑蛋,鸭肠,麻辣牛肉不能少,吃完火锅还要吃点西瓜、喝点银耳汤。重庆——一座红彤彤的城市。
四川:和重庆一样,要吃油碟,还要吃红糖糍粑。
海南:文昌鸡是必须的;椰子饭啥味道,没吃过,不过好想吃。海南,有海鲜的味道。
下面,再来看看其他省吧!
安徽:
甘肃:
广西:青菜?
贵州:纸巾乱入了哦。
河北:小蛋糕,很可爱的感觉。
河南:烩面、凉菜、豆腐皮。
黑龙江:黑龙江人是真的很爱吃串,锅包肉和提拉米苏我是服的。
湖北:
湖南:湖南人民有点辣哦!
吉林:
江苏:
江西:
辽宁:
内蒙古:真的超级多蛋糕店哦!还有牛羊肉!
宁夏:
青海:
山东:
山西:
陕西:
天津:也是代金券的节奏哦。
西藏:好想吃下藏式火锅哦。
新疆:
云南:洋芋,好亲切,其实就是土豆的意思。
浙江:
三. 各省霸屏店铺统计
还是先来看看全国的概况:连锁店霸屏了,说实话,我还真不知道正新鸡排~
有一种预感就是接下来各省都要被正新鸡排和肯德基霸屏了,当然也会有例外。
就先拿先拿北上广来说,北京、上海、广东的外来人口相对较多,吃的东西应该比较“大杂烩”,不过还是很能看出特点,
北京:北京的呷哺呷哺到处可见,小编也吃过好多好多次了,金凤成祥、虾吃虾涮、吉野家、张亮麻辣烫,这都是围绕帝都人民红店。
还有嘉和一品,简直是小编点外卖的专用餐厅。奇怪的是,在北京没正新鸡排没上榜。
上海:正新鸡排妥妥第一,奶茶店也不少,甜点偏多。
广东:正新鸡排、肯德基、华莱士通通上榜,当然少不了的是各种茶。感觉广东人民的生活很是精致。
再来看看极具特色的重庆和四川:
重庆:一只酸奶牛和一口酸牛奶?从来没听过,求解释。
四川:还是一只酸奶牛,可能是重庆四川人民刚刚吃完火锅要喝点奶润润喉。
钢管厂五区小郡肝串串香,熟悉的感觉。
黑龙江:秋林里道斯妥妥上榜,哈哈,小编也是喝过格瓦斯吃过红肠的人。
吉林:这个很有意思啊,辣怪鸭和辣小鸭是什么关系?
我们再来看看福建和海南。
福建:向阳坊是什么?感觉很具地方特色。
海南:椰子鸡很好吃吗?小编还看到了重庆刘一手火锅,哈哈。
安徽:
甘肃:词云结果挺有意思的,店铺名字很独特。
广西:
贵州:
河北:
河南:
湖北:
湖南:前文所讲的辣椒炒肉是哪个餐厅卖的,怎么看不出来了呢?
江苏:
江西:
辽宁:
内蒙古:
宁夏:查了下,麦尔乐是一家蛋糕店。
青海:
山东:说真的,重庆鸡公煲并不是重庆菜,而是一个叫做张重庆的人发明的,重庆就这样被碰瓷了。
山西:
陕西:
天津:
西藏:
新疆:
云南:
浙江:
四. 写在最后
下面是技术实现讲解:
1. 数据抓取
本次数据抓取同样采用的是scrapy。
难点1:分析阶段,要想拿到全国全量的数据,必须要以街区为单位。主要原因是每个列表页默认只展示30页,每页大约20条消息,如果我们以城市维度去抓取,相当于每个城市只能至多拿到600个店铺的消息。
那按街区抓取是什么意思?
举个例子:
北京市-海淀区-双榆树
分别对应了:
市级行政单位-区级行政单位-街区
小编找了好多个繁华的街区查看,每个街区店铺的列表都没有超过30页,这就保证我们能拿到全量数据。
难点2:列表页只能拿到店铺的基础信息,还需要抓取店铺的详情页面,共超过60万个页面,IP封禁厉害,需要有足够多的ip和代理随机算法。
2. 可视化
本次可视化一如既往的应用echarts。
具体实现和相关的代码小编在文章《开源一段代码-微信好友分析》中已录视频进行讲解,感兴趣的朋友可以参考那篇文章,所用到的技术是一致的。
唯一一点不同是,这里的60万餐厅全量可视化用pyecharts实现不了。因为pyecharts的原理是利用python生成html和JavaScript文件,直接将数据写入html文本,生成后有几百MB的大小,打开的时候会导致浏览器崩溃,所以这里小编是用的原生的JavaScript读取Json数据文件实现。