用Python分析统计必胜客餐厅

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

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

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

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

01环境搭建

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

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

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

  1. pip install pyecharts 

02数据清洗

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

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

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

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

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

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

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

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

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

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

03数据分析

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

  1. def render_top10(): 
  2.     ""
  3.     绘制直方图显示 全国必胜客餐厅总数 Top 10 的城市 
  4.     根据清洗过后数据的结果, Top 城市如下 
  5.     ('上海市', 189), ('北京市', 184), ('深圳', 95), ('广州', 86), ('杭州', 78), 
  6.     ('天津市', 69), ('苏州', 54), ('西安', 52), ('武汉', 51), ('成都', 48) 
  7.     ""
  8.     attr = ["上海""北京""深圳""广州""杭州""天津""苏州""西安""武汉""成都"
  9.     values = [189, 184, 95, 86, 78, 69, 54, 52, 51, 48] 
  10.     bar = Bar("全国各大城市必胜客餐厅数量排行榜"
  11.     bar.add("总数", attr, values, is_stack=True, is_more_utils=True
  12.     bar.render("render_bar.html"

绘制出来的结果如下:

用Python分析统计必胜客餐厅

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

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

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

绘制出来的结果如下:

用Python分析统计必胜客餐厅

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

作者:极客猴,热衷于 Python,目前擅长利用 Python 制作网络爬虫以及 Django 框架。

责任编辑:未丽燕 来源: Python中文社区
相关推荐

2018-11-26 18:57:58

Python数据分析爬取

2023-04-11 22:03:36

2010-09-02 12:30:40

2016-12-02 20:27:27

Yelp数据可视化机器学习算法

2009-07-03 17:06:41

面试素质

2020-07-23 09:15:25

Python机器学习聚类分析

2023-03-16 08:00:00

机器学习深度学习人工智能

2011-11-24 09:04:26

灵客风优惠券

2019-07-11 10:52:02

Python统计数据

2022-05-22 07:32:36

RPython分析工具

2015-08-19 09:40:51

统计分析

2022-06-24 09:58:35

大数据JavaPython

2020-12-31 10:24:37

Python元旦旅游代码

2021-08-04 23:15:05

机器人人脸识别无人餐厅

2023-01-04 07:49:56

物联网泄漏传感器

2018-06-28 11:15:42

Python爬虫小龙虾

2015-03-09 10:18:23

2012-10-09 09:28:48

jQuery Mobi餐厅订餐应用

2020-08-25 18:10:22

Python代码线性回归

2021-06-10 09:53:04

数据统计统计分析数据
点赞
收藏

51CTO技术栈公众号