大数据带你看穿航班晚点的套路
前言:
最近雾霾导致航班延误或者取消的频率大大增加,就抛开雾霾不说,一般时日里也经常会有航班晚点,那么你是否想过航班晚点的套路到底是什么?——每天航班最繁忙的时间段是哪些?飞哪最准时?出发延误的重灾区都有哪些?……等等,这些可不是随便就可以猜想出来的,需要基于一定的数据量的分析才能大概得出一个结果,也就是所说的“套路”。
那么到底怎样来分析数据得出套路呢?这个项目【大数据带你看穿航班晚点的套路】可以带你看穿航班晚点的套路。
项目简介:
该项目通过Spark提供的 DataFrame、 SQL 和机器学习框架等工具,结合数据可视化技术,对航班起降的记录数据进行分析,尝试找出造成航班延误的原因,以及对航班延误情况进行预测。
数据集简介及准备
我们知道,任何数据分析之前都要进行数据集的准备以及清洗,剔除一些无关的数据因素,得到想要的数据集。
数据集简介
项目用到的航班数据集是 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)“数据可视化”,最终成品实际上是一个网页,我们会在美国地图上根据每个州的准点航班数量的不同,绘制出相应的颜色。并且当鼠标指向某个州的地图块时,会在该州地图上方显示一个提示框。提示框中的具体内容为该州的名称,以及对应的准点航班数量。效果图如下:
如果你想要详细的对以上的相关知识进行学习,点击点击【大数据带你看穿航班晚点的套路】即可马上查看,详细的开发文档和代码详解,更有在线开发环境可以随时动手操作学习。
前言:
最近雾霾导致航班延误或者取消的频率大大增加,就抛开雾霾不说,一般时日里也经常会有航班晚点,那么你是否想过航班晚点的套路到底是什么?——每天航班最繁忙的时间段是哪些?飞哪最准时?出发延误的重灾区都有哪些?……等等,这些可不是随便就可以猜想出来的,需要基于一定的数据量的分析才能大概得出一个结果,也就是所说的“套路”。
那么到底怎样来分析数据得出套路呢?这个项目【大数据带你看穿航班晚点的套路】可以带你看穿航班晚点的套路。
项目简介:
该项目通过Spark提供的 DataFrame、 SQL 和机器学习框架等工具,结合数据可视化技术,对航班起降的记录数据进行分析,尝试找出造成航班延误的原因,以及对航班延误情况进行预测。
数据集简介及准备
我们知道,任何数据分析之前都要进行数据集的准备以及清洗,剔除一些无关的数据因素,得到想要的数据集。
数据集简介
项目用到的航班数据集是 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)“数据可视化”,最终成品实际上是一个网页,我们会在美国地图上根据每个州的准点航班数量的不同,绘制出相应的颜色。并且当鼠标指向某个州的地图块时,会在该州地图上方显示一个提示框。提示框中的具体内容为该州的名称,以及对应的准点航班数量。效果图如下:
如果你想要详细的对以上的相关知识进行学习,点击点击【大数据带你看穿航班晚点的套路】即可马上查看,详细的开发文档和代码详解,更有在线开发环境可以随时动手操作学习。
欢迎大家继续关注慧邮件邮件营销平台,也可以在我们的慧邮件官网了解更多邮件营销技巧,大数据知识,也可以通过电话:400-666-5494联系到我们,更多精彩知识、活动等着你。