在上一章節,提供了數據的csv檔,在開始之前,請將數據檔案下載進電腦裡(此章節將用Excel做第一步的預處理)
https://www.kaggle.com/nphantawee/pump-sensor-data
下載完並解壓縮後會得到一個sensor.csv檔案,我們利用Excel開啟它。
從欄位中可以看到序號、日期時間、52項數據資料以及機器狀態。
其中,機器的狀態包含:broken(故障):7個、recovering(修復中):14477個、normal(正常狀態):220320個
我們按下,排序與篩選/篩選,然後對machine_status欄位按下篩選箭頭,勾銷NORMAL和RECOVERING後,就只剩下機器故障時的資料了。
接著我們在[timestamp]右邊插入剩餘時間欄位[time_left],格是選擇數值,目前可以看到最左邊的機器狀態為broken,所以我們把那7筆資料的剩餘時間填滿0。
請記得左側的藍色數字(最左側的編號),等一下會用到。
處理完之後解除篩選功能。
我們於C2的地方輸入公式:
=($B$17157-B2)*60*24
B12157是剛剛記下的藍色數字的第一個,減掉B2後代表機器第一次壞掉前的剩餘時間,60跟24則是讓它以分鐘為單位(本來是以天為單位)。
然後設定格是為數值。
沒意外的話得到的結果為17155,接著向下填滿,它並不會直接填滿到最底下,而是在剛剛輸入了0的地方被擋住,我們可以看到數字結果剛好符合。
如果0的上方不是1而是別的數字,則須考慮是否有操作錯誤(如果上方數字是三,則有可能是你將第A列的序號誤看成最左側的編號了)。
另外,機器狀態為RECOVERING的資料適不適用此計算方式尚未能完全確認(可以考慮刪除RECOVERING的資料)。
接著我們重複剛剛的動作,將第二次故障的時間減去現在的時間。
然後依此類推,總共做七次。
做完後可以先儲存成xlsx檔做備份,因為等一下要拆成兩份csv資料檔。
由於24512之後的資料並沒有損壞數據,故無法得知時間序列,將其刪除。
此時只剩下166442筆資料(含欄位名稱)。
接著複製[time_left]整個欄位並原地貼上為"值"。
貼上後可按圖中所框選的按鈕兩次,可以縮短為整數。
接著我們要打散資料,再最尾端增加[random]欄位,公式輸入:
=RAND()
並向下填滿
接著對[random]選擇從小到大排序,資料就隨機打散了。
然後記得,排序完[random]欄位要刪除。
訓練檔跟驗證檔比例我們分為8:2,由於現在資料總共是166442-1筆,故我們到166442*0.8=133152筆資料的地方停下,按ctrl+shift+↑可以選取上方所有資料。
然後按右鍵/刪除,然後將資料另存新檔成驗證檔test_sensor.csv(此時資料包含欄位大約33291筆)。
另存完後按ctrl+z回到刪除前,按下第133152筆資料,然後按ctrl+shift+↓可以選取下方所有資料。
然後按右鍵/刪除,然後將資料另存新檔成訓練檔train_sensor.csv(此時資料包含欄位大約133152筆)。
資料預處理完畢,下一章節將正式打code了。
此時只剩下166442筆資料(含欄位名稱)。 => QUESTION: 資料原來有22萬筆, 為何只剩16萬筆?
回覆刪除它的上一句:由於24512之後的資料並沒有損壞數據,故無法得知時間序列,將其刪除。
刪除