<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我用Python采集了6萬多家火鍋店數(shù)據(jù),好吃的火鍋在哪里!

          共 5156字,需瀏覽 11分鐘

           ·

          2021-10-23 03:46

          大家好,我是菜鳥哥,最近太冷太冷了,取暖基本靠抖,通訊基本靠吼!不過天冷了,可以涮火鍋吃羊肉,補(bǔ)一補(bǔ)!反正菜鳥哥很喜歡吃火鍋,可以開始搞起來!那么,今天我們就用Python爬取某點(diǎn)評(píng)網(wǎng)站的火鍋數(shù)據(jù),一起找找好吃的火鍋在哪里吧~~


          目錄

          • 1.說明

          • 2.北京火鍋店基礎(chǔ)數(shù)據(jù)

          • 3.北京火鍋店評(píng)分?jǐn)?shù)據(jù)

          • 4.評(píng)價(jià)數(shù)及人均消費(fèi)

          • 5.都有哪些連鎖店

          • 6.爬蟲過程

          • 7.其他


          接下來,我們來看看北京好吃的火鍋都在哪里吧~

          1.說明

          環(huán)境

          !! 環(huán)境
          Windows:Windows-10
          Python版本:3.7.9
          IDE:Spyder 4.1.5
          繪圖庫:matplotlib

          數(shù)據(jù)

          !! 數(shù)據(jù)
          數(shù)據(jù)來源:大眾點(diǎn)評(píng)-美食-北京-火鍋
          表單字段:['地區(qū)', '火鍋類型', 'id', '商家名稱', '商家評(píng)分', '評(píng)價(jià)數(shù)', '人均消費(fèi)', '口味', '環(huán)境', '服務(wù)', '地址', '推薦菜']
          表單數(shù)量:6416條有效數(shù)據(jù)(另有4000余條無評(píng)價(jià)等的店鋪數(shù)據(jù),記為無效數(shù)據(jù),已刪除)

          2.北京火鍋店基礎(chǔ)數(shù)據(jù)

          In?[1]:?df.id.nunique()?#有效火鍋店鋪數(shù):店鋪id非重復(fù)計(jì)數(shù)
          Out[1]:?5319

          北京一共有5319家有評(píng)分的有效火鍋店鋪。

          2.1. 火鍋分類

          算不上吃貨的我,只知道兩種火鍋:火鍋和銅鍋。仔細(xì)一看,發(fā)現(xiàn)有接近小30種火鍋種類,咱中國(guó)人真講究。

          在北京品類最多的有老北京火鍋高達(dá)1020家,其次是川味麻辣火鍋、羊蝎子火鍋及串串香等。

          以下是繪圖代碼:

          #?獲取數(shù)量前10的火鍋類型
          df_type?=?df.groupby('火鍋類型')['id'].nunique().to_frame('數(shù)量').reset_index().sort_values('數(shù)量',ascending=False)
          df_type.reset_index(drop=True,inplace=True)
          df_type.head(10)
          df_type10?=?df_type.head(10)?#前10
          #?繪制柱狀圖
          fig?=?df_type10.plot(kind='barh',x='火鍋類型',y='數(shù)量',title="各類火鍋店鋪數(shù)量",
          ?????????????????????color='orange',figsize=(18,9),fontsize=16,
          ????????????????????)
          fig.axes.title.set_size(22)?#設(shè)置標(biāo)題字體大小
          fig.legend(fontsize=16)?#設(shè)置圖例字體大小
          fig.set_ylabel('火鍋類型',fontdict={'fontsize':20})?#設(shè)置y軸名稱及字體大小
          for?index,?num?in?enumerate(df_type10['數(shù)量']):?#添加數(shù)據(jù)標(biāo)簽
          ????fig.text(num,?index,s?=?num,?ha?=?'left',?fontsize?=?16)

          2.2. 各地區(qū)火鍋分類

          以才哥在的海淀區(qū)為例,火鍋類型最多的是川味麻辣,其次是老北京火鍋、串串香和重慶火鍋。不得不說,這些都是我愛吃的。

          地區(qū)火鍋分類熱力圖

          以下是制作代碼:

          df_loc_type?=?pd.pivot_table(df,?values='id',?index='火鍋類型',?columns='地區(qū)',?aggfunc=pd.Series.nunique)
          cm?=sns.light_palette("red",?as_cmap=True)
          df_loc_type.fillna(0).astype(int).style.background_gradient(cmap=cm)?#創(chuàng)建熱力圖背景(列)

          2.3. 各地區(qū)火鍋店數(shù)量

          不得不說朝陽區(qū)也太牛了,接近1200家店,占總店的20%+。其次是咱們海淀、昌平這種打工人聚集的地方~

          3.北京火鍋店評(píng)分?jǐn)?shù)據(jù)

          從大眾點(diǎn)評(píng)上爬取的店鋪數(shù)據(jù)中,我們可以看到評(píng)分相關(guān)的數(shù)據(jù)指標(biāo)有 商家評(píng)分(4.97)、口味、環(huán)境和服務(wù)評(píng)分共5類。

          3.1. 評(píng)分直方圖

          組合四類評(píng)分繪制疊加直方圖,可以看見基本上各項(xiàng)評(píng)分的分布基本一致,大部分分布在4分以下或者4.5分以上,兩級(jí)分化比較明顯。以下是繪圖代碼:

          #?疊加直方圖
          plt.figure(figsize=(16,9))
          plt.hist(x?=df['商家評(píng)分'],?color='orange',?bins=?15,?alpha=0.5)?#橙色
          plt.hist(x?=df['口味'],?color='red',?bins=?15,?alpha=0.5)?#?紅色
          plt.hist(x?=df['環(huán)境'],?color='blue',?bins=?15,?alpha=0.5)?#?藍(lán)色
          plt.hist(x?=df['服務(wù)'],?color='white',?bins=?15,?alpha=0.5)?#?白色
          plt.xticks(fontsize=20)
          plt.yticks(fontsize=20)

          3.2. 各地區(qū)商家評(píng)分箱線圖

          如圖我們可以發(fā)現(xiàn),東城區(qū)、朝陽區(qū)、西城區(qū)和海淀區(qū)是商家評(píng)分較高普遍較高,而密云和延慶等郊區(qū)除了個(gè)別火鍋店評(píng)分較高之外整體普通較低。當(dāng)然,這個(gè)其實(shí)是地理位置影響優(yōu)質(zhì)店鋪選址,從而呈現(xiàn)這種表現(xiàn)。以下是繪圖代碼:

          #?箱線圖-商家評(píng)分
          fig?=?df.boxplot(column='商家評(píng)分',by='地區(qū)',?figsize=(18,9),?color?='red',fontsize?=?16)
          fig.axes.title.set_size(22)?#設(shè)置標(biāo)題字體大小
          fig.set_xlabel('地區(qū)',fontdict={'fontsize':20})?#設(shè)置y軸名稱及字體大小

          商家評(píng)分最高前5

          3.3. 各地區(qū)口味評(píng)分箱線圖

          對(duì)比商家評(píng)分的箱線圖,我們發(fā)現(xiàn)東城區(qū)火鍋店的口味評(píng)分有超過一半以上的店面超過了4.5分,基本上口味好的火鍋店也都在北京的中心城區(qū)。口味評(píng)分最高前5

          3.4. 各地區(qū)環(huán)境評(píng)分箱線圖

          環(huán)境評(píng)分整體較好的在東城區(qū)和朝陽區(qū)環(huán)境評(píng)分最高前5

          3.5. 各地區(qū)服務(wù)評(píng)分箱線圖

          服務(wù)評(píng)分整體較好的也是在東城區(qū)和朝陽區(qū)服務(wù)評(píng)分最高前5

          3.6. 各地區(qū)各項(xiàng)評(píng)分

          我們查看四項(xiàng)評(píng)分之間的散點(diǎn)圖矩陣,各地區(qū)的火鍋店,商家評(píng)分和口味,環(huán)境與服務(wù)關(guān)聯(lián)更強(qiáng)。口味好的一般評(píng)分應(yīng)該不會(huì)太差,環(huán)境好的服務(wù)也一般不錯(cuò)。

          以下是繪圖代碼:

          #?散點(diǎn)圖矩陣
          plt.rcParams["axes.labelsize"]?=?16??#?設(shè)置全局軸標(biāo)簽字體大小
          score?=?df[['商家評(píng)分','口味','環(huán)境','服務(wù)','地區(qū)']]
          sns.pairplot(score,?hue='地區(qū)',height=3)

          4.評(píng)價(jià)數(shù)及人均消費(fèi)

          我在大眾點(diǎn)評(píng)找店子的時(shí)候,除了看評(píng)分之外,評(píng)價(jià)數(shù)和人均消費(fèi)也是極其重要的考量。當(dāng)看到評(píng)價(jià)數(shù)極高的時(shí)候,內(nèi)心會(huì)不由的表示驚嘆“哇塞,這么多人寫評(píng)價(jià)啊”;當(dāng)看到人均消費(fèi)極高的時(shí)候,也會(huì)想著啥時(shí)候我也要去吃一次,哈哈~

          4.1. 整體評(píng)價(jià)數(shù)分布

          先用描述統(tǒng)計(jì)看,發(fā)現(xiàn)評(píng)價(jià)數(shù)最多的有3.2萬個(gè),最少的僅1個(gè),75%的火鍋店評(píng)價(jià)在900以下,更有25%的火鍋店評(píng)價(jià)不到23個(gè)。

          In?[1]:df.評(píng)價(jià)數(shù).describe()
          Out[1]:?
          count?????6416.000000
          mean???????831.874065
          std???????1846.721435
          min??????????1.000000
          25%?????????23.000000
          50%????????211.000000
          75%????????881.000000
          max??????32099.000000
          Name:?評(píng)價(jià)數(shù),?dtype:?float64

          一定程度上,評(píng)價(jià)數(shù)能反應(yīng)一家店在廣大吃貨中的火爆度,我們發(fā)現(xiàn)最火的前5家有3家來自西城區(qū),海淀區(qū)和東城區(qū)各1家。

          以下是2家評(píng)價(jià)數(shù)破3萬的熱門火鍋店~

          4.2.人均消費(fèi)情況

          一共有人均消費(fèi)數(shù)據(jù)的店鋪4129家,其中均值100元,中位數(shù)也是95元,最高的是1220元(我的天,這是啥火鍋?)。

          4.2.1.人均消費(fèi)最貴的都有誰

          人均消費(fèi)最貴第1名是一家日韓火鍋,推薦菜基本都是日料類。其次,人均消費(fèi)較高的都是海鮮火鍋一類,你看那些推薦菜都是帝王蟹、澳龍啥的,想吃了,哈哈?。?/span>

          以下是2家人均消費(fèi)破千的火鍋店~

          4.2.2.人均消費(fèi)分布

          大部分的火鍋店人均消費(fèi)低于100元,其次是100-150元區(qū)間。極少數(shù)在200+,雖然能吃的主很容易吃出200+的其實(shí)??!以下是繪圖代碼:

          plt.figure(figsize?=?(12,12))#將畫布設(shè)定為正方形,繪制的餅圖是正圓
          plt.rcParams['font.size']=16?#設(shè)置字體大小為16
          label?=?df_cost.index.tolist()#定義餅圖的標(biāo)簽
          explode?=?[0.01,0.01,0.01,0.01,0.01]#設(shè)定各項(xiàng)距離圓心n個(gè)半徑
          values?=?df_cost.數(shù)量.tolist()
          plt.pie(values,explode?=?explode,labels?=?label,autopct?=?'%1.1f%%')#餅圖
          plt.title('人均消費(fèi)分布',fontdict={'fontsize':20})#標(biāo)題

          我們經(jīng)常聽的海底撈火鍋店的人均消費(fèi)大概在130左右。

          5.都有哪些連鎖店

          一共有349家品牌火鍋有分店。

          5.1.火鍋分店前10品牌

          果然是哪都有的呷哺呷哺(找了半天發(fā)音)以多大289家分店穩(wěn)居第一!看著這些品牌,基本都是比較常見熟悉的,基本上都吃過來著。

          5.2.火鍋分店前10品牌人均消費(fèi)

          海底撈 人均消費(fèi) 基本都在120以上,玩兒串串是一家什么店呀,人均基本都低于40,其次就是開了快300家店的呷哺呷哺也是人均消費(fèi)比較合適。

          5.3.火鍋分店前10品牌商家評(píng)分

          好吧,又是海底撈 評(píng)分表現(xiàn)最佳,可惡的海底撈。不過各家品牌大部分評(píng)分還是都不錯(cuò),在4.25分以上。玩兒串串作為小吃攤位放在這群雄里顯得有點(diǎn)格格不入了,哈哈!

          玩兒串串原來是這種,在購(gòu)物中心的美食中心里的偏快餐式的串串兒~

          6.爬蟲過程

          這里不介紹詳細(xì)的爬蟲過程,詳細(xì)的見后續(xù)推送哈(主要是篇幅有限 寫不完)。

          咱們簡(jiǎn)單說說在爬蟲過程中遇到的一些問題及解決方案。

          FAQ

          ①大眾點(diǎn)評(píng)的搜索結(jié)果最多只顯示50頁,如果獲取全部數(shù)據(jù)?

          解:搜索有多級(jí)選擇,以北京火鍋為例就是 子分類+地區(qū),我們看到一頁15家店鋪?zhàn)疃?0頁就有750家,加上諸多級(jí)選擇基本可以覆蓋全部店鋪。

          ②未登錄情況下無法查看下一頁獲取地址規(guī)律

          解:直接登錄賬號(hào)然后點(diǎn)擊下一頁查看地址變化規(guī)律唄。

          ③爬著爬著很快就被封ip了

          解:嗯,而且不是說爬慢點(diǎn)就行,我就被封了2個(gè)ip貌似都是封1天以上,最后買了1000個(gè)ip代理,被封了就自動(dòng)換解決。

          ④部分店鋪信息對(duì)應(yīng)字典為方框無法解析

          解:網(wǎng)上有很多這種css字體加密解密的文章,邊看邊學(xué)吧(反正作為菜鳥的我是這么來的)

          以下代碼為簡(jiǎn)單的解析 北京火鍋 子分類的腳本

          import?re
          import?requests

          header?=?{
          ????"Accept-Encoding":?"Gzip",??#?使用gzip壓縮傳輸數(shù)據(jù)讓訪問更快
          ????"User-Agent":?"Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64;?rv:83.0)?Gecko/20100101?Firefox/83.0",
          }

          url_beijing?=?'http://www.dianping.com/beijing/ch10'?#北京菜系
          rep_beijing?=?requests.get(url_beijing,?headers=?header)
          html_beijing?=?rep_beijing.text
          location_html?=?re.findall('([\s\S]*?)
          ',html_beijing)[0]?#獲取地區(qū)的數(shù)據(jù)內(nèi)容
          location_name?=?re.findall('data-click-title="(.*?)"',?location_html)?#獲取地區(qū)名稱列表
          location_id?=?re.findall(',location_html)?#獲取地區(qū)編號(hào)id
          dic_location?=?dict(zip(location_name,location_id))?#組合成字典備用

          url_huoguo?=?'http://www.dianping.com/beijing/ch10/g110'?#火鍋
          rep_huoguo?=?requests.get(url_huoguo,?headers=?header)
          html_huoguo?=?rep_huoguo.text
          type_html?=?re.findall('([\s\S]*?)
          ',html_huoguo)[0]?#獲取火鍋類型的數(shù)據(jù)內(nèi)容
          type_name?=?re.findall('(.*?)',?type_html)?#獲取火鍋類型名稱列表
          type_name?=?type_name[1:]?#第一個(gè)是不限,需要去掉
          type_id?=?re.findall('data-cat-id="(.*?)"',type_html)?#獲取火鍋類型id
          dic_type?=?dict(zip(type_name,type_id))?#組合成字典備用

          7.如何獲取代碼

          需要本文的數(shù)據(jù)和代碼,可以在公眾號(hào)后臺(tái)輸入:小助手,找他領(lǐng)取,備注暗號(hào):北京火鍋
          大家可以搗鼓更多的數(shù)據(jù)關(guān)聯(lián)表現(xiàn),雖然可能并沒有實(shí)際的啥作用,哈哈!喜歡吃火鍋的同學(xué)可以在文末留言評(píng)論區(qū)說說你最喜歡吃的火鍋,經(jīng)常來留言,我們?cè)碌讜?huì)統(tǒng)計(jì),送書的哦!


          免責(zé)聲明: 那個(gè),咱們爬蟲僅用于簡(jiǎn)單交流,切勿用做任何商業(yè)用途




          推薦閱讀:

          入門:?最全的零基礎(chǔ)學(xué)Python的問題? |?零基礎(chǔ)學(xué)了8個(gè)月的Python??|?實(shí)戰(zhàn)項(xiàng)目?|學(xué)Python就是這條捷徑


          量化:?定投基金到底能賺多少錢?? |?我用Python對(duì)去年800只基金的數(shù)據(jù)分析??


          干貨:爬取豆瓣短評(píng),電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個(gè)海量小姐姐素描圖?|碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!


          AI:?會(huì)做詩的機(jī)器人?|?給圖片上色?|?預(yù)測(cè)收入?|?碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水??!?|?一鍵把html網(wǎng)頁保存為pdf!|??再見PDF提取收費(fèi)!?|?用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r(jià)機(jī)票提示器!?|60行代碼做了一個(gè)語音壁紙切換器天天看小姐姐!


          年度爆款文案


          點(diǎn)閱讀原文,看Python全套!

          瀏覽 64
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩一道本 | www性欧美 | 久久无码在线观看 | 国产激情精品无码 | 苍井空和黑人最猛一次 |