自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Python分析元旦旅游熱門城市

開發(fā) 后端
元旦馬上就要到了,難得的3天小長(zhǎng)假,玩肯定是要去玩的,但去哪兒玩是個(gè)問(wèn)題。于是,筆者以旅游熱門城市廈門為例,用Python獲取了去哪兒網(wǎng)的相關(guān)景點(diǎn)數(shù)據(jù)。

 元旦馬上就要到了,難得的3天小長(zhǎng)假,玩肯定是要去玩的,但去哪兒玩是個(gè)問(wèn)題。于是,筆者以旅游熱門城市廈門為例,用Python獲取了去哪兒網(wǎng)的相關(guān)景點(diǎn)數(shù)據(jù),包括景點(diǎn)名稱、地區(qū)、評(píng)分、銷量、價(jià)格、坐標(biāo)等字段,對(duì)數(shù)據(jù)進(jìn)行可視化并作簡(jiǎn)單分析,以求找到性價(jià)比較高的景點(diǎn)。

數(shù)據(jù)獲取

去哪兒網(wǎng)數(shù)據(jù)采集相對(duì)簡(jiǎn)單,找到真實(shí)url后,構(gòu)造參數(shù)拼接,用request請(qǐng)求到j(luò)son數(shù)據(jù),以追加模式將數(shù)據(jù)存儲(chǔ)為csv文件即可。

爬蟲核心代碼如下: 

  1. # -*- coding = uft-8 -*-  
  2. # @Time : 2020/12/25 9:47 下午  
  3. # @Author : 公眾號(hào) 菜J學(xué)Python  
  4. # @File : 去哪兒.py  
  5. import requests  
  6. import random  
  7. from time import sleep  
  8. import csv  
  9. import pandas as pd  
  10. from fake_useragent import UserAgent  
  11. def get_data(keyword,page):  
  12.     ua = UserAgent(verify_ssl=False 
  13.     headers = {"User-Agent": ua.random}  
  14.     url = f'http://piao.qunar.com/ticket/list.json?keyword={keyword}&region=&from=mpl_search_suggest&page={page}'  
  15.     res = requests.request("GET", url,headersheaders=headers)  
  16.     sleep(random.uniform(1, 2))  
  17.     try:  
  18.         resres_json = res.json()  
  19.         #print(res_json) 
  20.          sight_List = res_json['data']['sightList']  
  21.         print(sight_List)  
  22.     except:  
  23.         pass  
  24. if __name__ == '__main__':  
  25.     keyword = "廈門"  
  26.     for page in range(1,100): #控制頁(yè)數(shù)  
  27.         print(f"正在提取第{page}頁(yè)")  
  28.         sleep(random.uniform(1, 2))  
  29.         get_data(keyword,page) 

數(shù)據(jù)處理

導(dǎo)入相關(guān)包

首先導(dǎo)入數(shù)據(jù)處理和數(shù)據(jù)可視化相關(guān)第三方庫(kù),便于后續(xù)操作。 

  1. import pandas as pd   
  2. import numpy as np  
  3. import matplotlib.pyplot as plt  
  4. import seaborn as sns  
  5. %matplotlib inline  
  6. plt.rcParams['font.sans-serif'] = ['SimHei']  # 設(shè)置加載的字體名  
  7. plt.rcParams['axes.unicode_minus'] = False   # 解決保存圖像是負(fù)號(hào)'-'顯示為方塊的問(wèn)題   
  8. import jieba  
  9. import re  
  10. from pyecharts.charts import *  
  11. from pyecharts import options as opts   
  12. from pyecharts.globals import ThemeType    
  13. import stylecloud  
  14. from IPython.display import Image 

導(dǎo)入景點(diǎn)數(shù)據(jù)

用pandas讀取爬取的csv格式景點(diǎn)數(shù)據(jù)并預(yù)覽。 

  1. df = pd.read_csv("/菜J學(xué)Python/旅游/廈門旅游景點(diǎn).csv",names=['name', 'star', 'score','qunarPrice','saleCount','districts','point','intro'])  
  2. df.head() 

刪除重復(fù)數(shù)據(jù)

網(wǎng)站存在一定的重復(fù)數(shù)據(jù),需要進(jìn)行剔除。 

  1. dfdf = df.drop_duplicates() 

查看數(shù)據(jù)信息

查看字段類型和缺失值情況,符合分析需要,無(wú)需另作處理。 

  1. df.info()    
  1. <class 'pandas.core.frame.DataFrame'>  
  2.    Int64Index: 422 entries, 0 to 423  
  3.    Data columns (total 8 columns):  
  4.     #   Column      Non-Null Count  Dtype    
  5.    ---  ------      --------------  -----    
  6.     0   name        422 non-null    object   
  7.     1   star        422 non-null    object   
  8.     2   score       422 non-null    float64  
  9.     3   qunarPrice  422 non-null    float64  
  10.     4   saleCount   422 non-null    int64    
  11.     5   districts   422 non-null    object   
  12.     6   point       422 non-null    object   
  13.     7   intro       377 non-null    object   
  14.    dtypes: float64(2), int64(1), object(5)  
  15.    memory usage: 29.7+ KB 

描述性統(tǒng)計(jì)

從描述性統(tǒng)計(jì)表可知,剔除重復(fù)數(shù)據(jù)后,剩余424個(gè)景點(diǎn),門票均價(jià)為40元。 

  1. color_map = sns.light_palette('orange', as_cmap=True)  # light_palette調(diào)色板  
  2. df.describe().style.background_gradient(color_map) 

可視化分析

景點(diǎn)介紹

通過(guò)對(duì)廈門景點(diǎn)介紹文本進(jìn)行詞云圖繪制,我們很容易看出廈門的特點(diǎn)。典型的海濱休閑城市,帆船、鼓浪嶼、游艇等詞被大量提及,建筑、博物館等詞也有一定提及,體現(xiàn)出廈門濃厚的人文氣息。 

  1. #繪制詞云圖  
  2. text1 = get_cut_words(content_series=df['intro'])  
  3. stylecloud.gen_stylecloud(text=' '.join(text1), max_words=100 
  4.                           collocations=False 
  5.                           font_path='simhei.ttf' 
  6.                           icon_name='fas fa-heart' 
  7.                           size=653 
  8.                           #palette='matplotlib.Inferno_9' 
  9.                           output_name='./offer.png' 
  10. Image(filename='./xiamen.png'

景點(diǎn)分布

利用kepler.gl繪制廈門市旅游景點(diǎn)分布地圖,同時(shí)以圓圈的大小表示門票月銷量的大小,我們可以很清晰的看到,廈門市景點(diǎn)集中分布在思明區(qū)和湖里區(qū),其他區(qū)域分布較為分散。尤其是思明區(qū),門票銷量遙遙領(lǐng)先其他區(qū)域。 

  1. df["lon"] = df["point"].str.split(",",expand=True)[0]   
  2. df["lat"] = df["point"].str.split(",",expand=True)[1]   
  3. df.to_csv("/菜J學(xué)Python/data.csv") 

評(píng)分TOP10景點(diǎn)

從景點(diǎn)評(píng)分來(lái)看,廈門大學(xué)評(píng)分最高,5分滿分。其次是鼓浪嶼和南普陀寺,分別為4.9分和4.6分。難怪有人說(shuō),沒去過(guò)廈大和鼓浪嶼,相當(dāng)于沒來(lái)過(guò)廈門。 

  1. dfdf_score = df.pivot_table(index='name',values='score' 
  2. df_score.sort_values('score',inplace=True,ascending=False 
  3. df_score[:10] 

月銷量TOP10景點(diǎn)

從門票月銷量來(lái)看,鼓浪嶼排第一,月銷量1230,其次是廈門園林植物園和鼓浪嶼往返輪渡。廈門方特夢(mèng)幻王國(guó)也有600以上的月銷量。 

  1. dfdf_saleCount = df.pivot_table(index='name',values='saleCount' 
  2. df_saleCount.sort_values('saleCount',inplace=True,ascending=False 
  3. df_saleCount[:10] 

價(jià)格TOP20景點(diǎn)

從景點(diǎn)價(jià)格來(lái)看,玩游艇、直升機(jī)、帆船類的活動(dòng)花銷較大,另外,廈門方特價(jià)格也不便宜,如果對(duì)價(jià)格不敏感可以考慮,如果是窮游可以提前避開。 

  1. dfdf_qunarPrice = df.pivot_table(index='name',values='qunarPrice' 
  2. df_qunarPrice.sort_values('qunarPrice',inplace=True,ascending=False 
  3. df_qunarPrice[:20] 

月銷售額TOP20景點(diǎn)

由于廈門近一個(gè)月景點(diǎn)銷量的變化幅度小于價(jià)格的變化幅度,銷售額受價(jià)格影響更大。從以下圖中也可以看出,月銷售額較大的景點(diǎn)仍然是游艇、方特之類。 

  1. df["saleTotal"] = df["qunarPrice"]*df["saleCount"]  
  2. dfdf_saleTotal = df.pivot_table(index='name',values='saleTotal' 
  3. df_saleTotal.sort_values('saleTotal',inplace=True,ascending=False 
  4. df_saleTotal[:20] 

景點(diǎn)等級(jí)分布

從廈門景點(diǎn)等級(jí)分布來(lái)看,3A以上等級(jí)景點(diǎn)占比不到5%。 

  1. dfdf_star = df["star"].value_counts() 
  2. df_stardf_star = df_star.sort_values(ascending=False 
  3. #print(df_star)  
  4. c = (  
  5.         Pie(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))  
  6.         .add(  
  7.             "", 
  8.              [list(z) for z in zip(df_star.index.to_list(),df_star.to_list())]  
  9.         )  
  10.         .set_global_opts(legend_opts = opts.LegendOpts(is_show = False),title_opts=opts.TitleOpts(title="景點(diǎn)等級(jí)分布",subtitle="數(shù)據(jù)來(lái)源:去哪兒網(wǎng)\n制圖:菜J學(xué)Python",pos_top="0.5%",pos_left = 'left')) 
  11.          .set_series_opts(label_opts=opts.LabelOpts(formatter=":k6zqhab033oa%",font_size=16))  
  12.     )  
  13. c.render_notebook() 

 

  1. df[df["star"]!='無(wú)'].sort_values("star",ascending=False

以下為篩選出的部分3A及以上景點(diǎn):

小結(jié)

通過(guò)以上簡(jiǎn)單的分析,我們大致可以獲得以下幾點(diǎn)啟發(fā): 

1.廈門是典型的海濱休閑城市,具有豐富的海洋和人文景觀;

2.廈門旅游景點(diǎn)主要集中分布在思明區(qū),其他區(qū)域較為分散;

3.廈門大學(xué)口碑最高,其次才是鼓浪嶼;

4.鼓浪嶼門票銷量遙遙領(lǐng)先廈門其他景點(diǎn);

5.消費(fèi)較高的景點(diǎn)或活動(dòng)包括游艇、帆船和方特。

溫馨提示:疫情還未完全散去,元旦游玩盡量避開風(fēng)險(xiǎn)區(qū)域。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Python中文社區(qū)
相關(guān)推薦

2020-10-27 06:39:14

智慧城市智慧旅游物聯(lián)網(wǎng)

2023-04-09 23:17:16

Python監(jiān)控城市空氣

2019-09-29 10:00:46

Python程序員旅游

2021-08-02 23:15:20

Pandas數(shù)據(jù)采集

2017-10-10 13:13:48

2022-05-05 14:48:47

大數(shù)據(jù)旅游五一

2014-04-08 15:16:07

2048算法分析算法

2018-06-15 11:22:52

Python分析世界杯

2013-07-05 09:30:07

大數(shù)據(jù)旅游業(yè)革命

2020-07-23 09:15:25

Python機(jī)器學(xué)習(xí)聚類分析

2017-10-10 15:42:56

Python鹿晗關(guān)曉彤

2019-08-12 10:32:30

大數(shù)據(jù)數(shù)據(jù)科學(xué)云計(jì)算

2023-01-28 10:09:00

Pandas數(shù)據(jù)分析Python

2010-04-23 17:26:23

CTO

2022-02-07 22:48:07

大數(shù)據(jù)春節(jié)冬奧會(huì)帶

2023-08-15 09:50:32

大數(shù)據(jù)旅游企業(yè)

2024-03-29 11:16:35

大數(shù)據(jù)大數(shù)據(jù)分析

2018-12-10 15:53:41

Python必勝客數(shù)據(jù)分析

2017-03-07 10:32:11

智慧城市王茜網(wǎng)絡(luò)

2021-10-20 10:10:45

數(shù)據(jù)分析智慧城市大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)