Python爬蟲&可視化之舌尖上的“小龍蝦”

今天 我們來聊一聊小龍蝦!


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)龍蝦

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

---------------------------------

想從事AI行業,想快速通過學習AI取得高薪?


其實並不複雜,


只需關注小碼聰聰,回覆AI


即可領取你的專屬秘籍