用Python分析大連景點(diǎn),告訴你哪些景點(diǎn)性價(jià)比高
本文轉(zhuǎn)載自微信公眾號(hào)「志斌的python筆記」,作者志斌。轉(zhuǎn)載本文請(qǐng)聯(lián)系志斌的python筆記公眾號(hào)。
大家好,我是志斌~
再過(guò)幾天,志斌就要去大連開始為期三年的讀研生活啦,當(dāng)然在讀書學(xué)習(xí)的同時(shí),也要去體驗(yàn)一下“魅力之都”的魅力,所以志斌用Python爬取了去哪兒網(wǎng)上大連景點(diǎn)的相關(guān)數(shù)據(jù),包括景點(diǎn)名稱、城區(qū)、熱度、價(jià)格、月銷量等數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行可視化并作簡(jiǎn)單分析,用以找到性價(jià)比較高的景點(diǎn)。
一數(shù)據(jù)采集
去哪兒網(wǎng)的數(shù)據(jù)存儲(chǔ)非常簡(jiǎn)單,都在源網(wǎng)頁(yè)中靜態(tài)存儲(chǔ),我們只需構(gòu)造好URL之后,用Requests發(fā)起請(qǐng)求,然后用Bs4將數(shù)據(jù)提取出來(lái),存儲(chǔ)到Excel中即可。
爬蟲的核心代碼如下:
- import requests
- from bs4 import BeautifulSoup
- import openpyxl
- for page in range(1,50):
- try:
- params = (
- ('from', 'mps_search_suggest_h'),
- ('keyword', '大連'),
- ('page', str(page)),
- )
- response = requests.get('https://piao.qunar.com/ticket/list_%E8%A5%BF%E5%AE%89.html', headers=headers, params=params)
- soup = BeautifulSoup(response.text,'html.parser')
- zongs = soup.find_all('div',class_='sight_item')
- for i in zongs:
- name = i.find('h3').text
- diqu = i.find(class_='area').find('a').text
- redu = round(float(i.find(class_='product_star_level').text.split()[-1][:4]) * 5, 2)
- dizhi = re.findall('地址:(.*?)地圖', i.find(class_='address color999').text)[0]
- jiage = float(i.find(class_='sight_item_price').find('em').text)
- yuexiao = int(i.find(class_='sight_item_sold-num').find('span').text)
- xingji = i.find(class_='level')
- jingweidu = i['data-point']
- ~~~
二數(shù)據(jù)處理
01導(dǎo)入景點(diǎn)數(shù)據(jù)
用pandas讀取爬取的景點(diǎn)數(shù)據(jù)并預(yù)覽。
- import pandas as pd
- df = pd.read_excel('大連景區(qū)數(shù)據(jù)_1.xlsx',names=['景點(diǎn)名稱','城區(qū)','熱度','地址','價(jià)格','月銷量','星級(jí)','經(jīng)度','緯度'])
- print(df.head())
02刪除重復(fù)數(shù)據(jù)
網(wǎng)站中有一定的重復(fù)數(shù)據(jù),需要將其刪除。
- df = df.drop_duplicates()
03查看數(shù)據(jù)信息
查看字段類型和缺失值情況,符合分析需要,無(wú)需另做處理。
- df.info()
三可視化分析
我們來(lái)對(duì)這164個(gè)景點(diǎn)數(shù)據(jù)進(jìn)行可視化分析。
01景點(diǎn)介紹
通過(guò)對(duì)大連景點(diǎn)介紹進(jìn)行詞云圖繪制,我們很容易看出大連的特點(diǎn)。博物館、休閑、歷史、文化等詞的大量提及,說(shuō)明大連是一座歷史悠久的現(xiàn)代化城市。建筑、動(dòng)物、主題等詞也有很多提及,表明大連的旅游環(huán)境輕松且多樣。
代碼如下:
- with open("推薦語(yǔ).txt",) as f:
- job_title_1 = f.read()
- contents_cut_job_title = jieba.cut(job_title_1)
- contents_list_job_title = " ".join(contents_cut_job_title)
- wc = WordCloud(stopwords=STOPWORDS.add("一個(gè)"), collocations=False,
- background_color="white",
- font_path=r"K:\msyh.ttc",
- width=400, height=300, random_state=42,
- mask=imread('xin.jpg', pilmode="RGB")
- )
- wc.generate(contents_list_job_title)
- wc.to_file("推薦語(yǔ).png")
02景區(qū)熱度top10
從景點(diǎn)評(píng)分來(lái)看,金石灘景點(diǎn)評(píng)分最高,為4.55分,其次是老虎灘公園和星海廣場(chǎng),分別是4.5分和4.4分。怪不得一搜索大連的旅游攻略,每一個(gè)里面都有這幾個(gè)景點(diǎn)。
03景點(diǎn)價(jià)格top10
從景點(diǎn)價(jià)格來(lái)看,除了潛水中心這個(gè)景點(diǎn)略貴,其他景點(diǎn)價(jià)格都還可以接受,去大連游玩的朋友,時(shí)間充裕的話可以都體驗(yàn)一下,志斌這三年是要都體驗(yàn)一遍了~
04月銷量top10景點(diǎn)
從下圖可以看出,海昌發(fā)現(xiàn)王國(guó)的銷量最高,為908,其次是天門峽漂流,為786,志斌還沒(méi)去過(guò)漂流,正好趁著這次在大連讀書,抽時(shí)間去一次。
老虎灘海洋公園、大連森林動(dòng)物園、大連圣亞海洋世界的銷量也不少,分別是542,488,458。
05月銷額top20景點(diǎn)
從下圖可以看出、月銷額較大的還是海昌發(fā)現(xiàn)王國(guó)、老虎灘海洋公園、大連圣亞海洋世界、看來(lái)月銷額受到月銷量的影響較大,受價(jià)格的影響較小。
06景點(diǎn)等級(jí)分布
從大連景點(diǎn)等級(jí)分布來(lái)看,3A以上等級(jí)的景點(diǎn)為24個(gè),其中3A級(jí)景點(diǎn)1個(gè),4A級(jí)景點(diǎn)21個(gè),5A級(jí)景點(diǎn)2個(gè)。
07景點(diǎn)分布
從圖中我們可以看出,景點(diǎn)大部分分布在旅順區(qū)、中山區(qū)、金州區(qū)的東南沿海方位。如果來(lái)大連旅游的話,建議去旅順口區(qū)或者中山區(qū)去住,因?yàn)槟抢锝煌ㄝ^為便利。
四小結(jié)
通過(guò)上面簡(jiǎn)單的分析,我們大致可以獲得以下幾點(diǎn)發(fā)現(xiàn):
1. 大連是一座歷史悠久的現(xiàn)代化城市,很適合旅游。
2. 大連的景點(diǎn)主要集中在旅順區(qū)、中山區(qū)、金州區(qū),旅順區(qū)和中山區(qū)的景點(diǎn)附近有地鐵,所以建議住宿的時(shí)候可以盡量選擇住在這兩個(gè)區(qū),這樣出行游玩會(huì)比較方便。
3. 評(píng)分最高的景點(diǎn)是金石灘景點(diǎn)。
4. 本文僅供學(xué)習(xí)參考,不做它用。
溫馨提示:疫情還未結(jié)束,外出旅行做好個(gè)人防護(hù)。盡量避免到中高風(fēng)險(xiǎn)地區(qū)游玩。