本文编辑:刘子艳
技术总编:戴 雯
阳春三月出游季,踏春赏花正当时。一段时间以来,想必大家都被武汉烂漫璀璨的樱花刷了屏迷了眼。在这踏春出游的大好时节,你有没有带上家人、爱人、朋友去“十里樱花”体验一番三生三世的缘分呢?欢迎大家留言告诉我们你的出游轶事哦~未能出游的朋友也不用羡慕,现在我们就前往去哪儿网(网址为https://www.qunar.com/),看看在出游的黄金三月,哪些城市、哪些景点、哪些旅游主题最吸引人!为你的下一次旅行提前做好计划攻略吧~~~ 我们来到去哪儿网的境内门票页面(网址为https://piao.qunar.com/),找到【全国热门城市】板块,如下图所示。尝试点击各个热门城市,比如“北京”,可以发现每个热门城市是一个单独的页面,其url精简后为:https://piao.qunar.com/ticket/list.htm?keyword=%E5%8C%97%E4%BA%AC其中keyword 参数的值为“北京”的url编码。进入到具体的城市页面,比如“北京”,我们所需要的景点名称name、景点价格price、景点门票月销量sales、景点主题theme都在此页面上,如下图所示。进一步发现,各城市中不同的景点主题也有不同url,比如“北京”的“文化古迹”的精简url为:https://piao.qunar.com/ticket/list.htm?keyword=%E5%8C%97%E4%BA%AC&subject=%E6%96%87%E5%8C%96%E5%8F%A4%E8%BF%B9&page=1其中subject 参数的值为“文化古迹”的url编码。构造热门城市的url,获取各个城市景点主题; 构造各个城市具体的景点主题url,使用循环翻页爬取; 将各城市的景点数据合并,数据结构如下图所示:
爬虫程序换汤不换药,限于篇幅,这里不再介绍了,感兴趣的朋友可以在后台对话框内回复关键词“ 去哪儿 ”,您将获得:三月,去哪儿旅行线上门票热门城市销售情况如下图所示。三亚、北京、上海遥遥领先,占14个热门旅游城市3月门票销量的65.3%。三亚和北京作为传统旅游大省,门票销量近60000人次,根据去哪儿网展示的门票价格计算,三亚、北京本月门票收入分别为人民币875万元和330万元,考虑到游客带来的交通、住宿、饮食消费,旅游拉动经济果然名不虚传! 上图的Stata作图程序如下:
*pic1 use HotCities,clear //HotCities.dta是爬取后合并的文件,包括14个热门城市的所有景点信息 gen TotalSale = (sales * price)/10000 collapse (sum) sales TotalSale,by(city) replace TotalSale= int(TotalSale) gsort -sales encode city,gen(x_axis) twoway (bar sales x_axis, /// xtick(1(1)14) xlabel(1 2 3 4 5 6 7 8 9 10 11 12 13 14, valuelabel) /// xtitle("cities") fcolor("purple%40") ytitle("人次",axis(1) placement(north))) /// (scatter TotalSale x_axis, /// yaxis(2) m(T) mc(midblue) lc(midblue) sort(x_axis) lwidth(0.5) c(l) mlabel("TotalSale") mlabcolor(black) /// ytick(0(200)800,axis(2)) ylabel(0(200)800,axis(2)) ytitle("万元",axis(2) placement(north)) legend(on)) graph export pic1.jpg,as(png) replace 既然如此,我这就去三亚!——别着急,让我们再来看看热门城市的代表旅游项目,跑去三亚找游乐园可不是一个明智的选择哦~不出所料,三亚的旅游项目中,自然风光占据了一大半(海滨、海岛、阳光和沙滩,妙不可言呀~);北京和西安作为华夏古都,能让你在朱红的宫墙、深深的庭院里感受历史的车轮、深刻体会中华文化的深远悠长;被称为魔都的上海竟以上海迪士尼乐园“一己之力”跃居前三。令人意外的是,网红城市杭州、成都和武汉的成绩并不亮眼,看来还需要着力培养自己独特的旅游文化和旅游项目才行。
*pic2 use HotCities,clear collapse (sum) sales,by(city theme) gsort city -sales bysort city: keep if _n == 1 gsort -sales replace theme = "迪士尼乐园等活动" in 3 gen x_axis = _n //生成x轴的数值
*为不同景点主题生成不同的颜色 gen colors = "bluishgray" replace colors = "midgreen" in 2 replace colors = "cranberry" in 3 replace colors = "gold" in 4 replace colors = "sand" in 5 levelsof theme,local(the) local a = 1 foreach i in `the'{ dis "`i'" local color = colors[`a'] local bar_`a' = `"bar sales x_axis if theme == "`i'",fcolor("`color'")"' local a = `a' + 1 }
*作图 twoway (`bar_1') (`bar_2') (`bar_3') (`bar_4') (`bar_5' /// xtick(1(1)14) xtitle("cities") /// xlabel(1 "三亚" 2 "北京" 3 "上海" 4 "西安" 5 "苏州" 6 "杭州" 7 "成都" 8 "武汉" 9 "重庆" 10 "深圳" 11 "广州" 12 "厦门" 13 "青岛" 14 "大连") /// legend(label(1 "城市观光") label(2 "文化古迹") label(3 "游乐场") label(4 "自然风光") label(5 "迪士尼乐园") position("1"))) graph export pic2.png,as(png) replace 令人激动的时刻到了,到底哪些景点最受人欢迎呢?如下图所示,分别列出了14个热门旅游城市门票销量最高的景点。一眼望去,上海迪士尼乐园“居高临下”、睥睨众景点,看来大家都是“迪士尼在逃公主”呢 ^_^ 。北京故宫、西安秦始皇陵兵马俑高居【文化古迹】之首,谁不想去一次凝聚千年皇权的故宫、看一看横扫六合、一统天下的兵马俑呢。
*pic3 use HotCities,clear gsort city -sales by city: keep if _n == 1 gen x_axis = _n *生成值标签 forvalues i = 1/14{ local y = sales[`i'] + 500 local x = x_axis[`i'] local na = name[`i'] local text_`i' = `"`y' `x' "`na'""' } *作图 twoway bar sales x_axis, /// fcolor("midgreen") xtick(1(1)14) xtitle("cities") /// xlabel(1 "三亚" 2 "上海" 3 "北京" 4 "厦门" 5 "大连" 6 "广州" 7 "成都" 8 "杭州" 9 "武汉" 10 "深圳" 11 "苏州" 12 "西安" 13 "重庆" 14 "青岛") /// text(`text_1' `text_2' `text_3' `text_4' `text_5' `text_6' `text_7' `text_8' `text_9' `text_10' `text_11' `text_12' `text_13' `text_14') graph export pic3.png,as(png) replace 三月是赏花的时节,春回大地、万物复苏,缩了一整个冬天的脖子终于感受到了阳光的温度。人同此心,游客们除了参观【文化古迹】外,外出游览自然风光、携家同游【公园】成了不二的选择,樱花、桃花、迎春花万花齐放,翠鸟、蓝鸟、山雀鸟“声入人心”。
*pic4 use HotCities,clear collapse (sum) sales,by("theme") gsort -sales replace theme = "迪士尼乐园等" in 8 //原主题为“活动”,含义模糊,故替换为占比达90%的“迪士尼乐园” encode theme,gen(x_axis)
gen temp = _n levelsof temp, local(xlabel_num) twoway (bar sales x_axis if sales<10000,fcolor("orange%50")) /// (bar sales x_axis if sales>10000,fcolor("red%80") /// xlabel(`"`xlabel_num'"', valuelabel angle(90)) /// legend(label(1 "<10000人次") label(2 ">=10000人次"))) graph export pic4.png,as(png) replace 废话说了这么多,我到底应该去哪儿来一场说走就走的旅行呢?我们的答案是:想潜水,去蜈支洲岛;想参观文化古迹,去北京故宫;想泡一场呼噜呼噜的温泉,去华清宫;想玩大摆锤等游乐项目,去成都国色天乡;迪士尼公主在线找家,请去上海迪士尼乐园;海滨海岛和春暖花开,西岛是绝配;踏春采花去南山文化旅游区;想以不运动、不走路、能躺不站的形式观光请前往东方明珠塔,城市观光,坐在游览车上参观城市。
*pic5 use HotCities,clear collapse (sum) sales, by("theme" "name") gsort theme -sales by theme: keep if _n == 1 gsort -sales
encode theme,gen(x_axis) gen temp = _n levelsof temp,local(xlabel_num) *生成值标签 forvalues i = 1/32{ local y = sales[`i'] + 500 local x = x_axis[`i'] local na = name[`i'] local text_`i' = `"`y' `x' "`na'""' } *避免繁杂,只显示人次大于2000的值标签 local text_content = "" forvalues i = 1/13{ local text_content = `"`text_content'"' + " " + `"`text_`i''"' } *作图 twoway (bar sales x_axis if sales<2000,fcolor("green%50")) /// (bar sales x_axis if sales > 2000,fcolor("blue%50") /// xlabel(`"`xlabel_num'"',valuelabel angle(90)) /// text(`text_content') legend(label(1 "<2000人次") label(2 ">2000人次")))
graph export pic5.png,as(png) replace 春天已经来了,夏天还会晚吗?清明的雨纷纷落了,五一长假还会远吗?一场扫除阴霾、沐浴阳光、阖家欢乐的旅行应该计划起来了! 最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持! 微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。 此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。 投稿邮箱:statatraining@163.com投稿要求: 1)必须原创,禁止抄袭; 2)必须准确,详细,有例子,有截图; 注意事项: 1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。 2)邮件请注明投稿,邮件名称为“投稿+推文名称”。 3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。 |