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.mzph.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…