【R图秀-1】12306列车数据可视化


作者简介Introduction

傅兴:个人公众号:Rapp


往期回顾



用R语言来试着分析一下12306官网上的列车数据。我的目的不是做一个同样的命令行火车票查看器,而是通过实战来练习如何抓取、整理、分析数据,并对分析结果进行可视化。

在抓取数据前,首先要确定列车的出发地和目的地是哪里。我选择上海作为出发地,12306官网上的其他32个热门城市作为目的地。发车时间选择十一国庆节(2016-10-01)

下面是我整理出来的32个目的地的名称和12306提供的英文缩写:

我定义了一个名为search_12306的函数,用来抓取数据。该函数调用12306的API(找到这个API的方法可以参考前面提到的那篇文章),然后用R的jsonlite包来解析API返回的json字符串,最后转成R的data.frame数据。

为了方便提取这个data.frame中的数据,我又定义了一个名为parse_tickets_info的函数来处理这个data.frame,并将整理好的数据用一个list返回。
加载的软件包和自定义的2个函数代码如下:


工具已经准备完毕,接下来就正式抓取数据。首先读入目的地文件,然后用一个apply函数将目的地参数传递给search_12306函数,抓取到的32个城市的信息存在一个list里。然后再用一个lapply函数将抓取到的每个目的地的信息传递给parse_tickets_info函数,结果同样保存在一个list里。
代码如下:


至此,数据也准备完毕,下面我们一起来作图:
1. 从上海出发的列车中,出发的高峰时间是几点钟,到达目的地的高峰时间是几点钟?

从图上可以看,中午出发的列车较少,在上午和下午各有一个出发高峰,到达目的地的时间大多在下午和傍晚。

代码如下:


2. 从上海出发的列车中,有多少是始发车,多少是过路车?

从图上可以看到,从上海到南京和杭州的列车是最多的(江浙沪的交通是最便利的),而且从上海始发的列车远远多于过路车。
代码如下:


3. 到各个城市的车次类型有哪些?

从这个图可以方便的看到,上海到哪些城市开通了高铁。
代码如下:


4. 到达某个目的地,最快和最慢的列车分别需要多长时间?

根据这幅图,大家可以估计一下坐火车到你想去的城市需要多少时间。
代码如下:


5. 十一长假就要到了,我们看看到各个城市的剩余车票还有多少,到不同的城市的订票趋势是否有差异?

从图上可以看到,1号的票已经卖的差不多了,3号和4号的车票比较富余,6号和7号的票也比较紧俏。需要注意的是,车票数据会实时变化,这幅图只代表了9月23号的余票情况。我对余票信息做了聚类,发现从上海到不同的城市的订票趋势还是有一些差异,但总体趋势是一致的。
代码如下:


今天的【R图秀】给大家展示的是如何用R来分析从上海到其他城市的列车数据,感兴趣的小伙伴们也可以研究一下自己所在城市的列车数据。




 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值