新聞中心
在之前的一篇文章100行代碼爬取全國(guó)所有必勝客餐廳信息,我講到如何爬取必勝客官網(wǎng)中全國(guó)各大城市餐廳的信息。雖然餐廳數(shù)據(jù)信息被抓取下來(lái),但是數(shù)據(jù)一直在硬盤(pán)中“躺尸”。不曾記得,自己已經(jīng)第 n 次這么做了。說(shuō)到這里,要追溯到自己的大學(xué)時(shí)光。

創(chuàng)新互聯(lián)建站專(zhuān)注于網(wǎng)站建設(shè)|網(wǎng)站建設(shè)維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋建筑動(dòng)畫(huà)等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷(xiāo)售的產(chǎn)品,結(jié)合品牌形象的塑造,量身設(shè)計(jì)品質(zhì)網(wǎng)站。
自己從大學(xué)開(kāi)始就接觸 Python,當(dāng)時(shí)是自己的好奇心很強(qiáng)烈。好奇為什么 Python 不需要瀏覽器就能抓取網(wǎng)站數(shù)據(jù)。內(nèi)心感嘆到,這簡(jiǎn)直是太妙了。自己為了體驗(yàn)這種抓取數(shù)據(jù)的樂(lè)趣,所以寫(xiě)了很多的爬蟲(chóng)程序。
隨著自己知識(shí)面地拓展,自己了解到數(shù)據(jù)分析這領(lǐng)域。自己從而才知道爬取到的數(shù)據(jù),原來(lái)背后還隱藏的一些信息。自己也是在學(xué)習(xí)這方面的相關(guān)知識(shí)。這篇文章算是數(shù)據(jù)分析的處女稿,主要內(nèi)容是從數(shù)據(jù)中提取出必勝客餐廳的一些信息。
01環(huán)境搭建
百度前端技術(shù)部開(kāi)源一個(gè)基于 Javascript 的數(shù)據(jù)可視化圖表庫(kù)。其名字為 ECharts。它算是前端數(shù)據(jù)可視化的利器,能提供直觀(guān),生動(dòng),可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表。
國(guó)內(nèi)有個(gè)大神突發(fā)奇想,這么好用的庫(kù)如果能和 Python 結(jié)合起來(lái)就好了。于是乎,pyecharts 庫(kù)就應(yīng)運(yùn)而生。因此,pyecharts 的作用是用于生成 Echarts 圖表的類(lèi)庫(kù)。本文中的所有圖標(biāo),自己都是利用 pyecharts 生成的。
安裝該庫(kù)也很簡(jiǎn)單,使用 pip 方式安裝。
- pip install pyecharts
02數(shù)據(jù)清洗
數(shù)據(jù)清洗工作是數(shù)據(jù)分析必不可少的步驟。這一步是為了清洗一些臟數(shù)據(jù)。因?yàn)榭赡芫W(wǎng)站本身就有空數(shù)據(jù),或者匹配抓取網(wǎng)站信息時(shí),有些混亂的數(shù)據(jù)。這些都需要清除掉。
我之前是將數(shù)據(jù)寫(xiě)到一個(gè) json 文件中,我先將數(shù)據(jù)讀取出來(lái)。然后把 json 文本數(shù)據(jù)轉(zhuǎn)化為字典類(lèi)型。
- def get_datas():
- """ 從文件中獲取數(shù)據(jù) """
- 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
接著對(duì)字典進(jìn)行遍歷, 統(tǒng)計(jì)每個(gè)城市的餐廳總數(shù)。
- def count_restaurants_sum(data):
- """ 對(duì)字典進(jìn)行遍歷, 統(tǒng)計(jì)每個(gè)城市的餐廳總數(shù) """
- results = {}
- for key, value in data.items():
- results[key] = len(value)
- # print(key, len(value))
- return results
再將字典中的每個(gè) key-value 轉(zhuǎn)化為元組,然后根據(jù) value 進(jìn)行倒序排序。
- restaurants_sum = sorted(restaurants_sum.items(), key=lambda item: item[1], reverse=True)
最后根據(jù)顯示結(jié)果,手動(dòng)刪除一些臟數(shù)據(jù)。
- def clean_datas(data):
- """
- 清除臟數(shù)據(jù)。
- 經(jīng)過(guò)分析發(fā)現(xiàn) ('新區(qū)', 189), ('南區(qū)', 189), ('朝陽(yáng)', 56) 是臟數(shù)據(jù), 必勝客官網(wǎng)的地區(qū)選項(xiàng)中就有這三個(gè)名字
- [('新區(qū)', 189), ('上海市', 189), ('南區(qū)', 189), ('北京市', 184), ('深圳', 95),
- ('廣州', 86), ('杭州', 78), ('天津市', 69), ('朝陽(yáng)', 56), ('蘇州', 54)]
- """
- data.remove(('新區(qū)', 189))
- data.remove(('南區(qū)', 189))
- data.remove(('朝陽(yáng)', 56))
- return data
到此,數(shù)據(jù)工作已經(jīng)完成。
03數(shù)據(jù)分析
我們已經(jīng)拿到了經(jīng)過(guò)清洗的數(shù)據(jù),我們簡(jiǎn)單對(duì)數(shù)據(jù)進(jìn)行打印,然后繪制直方圖。
- def render_top10():
- """
- 繪制直方圖顯示 全國(guó)必勝客餐廳總數(shù) Top 10 的城市
- 根據(jù)清洗過(guò)后數(shù)據(jù)的結(jié)果, 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("全國(guó)各大城市必勝客餐廳數(shù)量排行榜")
- bar.add("總數(shù)", attr, values, is_stack=True, is_more_utils=True)
- bar.render("render_bar.html")
繪制出來(lái)的結(jié)果如下:
不難看出,一線(xiàn)城市擁有必勝客的餐廳數(shù)比較多,省會(huì)城市擁有餐廳數(shù)要比非省會(huì)城市要多。
我們繼續(xù)繪制餅狀圖,看看北上廣深的餐廳數(shù)在全國(guó)的占比。
- def render_top10_percent():
- """
- 繪制餅狀圖 顯示北上廣深餐廳數(shù)在全國(guó)中的比例
- """
- configure(global_theme='macarons')
- attr = ["上海", "北京", "深圳", "廣州", "其他城市"]
- value = [189, 184, 95, 86, 1893] # 根據(jù) count_other_sum() 計(jì)算出來(lái)的
- pie = Pie("北上廣深餐廳數(shù)的占比")
- pie.add("", attr, value, is_label_show=True, is_more_utils=True)
- pie.render("render_pie.html")
繪制出來(lái)的結(jié)果如下:
從數(shù)據(jù)上看,北上廣深的餐廳數(shù)占據(jù)全國(guó)餐廳數(shù)的 22.64%。其他二三線(xiàn)城市共占據(jù) 77.36%。說(shuō)明必勝客餐廳不僅主打大城市路線(xiàn),還往二三四線(xiàn)城市發(fā)展,擴(kuò)展領(lǐng)域。
作者:極客猴,熱衷于 Python,目前擅長(zhǎng)利用 Python 制作網(wǎng)絡(luò)爬蟲(chóng)以及 Django 框架。
分享名稱(chēng):用Python分析統(tǒng)計(jì)必勝客餐廳
網(wǎng)站網(wǎng)址:http://fisionsoft.com.cn/article/dpdcceh.html


咨詢(xún)
建站咨詢(xún)
