python畫端午節_我想帶你去旅行,我用Python提前做了一份端午旅游攻略,請收下!...

旅游是調節心情的有效途徑,越來越多的上班族和學生期待利用假期時間外出游 玩來開拓眼界、舒緩壓力。然而真正有了假期,許多人卻會因“去哪玩”的問題倍感困惑,六月份正是出行的好時節,期間還有端午節小長假,就讓我們一起來學習如何利用python來安排自己的出行計劃吧。

一.數據的獲取

最近幾年,既省錢又休閑的自助游逐漸成為年輕人出行的首選,這里推薦一個我個人比較喜歡的旅游網站——螞蜂窩,這次通過分析“驢友”們的出行計劃來規劃我們自己的行程,第一步當然是爬取網站數據啦

1.分析目標網頁

為了獲取大家的出行信息,我們進入網站的“結伴”板塊,查看“一個月以內”的出行計劃,可以看到隨著頁面的更改url并沒有發生變化,初步判斷該網頁是通過js加載的,要想爬取首先得找到真實url和返回的數據格式。

經過一番嘗試,我們成功找到了請求返回的真實url和關鍵參數,這里返回的是json格式的數據,里面包含了一個html文本。

2.確定抓取內容

在正式開始爬取數據之前,我們要先確定需要爬取哪些數據。行程的列表頁清晰地展現了目的地、行程簡介、發起人ID和性別(呵呵),雖然這些信息非常有參考價值,但是如果能獲取更多信息無疑會對我們的行程規劃更有幫助,所以還是要進入詳情頁來看一看。

可以看到,詳情頁中對出發時間、行程歷時、出發地點等都有詳細說明,此外還有報名結伴人員情況,這項數據能在很大程度上反映小伙伴們的出行意向,所以一定要拿下來。

3.正式爬取數據

總體思路是爬取索引頁中每一個行程的發起人和詳情頁url,之后進入詳情頁抓取出發時間、歷史、目的地、出發城市、希望人數以及報名人員情況等數據,每個行程的索引頁數據和詳情頁數據合 并后作為該行程的完整數據進行存儲。以下是爬蟲程序的總入口:

payload參數:flag決定了行程的排序方式,可選值為1、2、3,分別代表“即將出發”、“最新發布”、“熱門結 伴”;

offset表示當前頁數,默認從0開始;middid表示行程目的地,不確定目的地值為0;timeFlage代表出 發時間,值為3表示選取一個月內的行程。

get_info()方法:抓取每一頁的行程信息并翻頁,如果無法獲取有效信息則說明爬取結束。

數據存儲:由于數據量不大,可以先全部存儲到一個dataframe數據結構中,再一次性寫入csv文件。

二. 數據清洗

我們來看看獲取到的數據是什么樣子的,可以看到,每條數據中都有很多干擾信息:

“出發時間”一欄我們想要 的僅僅是日期數據;

“報名人數”一欄我們想要的僅僅是數字,而不需要多余的修飾文字等等;

“部分出行” 計劃涵蓋了多個目的地,這對我們的旅游目的地分析是非常不利的

所以,我們必須先對獲取到的數據進行清洗, 以期為正式的數據分析奠定基礎。

1.規范格式

首先對歷時、希望人數、報名人數(女)、報名人數(男)這幾項數據進行清洗,僅保留數字部分;其次對出發是 按、出發地點相關數據進行情況,取到“:”及前面的內容。感謝pandas.Series.str方法,使我們可以非常簡單地完 成上述工作,功能函數如下:

only_num(self, col_list):去除數據中的非數字部分。

no_colon(self, col_list):去除數據中的“:”及其前面的內容。

2.拆分目的地

剛才說到過,一個行程中包含多個目的地會對我們的分析造成干擾,這里的解決思路是對目的地數據進行拆分。

將一列數據拆分成X列(X為該行程包含的目的地個數),同樣是使用pandas.Series.str方法,代碼如下:

三.數據分析

現在我們可以對數據進行分析查找六月份的旅行規律了,為了便于觀察,這里使用pyecharts進行可視化處理。

1.男女比例

首先對參與出行計劃的人員性別進行分析,利用dataframe的sum()和groupby().count()方法可以很容易獲得行程 發布者和參與者的性別分布:

從圖中可以看出,發起人以女性居多,約占總數的60%,而參與者剛好相反,男性比 例約為60%,估計是女同胞們更擅長精心策劃行程,而男同胞們大多比較“懶”吧~

2.出發時間

這里我們首先用dataframen的groupby()方法,以“出行時間”為關鍵字對數據進行分組,分別統計每天的行程數量 和參與者數量,然后畫出折線圖。

從結果來看,6月15、16兩天是六月份出行的高峰期(這個時間剛好開始端午節假期),端午節有出行計劃的朋友 們記得提前準備哈。除此之外的幾個波峰也都出現在周末,看來喜歡自助游的朋友中還是上班族(也可能是大學 生)居多啊。

3.目的地選擇

先來分析行程發布數據,首先將數據中所有的目的地加入到一個list中(包含重復數據),然后使用collections中的Counter()方法統計每個目的地出現的頻次,最后制圖。

圖中列出了頻次較高的幾個目的地,彩條越長表示出現的頻次越多。稍微留意下我們會發現,大家比較青睞的都是一些商業化程度比較低的地區,比如拉薩,新疆!

其實作為一名自由行愛好者,我同樣比較喜歡更加原始和純粹的風光,對于沉淀心情確實會起到更好的效果,大家如果有出行計劃又不知道去哪玩的話,不妨從上面的目的地中選一下。

4.參與者情況如何

首先分別統計出各個目的地報名的男性數量和女性數量儲存到兩個dict中,分別取參與 人數最多的10個目的地,最后將兩組數據合并、去重......

然后我們會驚奇地發現,雖然兩個序列中具體排名不盡相 同,但是男性和女性最想去的10個目的地居然完全一致。

不過各個地點的男女人數還是有較大差異的,如果想來一場完美的邂逅,或許下面這張圖會有點幫助哈。

上文內容不用于商業目的,如涉及知識產權問題,請權利人聯系博為峰小編(021-64471599-8017),我們將立即處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS: 在Object-C中監聽javascript事件( Javascript communicating back with Objective-C code)

在iOS開發之Objective-C與JavaScript交互操作 中我們可以通過stringByEvaluatingJavaScriptFromString 去實現在obj-C中獲取到相關節點屬性,添加javascript代碼等功能。但是我們如何監聽到javascript的響應事件呢。在MAC OS中有效的API去實現,但iPhone沒…

ECharts-圖表回執組件

測試地址:http://echarts.baidu.com/doc/example.html轉載于:https://www.cnblogs.com/HOH/p/3868617.html

matlab r2007課后答案,《MATLAB R2007基礎教程》習題答案.doc

打開“圖形窗口”,熟悉其中各個菜單和工具的功能和用法參考答案:略編寫程序,該程序在同一窗口中繪制函數在 之間的正弦曲線和余弦曲線,步長為 ,線寬為 4 個象素,正弦曲線設置為藍色實線,余弦曲線…

第一本書14單元

14.linux中設備的訪問*****1.設備的訪問******1.設備識別/dev/xdxn /*硬盤設備/dev/sdal/dev/cdrom /*光驅/dev/mapper/* /*虛擬設備****.設備的發現*****fdish -l /*查看真實存在的設備cat /proc/partition /*系統能夠識別的設備blkid /*系統能夠掛載使用的設備df /*查看設備被…

夜深了,發點無聊的東西

研究一個東西遇到gcnew這個關鍵詞,mark一下!new和gcnew的區別。 C/CLI中使用gcnew關鍵字表示在托管堆上分配內存,并且為了與以前的指針區分,用^來替換* ,就語義上來說他們的區別大致如下: 1. gcnew返回的是一個句…

變速積分pid控制器matlab,變速積分PID控制系統設計.docx

課程設計報告設計題目變速積分PID控制系統設計課程名稱計算機控制技術B姓名 蘇丹學號 2008100731班級自動化0803 教師閆高偉摘 要錯誤!未定義書簽。Abstract第1章數字PTD及變速積分簡介錯誤!未定義書簽。TOC \o "1-5" \h \z 1數字PTD發展介紹1HYPERLINK \l "boo…

百度關鍵詞抓取工具_VBA利用XMLHTTP抓取百度查詢關鍵詞結果的個數

大家好,我們今日講解"利用XMLHTTP抓取百度查詢關鍵詞結果的個數",這節內容是"VBA信息獲取與處理"教程中第六個專題"VBA中利用XMLHTTP完成網抓數據"的第二節。第二節 利用XMLHTTP抓取百度查詢關鍵詞結果的個數在上一講中我們講解了一些…

多系統通訊-DotNetMQ

很久都沒有寫博客了,從15年4月份一直忙到現在,我才有時間去做梳理和總結,因為我提離職了,感覺整個世界突然變得不一樣,隨著而來的就是心情的放松,寫一篇文章也是對過去一年多工作的梳理,加深印象…

九大現代病!中槍了嗎?

現代人在享受現代化的生活和工作方式帶來的便捷之時,也為此付出了不小的代價,下面列出的九大現代病就是典型的例子,看看你有沒有中槍。 辦公臀 常坐辦公室,如果你發現屁股越坐越大,大腿越坐越粗,你可能有了…

Java學習筆記(4)——枚舉類型

1.在類別(Class)或接口(Interface)中宣告常數加以管理,這只是讓您存取與管理常數方便而已,來看看這個例子: public void someMethod() {....doOp(OpConstants.TURN_RIGHT);.... } public void d…

驅動提取軟件_深入分析施耐德工控軟件代碼執行漏洞

更多全球網絡安全資訊盡在邑安全簡介在本文中,我們將為讀者詳細介紹Claroty Research團隊的Amir Preminger和Sharon Brizinov是如何組合利用兩個漏洞,來觸發施耐德工控軟件EcoStruxure Operator Terminal Expert的代碼執行漏洞,從而在首屆舉辦…

ubuntu 網卡突然無法連接

今天要用到VM BT的Namp掃描服務器端口,發現橋接后無法使用。ifconfig 只看到 lo地址,看不到以太網網卡地址使用lspci 查看是否安裝了以太網網卡驅動lscpi | grep Ethernet02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LA…

atitit.表單驗證 的dsl 本質跟 easyui ligerui比較

atitit.表單驗證的dsl 本質跟 easyui ligerui比較 1. DSL 聲明驗證 1 2. 自定義規則 1 3. 正則表達式驗證,可以擴展實現 2 4. 犯錯誤消息提示,generic canBeEmpty is good 3 5. Prevent the form to submit when invalid 3 6. 為空則不驗證,不為空則驗證&#xff0…

StartActivityForResult

StartActivity 用startActivityForResult(intent, requestcode);啟動子功能模塊activity onActivityResult(int requestCode, int resultCode, Intent data)對子activity返回進行判斷處理 public class StartActivity extends Activity implements OnClickListener {private Bu…

micropython 串口寫文件_MicroPython通過2G模塊串口收發短信

集成2G通信、定位模組,賦予物聯網特性。本例使用M6220,它是一款基于eSIM技術的2G模組,支持GSM/GPRS,提供GPS北斗雙模定位功能,并具備一定的數據處理能力,其2G工作頻段有GSM850、GSM900、DCS1800和PCS1900&a…

洛谷P1130 紅牌

題目描述 某地臨時居民想獲得長期居住權就必須申請拿到紅牌。獲得紅牌的過程是相當復雜 ,一共包括N個步驟。每一步驟都由政府的某個工作人員負責檢查你所提交的材料是否符合條件。為了加快進程,每一步政府都派了M個工作人員來檢查材料。不幸的是&#xf…

GPS坐標換算

30.8872 》——>300.8872*60 53.232 ——>530.232*60 13.9230: 53 13.92"30: 53 13.92"》3053/6013.92/360030.887199同經度兩點之間距離dla30.887m * [差值/(1/3600)] 30.887m * 差值 *3600 111193.2m * 差值 同緯度兩點之間距離dlo30.887m * [差值/(1…

企業級應用框架(五)IOC容器在框架中的應用

前言 在上一篇我大致的介紹了這個系列所涉及到的知識點,在本篇我打算把IOC這一塊單獨提取出來講,因為IOC容器在解除框架層與層之間的耦合有著不可磨滅的作用。當然在本系列前面的三篇中我也提供了一種基于反射的解耦方式,但是始終不是很優雅&…

后端開發需要學什么_都2020年了,還在糾結學什么語言?| 后端篇

幾個禮拜前,一個學弟問我:“Ray,我打算之后要找工作了,不過現在自己沒有特別深入的語言,最近想找一門好好學一下,你覺得學什么語言好呀?”我表示:“這個要看你求職方向、個人喜好、市…

python掃描ip的端口打開情況

我們的韓國bss系統上線之后,要求對主機的端口、資源使用進行統計,端口每個主機去看,太費勁了,所以,就寫了這樣一個小程序,不是很完美但是,可以用啊!哈哈哈,別噴&#xff…