您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何使用 Python 分析全國(guó)所有必勝客餐廳,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
我講到如何爬取必勝客官網(wǎng)中全國(guó)各大城市餐廳的信息。雖然餐廳數(shù)據(jù)信息被抓取下來,但是數(shù)據(jù)一直在硬盤中“躺尸”。不曾記得,自己已經(jīng)第 n 次這么做了。說到這里,要追溯到自己的大學(xué)時(shí)光。
自己從大學(xué)開始就接觸 Python,當(dāng)時(shí)是自己的好奇心很強(qiáng)烈。好奇為什么 Python 不需要瀏覽器就能抓取網(wǎng)站數(shù)據(jù)。內(nèi)心感嘆到,這簡(jiǎn)直是太妙了。自己為了體驗(yàn)這種抓取數(shù)據(jù)的樂趣,所以寫了很多的爬蟲程序。
隨著自己知識(shí)面地拓展,自己了解到數(shù)據(jù)分析這領(lǐng)域。自己從而才知道爬取到的數(shù)據(jù),原來背后還隱藏的一些信息。自己也是在學(xué)習(xí)這方面的相關(guān)知識(shí)。這篇文章算是數(shù)據(jù)分析的處女稿,主要內(nèi)容是從數(shù)據(jù)中提取出必勝客餐廳的一些信息。
百度前端技術(shù)部開源一個(gè)基于 Javascript 的數(shù)據(jù)可視化圖表庫(kù)。其名字為 ECharts。它算是前端數(shù)據(jù)可視化的利器,能提供直觀,生動(dòng),可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表。
國(guó)內(nèi)有個(gè)大神突發(fā)奇想,這么好用的庫(kù)如果能和 Python 結(jié)合起來就好了。于是乎,pyecharts 庫(kù)就應(yīng)運(yùn)而生。因此,pyecharts 的作用是用于生成 Echarts 圖表的類庫(kù)。本文中的所有圖標(biāo),自己都是利用 pyecharts 生成的。
安裝該庫(kù)也很簡(jiǎn)單,使用 pip 方式安裝。
pip install pyecharts
數(shù)據(jù)清洗工作是數(shù)據(jù)分析必不可少的步驟。這一步是為了清洗一些臟數(shù)據(jù)。因?yàn)榭赡芫W(wǎng)站本身就有空數(shù)據(jù),或者匹配抓取網(wǎng)站信息時(shí),有些混亂的數(shù)據(jù)。這些都需要清除掉。
我之前是將數(shù)據(jù)寫到一個(gè) json 文件中,我先將數(shù)據(jù)讀取出來。然后把 json 文本數(shù)據(jù)轉(zhuǎn)化為字典類型。
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)過分析發(fā)現(xiàn) ('新區(qū)', 189), ('南區(qū)', 189), ('朝陽', 56) 是臟數(shù)據(jù), 必勝客官網(wǎng)的地區(qū)選項(xiàng)中就有這三個(gè)名字
[('新區(qū)', 189), ('上海市', 189), ('南區(qū)', 189), ('北京市', 184), ('深圳', 95),
('廣州', 86), ('杭州', 78), ('天津市', 69), ('朝陽', 56), ('蘇州', 54)]
"""
data.remove(('新區(qū)', 189))
data.remove(('南區(qū)', 189))
data.remove(('朝陽', 56))
return data
到此,數(shù)據(jù)工作已經(jīng)完成。
我們已經(jīng)拿到了經(jīng)過清洗的數(shù)據(jù),我們簡(jiǎn)單對(duì)數(shù)據(jù)進(jìn)行打印,然后繪制直方圖。
def render_top10():
"""
繪制直方圖顯示 全國(guó)必勝客餐廳總數(shù) Top 10 的城市
根據(jù)清洗過后數(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")
繪制出來的結(jié)果如下:
不難看出,一線城市擁有必勝客的餐廳數(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ì)算出來的
pie = Pie("北上廣深餐廳數(shù)的占比")
pie.add("", attr, value, is_label_show=True, is_more_utils=True)
pie.render("render_pie.html")
繪制出來的結(jié)果如下:
從數(shù)據(jù)上看,北上廣深的餐廳數(shù)占據(jù)全國(guó)餐廳數(shù)的 22.64%。其他二三線城市共占據(jù) 77.36%。說明必勝客餐廳不僅主打大城市路線,還往二三四線城市發(fā)展,擴(kuò)展領(lǐng)域。
以上就是如何使用 Python 分析全國(guó)所有必勝客餐廳,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。