國慶去哪浪?且聽 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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索