---
title: refinery-section4
tags: DAS
GA: UA-155999456-1
---
{%hackmd @docsharedstyle/default %}
# 3.4 資料操作
本小節以 [airline-data.csv file (1.5 MB)](https://cos.twcc.ai/cp4d/das4_0/refinery/data/airline-data.csv) 為例。
假設我們想統計美國聯合航空(UA, United Airlines),每天的平均延遲(Delay)時間,並依照延遲多寡做排序。
依照情境,步驟如下:
- 篩選出美國聯合航空的資料。
- 計算延遲時間 = 出發延遲 + 抵達延遲。
- 選擇欄位「年、月、日、延遲時間」。
- 依照「年、月、日」分組。
- 計算平均「延遲時間」時間。
- 將平均延遲時間,依長到短做排序。
**因翻譯的關係,相應步驟的英文版如下,可對照查看:**
- filter `UniqueCarrier` = UA(United Airlines)
- defined a new cloumn `TotalDelay` = sum of (`ArrDelay`, `DepDelay`)
- select columns: `Year`, `Month`, `DayofMonth`, `TotalDelay`
- Group by (`Year`, `Month`, `DayofMonth`)
- Aggregate `TotalDelay` by mean
- Sort data in descending by `mean_Delay`
---
以下我們透過 Data Refinery 依序操作:
## 篩選出美國聯合航空的資料
> filter `UniqueCarrier` = UA(United Airlines)
**操作步驟:**
作業 > 過濾器 > 直欄:`UniqueCarrier` > 運算子: `是等於` > 值: `UA` > 套用。
**操作步驟(英文版):**
+Operation > Filter > Column:`UniqueCarrier` > Operator: `is equal to` > Value: `UA` > Apply

--
## 計算延遲時間 = 出發延遲 + 抵達延遲
> defined a new cloumn `TotalDelay` = sum of (`ArrDelay`, `DepDelay`)
**操作步驟:**
作業 > 計算 > 直欄:`ArrDelay` > 下一步 > 選擇「新增(加法)」 > 直欄:`DepDelay` > 勾選建立新直欄存放結果:`TotalDelay` > 套用。
**操作步驟(英文版):**
+Operation > Calculate > Select:`ArrDelay` > Next > Addition > Select Column:`DepDelay` > Create new column for result:`TotalDelay` > Apply

--
## 選擇欄位「年、月、日、延遲時間」
> select columns: `Year`, `Month`, `DayofMonth`, `TotalDelay`
**操作步驟:**
互動式程式碼範本 > 點選`select` > 輸入`Year, Month, DayofMonth, TotalDelay` > 套用。
**操作步驟(英文版):**
Code Operation > 輸入`select` > 輸入`Year, Month, DayofMonth, TotalDelay` > Apply
p.s. 可以用點選的方式,程式語法會自動補完。

--
## 依照「年、月、日」分組
> Group by (`Year`, `Month`, `DayofMonth`)
**操作步驟:**
互動式程式碼範本 > 點選`group_by` > 輸入`Year, Month, DayofMonth` > 套用。
**操作步驟(英文版):**
Code Operation > 點選`group_by` > 輸入`Year, Month, DayofMonth` > Apply

--
## 計算平均「延遲時間」時間
> Aggregate `TotalDelay` by mean
**操作步驟:**
作業 > 聚集 > 欄位選擇:`TotalDelay` > 下一步 > 選擇「平均值」 > 聚集直欄的名稱:`mean_Delay` > 套用。
**操作步驟(英文版):**
+Operation > Aggregate > Select Column:`TotalDelay` > Next > choose Mean Aggregation > Name of the aggregated column:`mean_Delay` > Apply

--
## 將平均延遲時間,依長到短做排序
> Sort data in descending by `mean_Delay`
如果想知道美國聯合航空,哪一天的航班平均延遲狀況最嚴重,我們可以將結果依照欄位 `TotalDelay` 做降序排列。

--
## 資料處理結果
經過上述步驟後,資料處理結果如下,共有七個步驟。

假如想設定處理好的資料名稱,可到右側的「資訊窗格(Detail)」頁面,點擊「編輯(Edit)」進入做修改。
另外,在處理過程中,如果對資料的樣態感興趣,可利用「設定檔(Profiles)」或是「視覺校果(Visualizations)」的功能,對(部分*)資料進行探索。
> ***備註**:
> 根據 IBM 官方手冊的描述,為了讓 Data Refinery 的操作過程保持順暢,
> 資料(Data)、設定檔(Profiles)、視覺校果(Visualizations) 的呈現,僅限於部分資料,而非全體資料。
>
> 而當 Data Refinery flow 的步驟確定,執行排程時,就會對全部資料進行操作。
---
確認好資料處理的流程後,我們就可以將這樣的 Data Refinery flow 做一個排程。下一小節我們將教學排程的設定。
## END