Python爬蟲&可視化第2季-舌尖上的「小龍蝦」

  • 2019 年 10 月 8 日
  • 筆記

前言:

上期內容與大家分享了一些旅遊的內容,從本期開始,會陸續分享一些為吃貨們量身定製的文章。世界盃激戰正酣,大家在欣賞精彩比賽的同時,怎能少了美食的陪伴,我們今天就來聊聊世界盃的好麗友-小龍蝦

PART1:獲得數據

本次數據我們爬取了中所有打上小龍蝦標籤的餐廳

從上圖中可以看出,我們可以獲得餐廳的人均消費、點評數量、推薦菜、評分(口味、環境、服務)等信息,用於我們之後的分析。我們此次總共爬取到了225個城市,6758個餐廳,121.3萬條評論。

我們截取其中的部分核心代碼:

def find_city_page(path):      data = pd.read_excel(path)      city_lobster_page = pd.DataFrame()      driver = webdriver.Chrome()      for i in range(0,len(data)):          try:              js='window.open("'+data['city_lobster_url'][i]+'")'              driver.execute_script(js)              bsObj = BeautifulSoup(driver.page_source,'html.parser')              bs = bsObj.find_all('a',attrs={'class':'PageLink'})              this_city_lobster={'city_name':data['city_name'][i],                                 'page_num':max([int(l.text ) for l in bs])}              city_lobster_page = city_lobster_page.append(this_city_lobster,ignore_index=True)          except:              continue      return city_lobster_page

PART2: 城市對比

我們首先要進行分析的是各個城市的小龍蝦熱度,我們以帶有「小龍蝦」標籤的餐廳評論總和作為最終的對比依據,得到的TOP20城市如下:

可以看出上海市的點評數遙遙領先,可能存在以下兩個因素:a.上海市的小龍蝦餐廳數量較多,本身存在較大的消費群體 b.大眾點評總部在上海,上海的商戶入駐數量較多。有興趣的朋友可以進行更深一步的研究。

圈定了TOP20城市後,我們首先看一下TOP20城市小龍蝦的人均消費

該項統計中,包郵區佔據了靠前的位置,體現出來包郵區對小龍蝦的熱情和自身的消費水平。同時可以看到株洲的人均消費接近於上海的一半,有機會到湖南旅遊的朋友可以考慮到株洲品嘗物美價廉的小龍蝦。

緊接着要看的是TOP20城市味道、環境、服務三部分的分數情況:

我們發現服務分與環境分排序相同,二者具有極強的相關性,符合通常認知。同時可以看到在三項分數中,北方的四個城市天津、西安、北京、青島各項指標均處於靠前的位置,其中天津的服務和環境均處於首位。

結合下圖全國小龍蝦熱力圖,似乎有些有悖於大家的認知。

由此我們可以得出在小龍蝦整體熱度比較強的區域,人們對於小龍蝦各方面的要求會相應提高,相反在整體熱度偏低區域,人們評價時會相對寬容。同時我們看到海口的各項指標均處於最後一位,需要進行相應的調整。

PART3: 探索龍蝦

我們看過了各個城市的情況後,進一步看一下小龍蝦本身的一些有趣的內容,首先看一下龍蝦的口味,我們選取了各個餐廳中帶有龍蝦的推薦菜,分詞後獲得TOP20的口味

十三香、蒜蓉、麻辣高居前三位,根據作者的經驗,這基本上是符合大家整體口味的選擇。TOP20中的蛋黃,白灼對於作者而言相對陌生,有品嘗過的朋友可以分享一些這些口味的體驗。

看完了口味,再看一下龍蝦的好麗友

螺絲、花甲、毛豆位高居TOP3,看來大家吃龍蝦的時候,會希望同時選擇一些不用摘手套就可以享用的食物,畢竟吃的過程中頻繁摘手套會比較費勁。

PART4: 龍蝦畫像

目前互聯網公司中非常普遍地會進行一些人群畫像的分析,我們在這裡借用一下這個概念,也為小龍蝦繪製一副專屬的畫像,下面展示的兩幅圖分別是詞雲圖和模板原圖

部分詞雲繪製代碼如下:

# 解析小龍蝦圖片  back_color = imread('小龍蝦.jpg')  # 解析該圖片  # 參數配置  wc = WordCloud(background_color='white',  # 背景顏色                 max_words=300,  # 最大詞數                 mask=back_color,  # 以該參數值作圖繪製詞雲,這個參數不為空時,width和height會被忽略                 max_font_size=100,  # 顯示字體的最大值                 font_path="C:/Windows/Fonts/simhei.ttf",  # 解決顯示口字型亂碼問題,可進入C:/Windows/Fonts/目錄更換字體                 random_state=4,  # 為每個詞返回一個PIL顏色                 #width=2000,  # 圖片的寬                 #height=1860  #圖片的長                 )  # 通過encounter計數器生成詞雲  wc.generate_from_frequencies(word_counts)  # 基於彩色圖像生成相應彩色  image_colors = ImageColorGenerator(back_color)  # 繪製詞雲  plt.figure()  plt.imshow(wc.recolor(color_func=image_colors))  plt.axis('off')

PART5: 特(hei)色(an)龍蝦

文章最後我們放上幾個之前分詞發現的特色口味龍蝦,或許下一個網紅龍蝦就在其中