寻找春日气息|本月最受欢迎的景点都在这里!
本文作者:王玉婷,中南财经政法大学金融学院 本文编辑:刘子艳
技术总编:戴 雯
Stata&Python云端课程来啦!
寒雪梅中尽,春风柳上归。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》;原价600元的正则表达式课程,现在仅需49.9元,详情请查看推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》;原价600元的基本字符串函数课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》;原价600元的网络爬虫课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出网络爬虫专题课程》;原价600元的文本分析课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出文本分析网络课程》。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!阳春三月出游季,踏春赏花正当时。一段时间以来,想必大家都被武汉烂漫璀璨的樱花刷了屏迷了眼。在这踏春出游的大好时节,你有没有带上家人、爱人、朋友去“十里樱花”体验一番三生三世的缘分呢?欢迎大家留言告诉我们你的出游轶事哦~未能出游的朋友也不用羡慕,现在我们就前往去哪儿网(网址为https://www.qunar.com/),看看在出游的黄金三月,哪些城市、哪些景点、哪些旅游主题最吸引人!为你的下一次旅行提前做好计划攻略吧~~~
01爬虫思路
keyword
参数的值为“北京”的url编码。subject
参数的值为“文化古迹”的url编码。
构造热门城市的url,获取各个城市景点主题;
构造各个城市具体的景点主题url,使用循环翻页爬取;
将各城市的景点数据合并,数据结构如下图所示:
去哪儿
”,您将获得:
去哪儿完整爬虫程序
爬虫结果xlsx文件和dta文件(后续作图使用的数据集均为HotCities.dta)
可视化作图程序
02三月最受欢迎的景点你去了吗?
三月,去哪儿旅行线上门票热门城市销售情况如下图所示。三亚、北京、上海遥遥领先,占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
*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
欢迎大家点赞、评论、转发哟~
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!
Python与数据库交互—浅述pymysql
偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇
大家用Stata来“找茬”
“粉墨登场”——多期双重差分法(DID)的Stata操作
Python与百度地图合璧,绘制棒呆的热力地图
【数据可视化】统计图绘制神器:Seaborn
检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验【爬虫实战】双一流大学的月关注度
【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析
进化的标签管理助手——elabel命令“学术明星”——双重差分法(DID)的Stata操作
偷懒小妙招| selenium之玩转鼠标键盘操作(上)【爬虫实战】南京地铁又上热榜——客流量分析
Stata中字符串的处理
我在哪里?调用高德API获取地址经纬度信息
超级简单的条件函数,轻松生成虚拟变量
Python云端课程福利大放送!0基础也能学~
【爬虫实战】“我们,继续新故事”——爬取LOL英雄皮肤
“人像动漫化”—Python实现抖音特效
《唐探3》做错了什么?|来自150万字影评的证据
爬虫俱乐部年度总结|《请回答2020》
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。