1. 程式人生 > >Python 爬下的必勝客資料背後,藏著什麼樣的資訊?

Python 爬下的必勝客資料背後,藏著什麼樣的資訊?

640?wx_fmt=gif

640?wx_fmt=jpeg

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

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


640?wx_fmt=png

環境搭建


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

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

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

pip install pyecharts


640?wx_fmt=png

資料清洗


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

我之前是將資料寫到一個 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

到此,資料工作已經完成。


640?wx_fmt=png

資料分析


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


  

def render_top10():
    """
    繪製直方圖顯示 全國必勝客餐廳總數 Top 10 的城市
    根據清洗過後資料的結果, Top 城市如下
    ('上海市', 189), ('北京市', 184), ('深圳', 95), ('廣州', 86), ('杭州', 78),
    ('天津市', 69), ('蘇州', 54), ('西安', 52), ('武漢', 51), ('成都', 48)
    """

    attr = ["上海""北京""深圳""廣州""杭州""天津""蘇州""西安""武漢""成都"]
    values = [1891849586786954525148]
    bar = Bar("全國各大城市必勝客餐廳數量排行榜")
    bar.add("總數", attr, values, is_stack=True, is_more_utils=True)
    bar.render("render_bar.html")

繪製出來的結果如下:

640?wx_fmt=png

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

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


  

def render_top10_percent():
    """
    繪製餅狀圖 顯示北上廣深餐廳數在全國中的比例
    """

    configure(global_theme='macarons')
    attr = ["上海""北京""深圳""廣州""其他城市"]
    value = [18918495861893]  # 根據 count_other_sum() 計算出來的
    pie = Pie("北上廣深餐廳數的佔比")
    pie.add("", attr, value, is_label_show=True, is_more_utils=True)
    pie.render("render_pie.html")

繪製出來的結果如下:

640?wx_fmt=png

從資料上看,北上廣深的餐廳數佔據全國餐廳數的 22.64%。其他二三線城市共佔據 77.36%。說明必勝客餐廳不僅主打大城市路線,還往二三四線城市發展,擴充套件領域。

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

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

 熱 文 推 薦 

 36 歲捧走圖靈碗!80 歲演算法大師高德納要在 105 歲完結《計算機程式設計藝術》

 算到懷疑人生!如何用並查集解決朋友圈個數問題?

 深度學習的發展可能已達極限!

☞ 特別策劃 | 盤點區塊鏈的2018:技術與工具演進篇

☞ 企業雲端儲存建設之路

☞ 開除“野狗”式程式設計師,團隊的效率提高了

AI in 美團:吃喝玩樂背後的黑科技

☞ 老程式設計師肺腑忠告:千萬別一輩子靠技術生存!


  

print_r('點個好看吧!');
var_dump('點個好看吧!');
NSLog(@"點個好看吧!");
System.out.println("點個好看吧!");
console.log("點個好看吧!");
print("點個好看吧!");
printf("點個好看吧!\n");
cout << "點個好看吧!" << endl;
Console.WriteLine("點個好看吧!");
fmt.Println("點個好看吧!");
Response.Write("點個好看吧!");
alert("點個好看吧!")
echo "點個好看吧!"

640?wx_fmt=gif 點選“閱讀原文”,開啟 CSDN App 閱讀更貼心!
640?wx_fmt=png 喜歡就點選“好看”吧!