當前位置:
首頁 > 科技 > Python 爬下的必勝客數據背後,藏著什麼樣的信息?

Python 爬下的必勝客數據背後,藏著什麼樣的信息?

筆者從大學開始就接觸 Python,起初是好奇為什麼 Python 不需要瀏覽器就能抓取網站數據。深感奇妙之餘,也想親身體驗這種抓取數據的樂趣,所以寫了很多爬蟲程序。

後隨著知識面的拓展,開始了解到數據分析這一領域,方知道爬取到的數據背後原來還隱藏著一些信息。自己也是在學習這方面的相關知識。本文算是數據分析的處女稿,主要內容是從數據中提取出必勝客餐廳的一些信息。

環境搭建

百度前端技術部開源一個基於 Javascript 的數據可視化圖表庫。其名字為 ECharts。它算是前端數據可視化的利器,能提供直觀、生動、可交互、可個性化定製的數據可視化圖表。

國內有個大神突發奇想,這麼好用的庫如果能和 Python 結合起來就好了。於是乎,pyecharts 庫應運而生。因此,pyecharts 的作用是用於生成 Echarts 圖表的類庫。本文中的所有圖標,都是利用 pyecharts 生成的。

安裝該庫也很簡單,使用 pip 方式安裝。

pip install pyecharts

數據清洗

數據清洗工作是數據分析必不可少的步驟。這一步是為了清洗一些臟數據。因為可能網站本身就有空數據,或者匹配抓取網站信息時,有些混亂的數據。這些都需要清除掉。

我之前是將數據寫到一個 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 轉化為元組,然後根據 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

到此,數據工作已經完成。

數據分析

我們已經拿到了經過清洗的數據,我們簡單對數據進行列印,然後繪製直方圖。

defrender_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")

繪製出來的結果如下:

難看出,一線城市擁有必勝客的餐廳數比較多,省會城市擁有餐廳數要比非省會城市要多

我們繼續繪製餅狀圖,看看北上廣深的餐廳數在全國的佔比。

defrender_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%。說明必勝客餐廳不僅主打大城市路線,還往二三四線城市發展,擴展領域。

作者:極客猴,熱衷於 Python,目前擅長於利用 Python 製作網路爬蟲以及 Django 框架。

聲明:本文為作者投稿,版權歸其個人所有。

熱 文推 薦

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

高達800萬次下載量的npm包被黑客篡改代碼,你的設備或正成挖礦機
程序員版《On Call 24 小時》

TAG:CSDN |