數據分析項目--如何選擇你的航班
專欄相關文章:
數據科學--numpy的基本使用
數據科學--Pandas基本使用
簡單的時間序列數據採樣和模擬股票折線圖
Pandas之數據分箱/分組/聚合/透視表
數據可視化--Matplotlib
數據可視化--Seaborn
首先我們看一個網站,這個網站是告訴你航班的情況,他會告訴你線路,每個航班的飛行時間,準點率啊等等。
然後你點擊地圖中的點就會顯示各種航班路線。以舊金山為例,看看什麼情況。
各種線路全部顯示出來了,然後不同顏色表示快慢程度。然後起點是舊金山,那麼再選擇一個終點,就選擇西雅圖吧。
這就是舊金山飛西雅圖的航班詳情,右邊會給出詳情,比如飛行時間大約2小時3分鐘,可能會有一些delay,右邊都有顯示出來,像這樣的東西可以通過分析大量的歷史航班數據得出這樣的一個預測結果,那麼下面就按照這樣的功能,來分析一份航班數據,以達到對航班情況的掌握。
首先通過notebook把原始數據文件拿進來。
數據一共有二十幾萬條,大概是半個月左右的美國各個航空公司的航班數據。
數據包括這幾個參數。
flight_date:飛行日期unique_carrier:航空公司號,比如AA就是American Airlineflight_num:飛行號碼origin:起飛機場dest:到達機場arr_delay:到達目的地機場延遲了多長時間cancelled:是否被cancel,0表示延誤,1表示沒有延誤distance:距離xxx_delay:有好幾個delay表示因為什麼造成delay多長時間actual_elapsed_time:實際所用時間
我們要重點關注arr_delay,因為不管你是起飛延誤2分鐘還是降落延誤8分鐘,只要總的時間沒有延誤那就是沒有延誤,只要arr_delay大於0那肯定你這個飛機延誤了,小於0表示沒有延誤或者提前到達。
首先第一件事情,就是按照航班具體到達的時間進行排序,看看最長延誤時間大概有多長時間。
哇塞,前10名裡面延誤時間都是超過了1000分鐘,這個時間還是非常非常的長的。基本上都是AA航空公司。
下面第二件事情就是計算一下這二十幾萬航班他的延誤和沒有延誤的一個比例是什麼樣子的。
首先這裡有一個方法叫做value_counts可以計算某一列的取值統計情況,如下所示。
那很顯然我們希望生成一個新的列叫做delay,那麼根據arr_delay,只要大於0就是延遲了就是Ture,那麼怎麼寫代碼呢,如下。
最後是不是加上了delay這一列。
既然有了delay這一列,那麼就可以使用value_counts了。
我們看到沒有延誤的航班有103037次,有延誤的航班有98627次。
那麼數據有了,就算一下延誤比。
如圖使用延誤航班除以總的班次,得到大概49%的延誤比,這個還是非常大的,這個延誤也是沒sei了!
然後我們再看看每一個航空公司的延誤情況。
那麼完成這個任務,一個需要延誤情況delay和航空公司unique_carrier,這個就很容易想到分組的功能,就是group by,因為你要看每一個航空公司延誤情況,那你肯定要對航空公司進行分組。
那麼就按照unique_carrier和delay這兩列進行groupby。
返回了一個Series,展示了每一個航空公司的延誤情況,比如AA也就是American Airline。他的延誤情況是,延誤班次有9841次,沒有延誤班次8912次,這tm真嚴重啊!
我們還可以把這個二級的index的Series轉換成一個DataFrame。
那麼其實我們也可以做一個更加直觀的展示,就是畫一個圖出來。
我們可以看到每一個航空公司延誤和非延誤的情況,其中B6沒有延誤情況是最多的,數據差距也是最大的,但是其實這裡還不夠直觀,我們可以把這個圖再優化一下。
這張圖看著更加明顯,藍色表示沒有延誤,綠色表示有延誤,每個航空公司延誤情況一目了然。
從圖上直接看出AA航班延誤最嚴重,DL延誤情況最是能接受的。
最後再看一下透視表功能。
按照日期索引,columns選擇航空公司名稱,值的話選擇飛行次數,聚合函數選擇出現count計數,然後就可以看到每一天的不同航空公司的飛行次數了。
根據這份透視表還可以做出很多圖,比如各家航空公司每天飛行次數比較。
可以畫一個熱力圖來展示。
還可以把航空公司基於飛行次數相關的密度圖畫出來。
還可以做一個關於飛行里程的透視表。
然後看看每家航空公司這段時間的總飛行里程
甚至可以有飛行花費平均時間。
-----------------------------------------------------------------------------------
關於航班的話題就說到這裡吧。
推薦閱讀: