航班航行距離與延誤時間有什麼關係?
一、如何編寫函數
首先是自定義函數,簡單說就是自己定義一個函數,包括功能、輸入、輸出。
例如下圖:
圖中,add是功能,xy是輸入,z是輸出。接著是控制語句,包括循環語句和條件語句。例如:
最後,是將「自定義函數+控制語句」結合起來:
(1)練習:每天吃3頓飯,一頓飯5元,飯卡有1000元,判斷是否需要去銀行取錢。
(2)下面這道題,是參考社群的小夥伴修改的代碼進行練習。(3)然後我根據小夥伴修改的代碼,再想想如果我想知道哪天需要充卡,可以怎麼弄呢?
至此,對於自定義函數和控制語句有了更進一步的認識了。現在開始進行本文的主題內容,航班航行距離與延誤時間有什麼關係?
二、數據處理
在進行數據處理之前,我們需要捋一捋數據分析的步驟:
1、理解數據
2、數據導入
3、數據預處理
4、數據計算
5、數據顯示。
2.1理解數據:航班數據
航班數據主要有飛行的年月日、起飛延誤時間、到達延誤時間、航行里程數、目的地等等。
2.2數據導入
R中有航班數據,我們需要安裝nycflights13包導入數據,同時需要安裝dplyr包做數據預處理使用。
2.3數據預處理步驟
2.3.1選擇子集
在這裡我們的分析目標是航班航行距離與延誤時間的關係,所以只需要選擇year(年)、month(月)、day(日)、dep_delay(起飛延誤時間)、arr_delay(到達延誤時間)、distance(航行里程)、dest(目的地)等數據。
選擇子集可以用select()函數。
有三種方法可以使用:
方法一:直接寫需要的列名:
方法二:連續的列如何選擇?方法三:如何去掉不需要的列?
方法四:模糊查詢1)starts_with("abc")
2)ends_with("xyz")
3)contains("ijk")
4)matches("(.)\1")
2.3.2列名重命名因為dest這個名稱不能直觀表達出它的含義,所以將dest的列名換成destination。
2.3.3刪除缺失數據
dplyr包查找數據,使用filter()函數完成查找。
原來的數據是336766行數據,刪除缺失數據後變成327336行數據行數據。2.3.4數據排序
dplyr包數據排序,使用arrange()函數完成查找,默認是升序,若為降序,標註desc。
2.3.5數據計算數據處理模式有Split+Apply+Combine,其中:
Split(數據分組):可以指定目標變數,將數據進行分組。由於本次分析的目標是找出航行距離與到達延誤時間的關係,所以我們得根據到達目的地對數據進行分組,從而計算出不同目的地的平行航行距離以及平均延誤時間;
Apply(應用函數):對不同組的數據,應用相應函數獲取所需統計指標。
Combine(組合結果):將計算後的統計指標值與第一步當中對應的分組進行組合。
對於使用dplyr包進行數據計算,分組函數group_by()和組合函數summarise(),其中分組函數group_by()對應數據處理模式中的Split,組合函數summarise()對應數據處理模式中的Apply+Combine。
1)數據分組,使用group_by()函數。
根據目的地共分成了104組,也就是有104個目的地。2)進行應用函數和組合結果步驟,使用summarise()函數。
計算同一目的地的航班數量、平均航行距離、平均延誤時間。為了保證分析結果的準確性,我們需要進行噪音數據的移除,在這裡將航班數量少於20個的數據移除,使用filter()函數進行移除噪音數據。
補充一個管道知識:%>%。管道:%>%是最常用的一個操作符,就是把左側的數據或表達式,傳遞給右側的函數調用或表達式進行運行,可以連續操作就像一個鏈條一樣。
使用管道,上面的代碼可以更改為:
代碼清爽很多。
2.3.6數據顯示
使用ggplot2函數繪製圖表,使用前需要安裝ggplot2包。繪圖模板:
ggplot(data = <DATA>)+<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>)
前半部分是創建畫板,後面部分是添加圖層,其中「+」不可以省略。
到這裡,數據分析就結束了,從圖可以看出,航班延誤時間和航班距離不是線性關係,也就是說兩者不存在關係。
推薦閱讀:
※股票分析與資產組合(python)
※鑽石價格的預測
※入門機器學習到底需要多少數學知識
※R語言實戰之簡單數據處理
TAG:数据分析 |