使用 Python 分析全国所有必胜客餐厅

题图:by thefolkpr0ject from Instagram

阅读文本大概需要 7 分钟。

在之前的一篇文章中,我讲到如何爬取必胜客官网中全国各大城市餐厅的信息。虽然餐厅数据信息被抓取下来,但是数据一直在硬盘中“躺尸”。不曾记得,自己已经第 n 次这么做了。说到这里,要追溯到自己的大学时光。

自己从大学开始就接触 Python,当时是自己的好奇心很强烈。好奇为什么 Python 不需要浏览器就能抓取网站数据。内心感叹到,这简直是太妙了。自己为了体验这种抓取数据的乐趣,所以写了很多的爬虫程序。

随着自己知识面地拓展,自己了解到数据分析这领域。自己从而才知道爬取到的数据,原来背后还隐藏的一些信息。自己也是在学习这方面的相关知识。这篇文章算是数据分析的处女稿,主要内容是从数据中提取出必胜客餐厅的一些信息。

01

环境搭建

百度前端技术部开源一个基于 Javascript 的数据可视化图表库。其名字为 ECharts。它算是前端数据可视化的利器,能提供直观,生动,可交互,可个性化定制的数据可视化图表。

国内有个大神突发奇想,这么好用的库如果能和 Python 结合起来就好了。于是乎,pyecharts 库就应运而生。因此,pyecharts 的作用是用于生成 Echarts 图表的类库。本文中的所有图标,自己都是利用 pyecharts 生成的。

安装该库也很简单,使用 pip 方式安装。

pip install pyecharts

02

数据清洗

数据清洗工作是数据分析必不可少的步骤。这一步是为了清洗一些脏数据。因为可能网站本身就有空数据,或者匹配抓取网站信息时,有些混乱的数据。这些都需要清除掉。

我之前是将数据写到一个 json 文件中,我先将数据读取出来。然后把 json 文本数据转化为字典类型。

def get_datas():
    """ 从文件中获取数据 """
    file_name = 'results.json'
    with open(file_name, 'r', encoding='UTF-8') as file:
        content = file.read()
        data = json.loads(content, encoding='UTF-8')
        # print(data)
    return data

接着对字典进行遍历, 统计每个城市的餐厅总数。

def count_restaurants_sum(data):
    """ 对字典进行遍历, 统计每个城市的餐厅总数 """
    results = {}
    for key, value in data.items():
        results[key] = len(value)
        # print(key, len(value))
    return results

再将字典中的每个 key-value 转化为元组,然后根据 value 进行倒序排序。

restaurants_sum = sorted(restaurants_sum.items(), key=lambda item: item[1], reverse=True)

最后根据显示结果,手动删除一些脏数据。

def clean_datas(data):
    """
    清除脏数据。
    经过分析发现 ('新区', 189), ('南区', 189), ('朝阳', 56) 是脏数据, 必胜客官网的地区选项中就有这三个名字
    [('新区', 189), ('上海市', 189), ('南区', 189), ('北京市', 184), ('深圳', 95),
     ('广州', 86), ('杭州', 78), ('天津市', 69), ('朝阳', 56), ('苏州', 54)]
    """
    data.remove(('新区', 189))
    data.remove(('南区', 189))
    data.remove(('朝阳', 56))
    return data

到此,数据工作已经完成。

03

数据分析

我们已经拿到了经过清洗的数据,我们简单对数据进行打印,然后绘制直方图。

def render_top10():
    """
    绘制直方图显示 全国必胜客餐厅总数 Top 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("总数", attr, values, is_stack=True, is_more_utils=True)
    bar.render("render_bar.html")

绘制出来的结果如下:

不难看出,一线城市拥有必胜客的餐厅数比较多,省会城市拥有餐厅数要比非省会城市要多。

我们继续绘制饼状图,看看北上广深的餐厅数在全国的占比。

def render_top10_percent():
    """
    绘制饼状图 显示北上广深餐厅数在全国中的比例
    """
    configure(global_theme='macarons')
    attr = ["上海", "北京", "深圳", "广州", "其他城市"]
    value = [189, 184, 95, 86, 1893]  # 根据 count_other_sum() 计算出来的
    pie = Pie("北上广深餐厅数的占比")
    pie.add("", attr, value, is_label_show=True, is_more_utils=True)
    pie.render("render_pie.html")

绘制出来的结果如下:

从数据上看,北上广深的餐厅数占据全国餐厅数的 22.64%。其他二三线城市共占据 77.36%。说明必胜客餐厅不仅主打大城市路线,还往二三四线城市发展,扩展领域。

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

原文发布于微信公众号 - 极客猴(Geek_monkey)

原文发表时间:2018-11-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构说

程序员练级攻略(2018):技术资源集散地

其实还有很多不错的博客,不过,现在国外不错的博客都在一个叫 Medium 的网站,我也发现我 Google 很多东西时都会到这个网站上。这个网站上的内容不只有技...

1.1K20
来自专栏北京马哥教育

7个Python实战项目代码,让你分分钟晋级大神!

"Python的应用十分广泛,今天我们来分享7个Python实战项目代码,希望你有所收获。

34230
来自专栏tkokof 的技术,小趣及杂念

也说棋类游戏

之前自己编写过一点关于棋类游戏的代码,所以对于这类游戏的大致构成也算是有一些肤浅的认识,前一阵子突然想到应该将这些个零散知识好好总结一番,以算作为自己学习的一...

17920
来自专栏华章科技

高考不会就选“C”?大数据告诉你这事不靠谱

导读:从小就听说,选择题遇到不会的,就按照这个技巧选择:三短一长选长的,三长一短选短的;两长两短选择B,长短不齐就选BC。

5710
来自专栏SeanCheney的专栏

2018-05-04 Python的“江湖地位”京东 计算机与互联网当当 计算机/网络中国亚马逊 计算机与互联网美国亚马逊 Computer Science英国亚马逊 Computer Scien

22550
来自专栏北京马哥教育

抓取链家官网北京房产信息并用python进行数据挖掘

从2014年对楼市的普遍唱衰,到2015年的价格回暖,到底发生了怎样的改变?本文就尝试通过大数据来和丰富的图表,为大家展现数据背后的数据。 数据采集...

421130
来自专栏java一日一条

硅谷科技巨头最刁钻面试题集锦

如果你擅长云文件存储方面的工作,你可能非常想进入谷歌、微软以及 Dropbox 等公司。但是他们都是硅谷中最受欢迎的科技公司,非常难以进入。美国主流网络媒体 B...

11210
来自专栏机器人网

涨姿势 | 哈佛大学原创的开源软体机器人套件

神马是软体机器人? 软体机器人是一个新兴机器人学领域。它是由生物学得到启发,利用柔性、可延展材料制成的结构结合而成的机器人。许多动植物都有柔性、弹性的身体结构,...

390110
来自专栏目标检测和深度学习

期刊编辑:审稿时不会从头看到尾!所以论文写作应该这样……

11120
来自专栏量子位

谷歌AI魔镜:看你手舞足蹈,就召唤出8万幅照片学你跳 | TensorFlow.js

有一点点可能,是在玩谷歌发布的又一个AI游戏,名字叫Move Mirror (动镜) 。

15320

扫码关注云+社区

领取腾讯云代金券