大数据带你看穿航班晚点的套路

前言:

最近雾霾导致航班延误或者取消的频率大大增加,就抛开雾霾不说,一般时日里也经常会有航班晚点,那么你是否想过航班晚点的套路到底是什么?——每天航班最繁忙的时间段是哪些?飞哪最准时?出发延误的重灾区都有哪些?……等等,这些可不是随便就可以猜想出来的,需要基于一定的数据量的分析才能大概得出一个结果,也就是所说的“套路”。

那么到底怎样来分析数据得出套路呢?这个项目【大数据带你看穿航班晚点的套路】可以带你看穿航班晚点的套路。

项目简介:

该项目通过Spark提供的 DataFrame、 SQL 和机器学习框架等工具,结合数据可视化技术,对航班起降的记录数据进行分析,尝试找出造成航班延误的原因,以及对航班延误情况进行预测。

数据集简介及准备

我们知道,任何数据分析之前都要进行数据集的准备以及清洗,剔除一些无关的数据因素,得到想要的数据集。

图片来自pexels.com

数据集简介

项目用到的航班数据集是 2009 年 Data Expo 上提供的飞行准点率统计数据。

此次我们选用1998年的数据集。你可以通过官方下载链接来下载,也可以获取实验楼为你提供的副本。

如果你是在自己的Spark集群上进行学习,则可以选用 2007、2008 年等年份的数据集。它们含有的航班数量更多,能够得到更多有趣的信息。

该数据集的各个字段解释如下:

此处输入图片的描述

此外,我们还会用到一些补充信息。如机场信息数据集等。

下载数据集

双击打开桌面上的 Xfce 终端,然后输入下面的命令以下载航班数据集:

wget http://labfile.oss-cn-hangzhou.aliyuncs.com/courses/610/1998.csv.bz2
此处输入图片的描述

然后使用解压缩命令对其进行解压:

bunzip2 1998.csv.bz2

解压后的 CSV 数据文件位于你使用解压命令时的工作目录中,默认情况是在 /home/shiyanlou 目录中。

同样地,下载 airports 机场信息数据集,命令如下所示。

wget http://labfile.oss.aliyuncs.com/courses/610/airports.csv

数据清洗

由于 airports 数据集中含有一些非常用字符,我们需要对其进行清洗处理,以防止部分记录字符的不能被识别错误引起后续检索的错误。

在终端中输入命令 refine 来启动 OpenRefine。 OpenRefine 是 Google 主导开发的一款开源数据清洗工具。启动命令如下。

refine

当出现下图所示的提示信息后,在浏览器中打开 URLhttp://127.0.0.1:3333/

此处输入图片的描述

浏览器中会出现 OpenRefine 的应用网页,如下图所示。请选择刚刚下载的机场信息数据集,并点击 Next 按钮进入下一步。

此处输入图片的描述

在数据解析步骤中,直接点击右上角的 Create Project 按钮创建数据清洗项目。

此处输入图片的描述

稍作等待,项目创建完成后,就可以对数据进行各种操作。实验楼在稍后会提供 OpenRefine 的详细教程,此处只需要按照提示对数据集进行相应操作即可。

点击 airport 列旁边的下拉菜单按钮,然后在菜单中选择Edit Column -> Remove this column选项,以移除 airport 列。具体操作如下图所示。

此处输入图片的描述

请按照同样的方法,移除 lat 和 long 列。最后的数据集应只包含 iata 、city、state、country 四列。

最后我们点击右上角的 Export 按钮导出数据集。导出选项选择 Comma-separated value,即 CSV 文件。

此处输入图片的描述

然后在弹出的下载提示对话框中选择“保存文件”,并确定。

此处输入图片的描述

该文件位于/home/shiyanlou/下载 目录中,请在文件管理器中将其剪切至 /home/shiyanlou 目录,并覆盖源文件。步骤如下图所示。

首先双击打开桌面上的 主文件夹,找到其中的 下载 目录。右键点击 CSV 文件,选择剪切。

此处输入图片的描述

然后回到主目录,在空白处右键点击,选择“粘贴”即可。

此处输入图片的描述

最后关闭浏览器和运行着 OpenRefine 的终端即可。

启动 Spark Shell

为了更好地处理 CSV 格式的数据集,我们可以直接使用由 DataBricks 公司提供的第三方 Spark CSV 解析库来读取。

首先是启动 Spark Shell。在启动的同时,附上参数--packages com.databricks:spark-csv_2.11:1.1.0

请在终端中输入以下代码。

spark-shell --packages com.databricks:spark-csv_2.11:1.1.0
此处输入图片的描述

注意:该操作需要联网权限。如果遇到网络访问较慢,或者是您当前不具备访问互联网的权限时,请参考文末的常见问题“无法访问外网时,应如何通过加载CSV解析库的方式进入Spark Shell”,问题解答中提供了解决方案。

导入数据及处理格式

等待 Spark Shell 启动完成后,输入以下命令来导入数据集。

val flightData = sqlContext.read.format("com.databricks.spark.csv").option("header","true").load("/home/shiyanlou/1998.csv")

在上述命令中,我们调用了 sqlContext 提供的 read 接口,指定加载格式 format 为第三方库中定义的式 com.databricks.spark.csv 。同时设置了一个读取选项 header 为 true,这表示将数据集中的首行内容解析为字段名称。最后在 load 方法中 指明了待读取的数据集文件为我们刚刚下载的这个数据集。

执行结果如下图所示。

此处输入图片的描述

此时, flightData 的数据类型为 Spark SQL 中常用的 DataFrame。

接着将 flightData 其注册为临时表,命令为:

flightData.registerTempTable("flights")
此处输入图片的描述

使用相同的方法导入机场信息数据集 airports.csv ,并将其注册为临时表。

val airportData = sqlContext.read.format("com.databricks.spark.csv").option("header","true").load("/home/shiyanlou/airports-csv.csv")airportData.registerTempTable("airports")

稍后我们将基于这些临时表来做一些 SQL 查询。

寻找“套路”

前面提到了“套路”——每天航班最繁忙的时间段是哪些?飞哪最准时?出发延误的重灾区都有哪些?……,也准备好了可用的数据集,虽说数据集中的每一条记录都朴实地反映了航班的基本情况,但它们并不会直接告诉我们每一天、每一个时段都发生了什么。为了得到后者这样的信息,我们需要对数据进行筛选和统计。

这一步的思路以及代码详解呢,点击【大数据带你看穿航班晚点的套路】即可马上查看了,这里就不多介绍了。

最后

当然,这个项目还详细的讲解了以下两方面:

  • 1)“航班延误时间预测”,也就是根据历史数据对过去进行总结,进而预测未来的航班延误时间。

  • 2)“数据可视化”,最终成品实际上是一个网页,我们会在美国地图上根据每个州的准点航班数量的不同,绘制出相应的颜色。并且当鼠标指向某个州的地图块时,会在该州地图上方显示一个提示框。提示框中的具体内容为该州的名称,以及对应的准点航班数量。效果图如下:

大数据带你看穿航班晚点的套路_第1张图片
效果图

如果你想要详细的对以上的相关知识进行学习,点击点击【大数据带你看穿航班晚点的套路】即可马上查看,详细的开发文档和代码详解,更有在线开发环境可以随时动手操作学习。

你可能感兴趣的:(大数据带你看穿航班晚点的套路)