廈門大眾點評火鍋描述性分析
前段時間抓取了廈門市大眾點評所有美食的數據,奈何舍友請我出去吃了兩次火鍋,把解讀的數據忘到腦後了。距離上次吃火鍋已經過去近兩個月了。想吃。
數據總共是11的緯度(評價緯度忘記抓取了)
通過這些數據我想知道或者篩選一些火鍋店等有空了請舍友去吃:
1、火鍋店的區域分布情況
2、廈門市火鍋價格人均消費情況
3、能否通過星級、人均、口味、環境、服務的綜合分數來決定幾家店的優先情況
1、火鍋店的區域分布情況
大眾點評上廈門市總共有360家火鍋店,相比而言,大多數火鍋店都開在島內,島內經濟相對島外來說超出了太多,這也不難看出為什麼各種優秀的資源都在島內了。如果說軟體園一期、軟體園二期和各個高新技術園帶動了島內的經濟,那麼預計在2021年建成的軟體園三期將有可能提高集美區的經濟水平。
2、廈門市火鍋價格人均消費情況
人均消費主要集中在50-100這個區間,100-150這個區間也有不少的人數,150往上的店就很少了。不過說實話,之前和舍友兩人去SM海底撈吃午飯都花了280塊錢,原價接近400(學生支付寶付款6.9折),吃另一家牛骨水煮火鍋人均也都接近了150了,所以大眾點評上標註的人均可能要打個問號。
不管如何先看看人均的統計數據
大部分火鍋店的人均價格在65-96之間,在第一分位和第三分位之間的火鍋店總共有130多家,從中隨機抽取10家看看都是哪些店
就隨機抽取的10家店而言,骨之味、大豐收、小爺酸湯魚在廈門都有好幾家分店
在挑選了地址信息火鍋店大於5家的地址後發現,各種超市、廣場、代表性地區都覆蓋了火鍋店,而其中湖裡萬達竟然達到了20家店,這讓我很好奇
經過篩選我發現火鍋的類型是以牛肉火鍋(涮)為主。去年火起來的串串和其他在廈門各地都開了連鎖店的火鍋品牌都在其中,品類算是比較全了。價格方面接近均價
3、能否通過星級、人均、口味、環境、服務的分數來決定幾家店的優先情況
清洗、量化數據後得到一個五緯的數據
首先篩選出所有分數在平均分以上的數據,再根據星級、口味、環境、服務的降序篩選出前10的火鍋店
驚訝的是海底撈的4家分店全部上榜,口味、環境、服務均在9.1分以上,但是人均價格也是高高在上,或許這就是享受吧...
在我第一次去海底撈吃飯的時候,第一感覺是貴。村裡人第一次進城吃火鍋,沒想到還有這麼貴的火鍋,印象中那頓飯人均60。第二次就是開頭提到的兩個人400。服務...我還是不吹了,免得有打廣告的嫌疑,不過我在吃海底撈的過程中學會了剝蝦殼...
根據星級、口味、環境、服務、人均這五個維度,我給分配了五個權重值,公式為:
綜合評分=星級*0.1 + 口味*0.25 + 環境*0.3 + 服務*0.25 -人均/20*0.1
按照正常的思維口味、環境、服務佔比相對要較大、而星級是可以根據開店的時間積累上去的、相對不那麼重要。那麼為什麼是減去人均的權值呢?我吃飯肯定是少花錢才覺得值啊。
通過這個公式,得到的結果也還不錯。
根據綜合得分排序,人均在總人均之上的店有70家,人均在總人均之下的有38家。其中低於總人均的店中,連鎖店有:詠蛙田雞、小爺酸湯魚、旺巴蜀小郡肝火鍋串串香。高於總人均的店就比較多了,傳統的涮鍋都歸在這類當中,常見的有:海底撈、小龍坎、戲鍋Seepot、八合里、骨之味。網紅店的分數都相對較高,當然也不是非網紅店不可,這主要是看自己對品牌的看重程度和對用戶評價的看法吧。
寫的不好,有空再改,溜了溜了。
筆記:
導入包
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltplt.rcParams[font.sans-serif] = [SimHei]plt.rcParams[axes.unicode_minus] = False
讀取數據
df = pd.read_csv(E:/xiamen.csv)df.columns
獲取火鍋列表
huoguo = df[df[菜系]== 火鍋]
火鍋店在各區的數量分布
# 火鍋店在各個區的分布情況countAvg = huoguo.groupby(區域)[店名].count().mean()count = huoguo.groupby(區域)[店名].count()count.plot(kind=bar, alpha=0.8, color=R, rot=0, figsize=(8, 5), fontsize=14)plt.axhline(countAvg)plt.text(len(count)-0.4,countAvg, 平均商店數:%i % countAvg)plt.show()
人均前5的火鍋店
top5 = huoguo.sort_values(by=[人均], ascending=False).head()
人均消費分布情況
perpay = huoguo[huoguo[人均] > 30][人均]level1 = perpay.loc[(perpay < 50)].count()level2 = perpay.loc[(perpay >= 50) & (perpay < 100)].count()level3 = perpay.loc[(perpay >= 100) & (perpay < 150)].count()level4 = perpay.loc[(perpay >= 150) & (perpay < 200)].count()level5 = perpay.loc[(perpay >= 200)].count()level = [level1, level2, level3, level4, level5]mean = perpay.mean()
各個消費水平的商店數
fig = plt.figure()fig.set_figheight(5)fig.set_figwidth(8)ax = fig.add_subplot(111)ax.bar(np.arange(5),level, alpha=0.8, color=r)ax.set_xticklabels([0, 0-50, 50-100, 100-150, 150-200, 200+], fontsize=14)ax.set_xlabel(人均消費水平, fontsize=14)ax.set_ylim([0, 200])ax.set_ylabel(各個消費水平的商店數, fontsize=14)for i in range(5): ax.text(i, level[i] + 1, level[i], fontsize=14)plt.show()
查找連鎖店
# 當前店名的前3個字和下一行的店名前3個字相同為時同一家店for i in range(len(sort_by_store_.index) - 1): if sort_by_store_.iloc[i][店名][:3] == sort_by_store_.iloc[i + 1][店名][:3]: new_df2 = new_df2.append(sort_by_store_.iloc[i])
將星級量化
huoguo[星級].replace(三星商戶, 3)huoguo[星級].replace(五星商戶, 5)huoguo[星級].replace(准五星商戶, 4.5)huoguo[星級].replace(准四星商戶, 3.5)huoguo[星級].replace(四星商戶, 4)huoguo[星級].replace(該商戶暫無星級, np.nan)huoguo[星級].replace({三星商戶: 3, 五星用戶: 5, .....})
分數均超過平均分的店
overmean = huoguo.loc[(huoguo[星級] > describe[星級][mean]) & (huoguo[口味] > describe[口味][mean]) & (huoguo[環境] > describe[環境][mean]) & (huoguo[服務] > describe[服務][mean])]
箱線圖(不支持Series,只能DataFrame)
df1 = pd.DataFrame()df1[人均] = df[df[人均].notnull()][人均]df1.boxplot()plt.show()
推薦閱讀:
※大眾點評App的短視頻耗電量優化實戰
※畫皮的大眾點評是?
※米其林上榜餐廳唐閣無緣大眾點評必吃榜,原因何在?
※要錢不要臉的大眾點評,在我的推廣頁加同行的廣告,還有職業道德嗎?