国庆去哪浪?且听 Python 帮你分析分析

2019 年国庆立刻就要到来
html

今年想着来点新花样吧
玩确定是要去玩的
否则怎么给祖国庆生
程序员

那去哪里玩人少 big 还高呢?
咱不是程序员嘛
那就用数据分析下
看看哪些地方值得去算法

1、目标

使用 Python 分析出国庆哪些旅游景点:好玩、便宜、人还少的地方,否则拍照都要抢着拍!json

2、获取数据

既然作数据分析确定要先搞到数据,最开始在一些官方网站查找旅游信息,毕竟官方的数据可信度高点, 但我一无所得,有点失望!api

而后寻找其余替代方案:爬取出行网站的旅游景点售票数据,这样也能够反映出旅游景点的热度!浏览器

首先想到《去哪儿》,这里必需要安利一波去哪儿,一样的酒店一样的房间,去哪儿价格基本都是最低,因此也用的最多!微信

选好学习对象,那我就开始吧!数据结构

ps:本教程仅用做学习交流,若有侵害任何人权益,请联系原做者删除!app

1.爬取单页数据

咱们能够在哪去儿的门票页:http://piao.qunar.com/ticket/list.htm?keyword=)echarts

搜索:国庆旅游景点,就能够看到推荐的景点的一些信息,如:名称、地区、热度、销量、价格、等级、地理信息等等,信息应该说是比较全,良心!

而后按下 F12 打开浏览器调试窗口,查找加载数据的url(翻页就能够看到)

居然直接返回了 Json 数据,真是太方便了


最后使用 requests 库写一个 get 请求就能够了。


这样一页数据就抓取下来了,是否是很简单?

这里说下去哪儿门票页抓取数据仍是很简单,不须要登陆、不须要代理 、甚至不须要 header 也能够成功,后面批量抓取页没出现限制,相对于淘宝来讲简单了许多!

2.提取有效信息

既然数据拿到了,那就看看数据结构,而后提取本身想要的属性吧

这里提取了:ID、名称、星级、评分、门票价格、销量、地区、坐标、简介这些信息,基本有效信息都保存起来!

3.保存到 Excel

须要的数据提取出来以后,咱们就能够将他们保存起来。这里咱们使用Pandas 库保存 Excel 文件。

没有安装 Panda s库的同窗安装一下

pip install xlrd
pip install openpyxl
pip install numpy
pip install pandas

这里单页数据的处理就完成了,爬取、解析、保存三步走~

4.批量爬取

批量爬取也很简单,先找分页数据,多点几下页数比较不一样参数就能看出来


通过一会的分析,咱们即可以看出参数 page 就是分页参数了,这样咱们在外层写一个 for 循环,把页数传入就能够实现批量爬取。


那个 36 是我在网页上看到了,固然也能够实现自动判断是否爬取完成,只要判断每次返回的条数便可!

看看批量爬取的效果。

三 、分析数据

数据都下载完毕后,就要思考如何去利用分析这些数据了,简单作了几个分析:

  1. 景点门票销量排行分析

  2. 景点门票销售额排行分析

  3. 各省各等级景点数分析

  4. 景点销量热力图分析

  5. 推荐景点分析


咱们使用的可视化库仍然是:pyecharts 库 ,更多维度分析等待你去思考~

1.景点门票销量排行分析

咱们先来分析下景点门票销量排行


咱们建立了一个透视表,而后根据销量排序!最后生成柱状图,一块儿来看看效果:


咱们能够看到迪士尼门票销量排第一

2.景点销售额排行分析

销售额=单价*销量,咱们能够将每行的 price 和 sale 相乘算出销售额。


咱们将获得的销售额数据放回 df 中,而后再排序。


迪士尼真是吸金厉害!

3.各省各等级景点数分析

因为时间缘由,该项分析暂未完成,本想分析下每一个省每一个等级的景点有多少个,可是因为时间缘由暂未完成,感兴趣的同窗能够下载源码本身试试 ,就当课后做业叭~

4.景点销量热力图分析

以前咱们也作过不少热力图,都是用的pyecharts库,今天咱们来点不同 的,咱们使用百度地图开放api(免费)作一个热力图,你首先要作的就是申请一个百度地图开放平台的应用,操做很简单。

如何申请能够 直接百度或者看看这篇文章:

https://jingyan.baidu.com/article/363872eccda8286e4aa16f4e.html

须要注意的是:在申请应用的时候类型必定要选浏览器


而后你就能够下载一个百度热力图的 demo 的 html,在 html 中把 ak码换成本身的。


换完 ak 码就要换 json 据了,咱们先生成和默认数据同样格式的json 数据,而后再替换掉。


最后来看看效果吧,动态地图支持放大缩小,可仔细查看各省、市、区景点热力图

5.推荐景点分析

应该推荐怎样的景点呢?认为应该是:高评分、销量少、价格便宜

推荐系数和评分红正比,和销量、价格成反比,因此设计了一个最简单的算法:

瞎推荐系数=评分/(销量价格) * 1000

来看看这个简易的推荐算法得出的结果


能够看到在这个瞎推荐 TOP20 中国外景点不少,确实国内到国庆了哪里其实人都是挺多的!

若是你以为我设计的推荐算法太 Low 了,能够本身思考下如何设计更合理,而后本身动手调试,期待看到不同的结果!

源码我已经上传到公众号后台,能够关注公众号 AirPython,后台回复 浪一把 获取。


推荐阅读:


薅羊毛 | Python 带你抢视频红包,不放过一个红包!


自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~






THANDKS

- End -

本文分享自微信公众号 - AirPython(AirPython)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索