元旦马上就要到了,难得的3天长假。一定要去玩,但是去哪里是个问题。因此,笔者以热门旅游城市厦门为例,利用Python从去哪儿网获取相关景区数据,包括景区名称、地区、评分、销量、价格、坐标等字段,可视化数据并作了简单的分析,以找到负担得起的景点。数据采集??去哪儿网的数据采集相对简单。找到真实url后构造参数拼接,使用request请求json数据,将数据以append方式存储为csv文件。爬虫核心代码如下:#-*-coding=uft-8-*-#@Time:2020/12/259:47pm#@作者:公众号薯J学Python#@File:Whereto去。,page):ua=UserAgent(verify_ssl=False)headers={"User-Agent":ua.random}url=f'http://piao.qunar.com/ticket/list.json?keyword={keyword}®ion=&from=mpl_search_suggest&page={page}'res=requests.request("GET",url,headersheaders=headers)sleep(random.uniform(1,2))try:resres_json=res.json()#print(res_json)sight_List=res_json['data']['sightList']print(sight_List)except:passif__name__=='__main__':keyword="Xiamen"forpageinrange(1,100):#controlpagenumberprint(f"isextracting{page}page")sleep(random.uniform(1,2))get_data(keyword,page)数据处理导入相关包先导入数据处理和数据可视化相关的第三方库进行后续操作。importpandasapdimportnumpyasnpimportmatplotlib.pyplotaspltimportseabornassns%matplotlibinlineplt.rcParams['font.sans-serif']=['SimHei']#设置加载的字体名称plt.rcParams['axes.unicode_minus']=False#解决保存的图片是负号'-'显示为正方形的问题importjiebaimportrefrompyecharts.chartsimport*frompyechartssimportoptionsasoptsfrompyecharts.globalsimportThemeTypeimportstylecloudfromIPython.displayimportImage导入景点数据使用pandas读取和预览爬取的csv格式景点数据。df=pd.read_csv("/CookingJLearningPython/Tourism/厦门旅游景点.csv",names=['name','star','score','qunarPrice','saleCount','districts','point','intro'])df.head()删除重复数据网站中存在一些重复数据,需要剔除。dfdf=df.drop_duplicates()检查数据信息,检查字段类型和缺失值,满足分析需要,不需要单独处理。df.info()Int64Index:422entries,0to423Datacolumns(total8columns):#ColumnNon-NullCountDtype----------------------------0name422non-nullobject1star422non-nullobject2score422non-nullfloat643qunarPrice422non-nullfloat644saleCount422non-nullint645districts422non-nullobject6point422non-nullobject7intro377non-nullobjectdtypes:float64(2),int64(1),object(5)memoryusage:29.7+KB描述性统计从描述It从统计表中可以看出,剔除重复数据后,平均票价为40元的景点还有424个。color_map=sns.light_palette('orange',as_cmap=True)#light_palettepalettedf.describe().style.background_gradient(color_map)景点介绍可视化分析通过画一张厦门景点介绍文字的词云图,我们可以很容易看出走出去厦门的特点。一座典型的海滨休闲城市,帆船、鼓浪屿、游艇等词被广泛提及,建筑、博物馆等词也在一定程度上被提及,体现了厦门浓厚的人文气息。#绘制词云图text1=get_cut_words(content_series=df['intro'])stylecloud.gen_stylecloud(text=''.join(text1),max_words=100,collocations=False,font_path='simhei.ttf',icon_name='fasfa-heart',size=653,#palette='matplotlib.Inferno_9',output_name='./offer.png')Image(filename='./xiamen.png')使用kepler.gl到的景点分布图画出厦门旅游同时,圆圈的大小表示月票销售量的大小。我们可以清楚的看到,厦门的景点主要集中在思明区和湖里区,其他地区的分布比较分散。尤其是思明区,门票销售遥遥领先于其他地区。df["lon"]=df["point"].str.split(",",expand=True)[0]df["lat"]=df["point"].str.split(",",expand=True)[1]df.to_csv("/食J学Python/data.csv")景点评分TOP10从景点评分来看,厦门大学得分最高,满分5分。其次是鼓浪屿和南普陀寺,分别为4.9和4.6分。难怪有人说,没到过厦门大学,没到过鼓浪屿,就等于没到过厦门。dfdf_score=df.pivot_table(index='name',values='score')df_score.sort_values('score',inplace=True,ascending=False)df_score[:10]月销量TOP10景点从月票销量来看,鼓浪屿排名第一,月销量1230辆,其次是厦门园林植物园和鼓浪屿渡口。厦门方特梦幻乐园月销量也有600多台。dfdf_saleCount=df.pivot_table(index='name',values='saleCount')df_saleCount.sort_values('saleCount',inplace=True,ascending=False)df_saleCount[:10]价格TOP20景区从景区来看现货价格,玩游艇,直升机,帆船活动比较贵。另外,厦门方特的价格也不便宜。对价格不敏感的可以考虑。如果您的旅行预算有限,您可以提前避免。dfdf_qunarPrice=df.pivot_table(index='name',values='qunarPrice')df_qunarPrice.sort_values('qunarPrice',inplace=True,ascending=False)df_qunarPrice[:20]厦门TOP20景区月销售额因过去一个月销量变化小于价格变化,销量受价格影响较大。从下图也可以看出,月销售额较大的景点依然是游艇和方特。df["saleTotal"]=df["qunarPrice"]*df["saleCount"]dfdf_saleTotal=df.pivot_table(index='name',values='saleTotal')df_saleTotal.sort_values('saleTotal',inplace=True,ascending=False)df_saleTotal[:20]景点等级分布从厦门景点等级分布来看,3A以上的景点比例不到5%。dfdf_star=df["star"].value_counts()df_stardf_star=df_star.sort_values(ascending=False)#print(df_star)c=(饼图(init_opts=opts.InitOpts(theme=ThemeType.WALDEN)).add("",[list(z)forzinzip(df_star.index.to_list(),df_star.to_list())]).set_global_opts(legend_opts=opts.LegendOpts(is_show=False),title_opts=opts.TitleOpts(title="景点等级分布",subtitle="数据来源:去哪儿网\n图:菜J学Python",pos_top="0.5%",pos_left='left')).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%",font_size=16)))c.render_notebook()df[df["star"]!='none'].sort_values("star",ascending=False)下面是过滤后的部分3A景点aboveandabove:总结通过上面的简单分析,我们大致可以得到以下启示:1.厦门是一座典型的海滨休闲城市,拥有丰富的海洋景观和人文景观;2、厦门的旅游景点主要分布在思明区,其他地区比较分散;3、厦门大学名气最高,其次是鼓浪屿;4、鼓浪屿门票销量遥遥领先于厦门其他景点;温馨提示:疫情尚未完全散去,元旦游玩尽量避开危险区域。