Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

自動化系統建立 : 理論與實作 (Automatic Manufacturing System in Data Analysis)

144 views

Published on

本文件以建立自動化資料分析為核心,並以 Microsoft Office Excel 與 Python / R 為工具進行實作。
本完整課程建議以 6 小時以上進行授課。

The document provided you the knowledge of automatic manufacturing system in data analysis. The tool demonstrated in the document included Microsoft Office Excel and Rython / R (programming languages).
Six-hour teaching is suggested for the class.

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

自動化系統建立 : 理論與實作 (Automatic Manufacturing System in Data Analysis)

  1. 1. 自動化系統建立 理論與實作 王建凱 2017/08 http://jiankaiwang.no-ip.biz GLjankai@gmail.com
  2. 2. 說明 • 本文件以建立自動化資料分析為核心,並以 Microsoft Office Excel 與 Python / R 為工 具進行實作。 • 標籤 為以 Python / R 為工具建立自動化之 進階課程,可以視課程需求進行調整。 • 本完整課程建議以 6 小時以上進行授課。 • 本文件以 方式進行授權。 2
  3. 3. 資料前處理 資料來源一 資料來源二 N N N N '05' 0 0 5 0 0 資料 前處理 資 料 整 合 資 料 清 理 資 料 轉 換 3
  4. 4. Excel 中常用資料前處理函式 N N '05' 0 0 5 0 0 資料整合 資料清理 資料轉換 IF 檢查條件 COUNTIF 條件計數 DATEDIF 日期差値 LEN 字串長度 MID 中間子字串 LEFT 左取字串 RIGHT 右取字串 CONCATENATE 字串組合 VLOOKUP 搜尋與回傳 LOOPUP 搜尋與回傳 DATE 搜尋與回傳 YEAR 取得年份 MONTH 取得月份 TODAY 今日日期 NOW 今日日期時間 VALUE 轉換數字 INT 轉換整數 FIND 搜尋子字串 TYPE 資料屬性 RAND 0-1 亂數 其他常用 4
  5. 5. 資料視覺化元素 長度 > 弧度 > 面積 顏 色 形 狀 方 式 5
  6. 6. 資料視覺化 兩 組 數 據 長條圖 斜坡圖 啞鈴圖 Small Multiple 整 體 組 成 圓餅圖 堆疊圖 時 間 趨 勢 折線圖 6
  7. 7. 資料敘述摘要 5 0 0 眾數 平均值 中位數 中心趨勢 全距 四分位差 標準差 變異數 離散趨勢 連續性資料 5 0 0 類別性資料 次數分配 佔率分析 45 % 35 % 15 % 類別一 類別二 類別三 7
  8. 8. 檢定與預測 皮爾森相關係數 (Excel 圖表功能) T 檢定 (T.TEST 函式) 單尾 雙尾 配對 (成偶) 1.72E-28 3.43E-28 同質性 1.12E-34 2.24E-34 異質性 4.62E-31 9.24E-31 T.TEST(資料一, 資料二, 分配, 種類) 卡方檢定 (CHITEST 函式) 觀察 本土 境外 2014 14592 240 2015 43418 365 期望 本土 境外 2014 15572 160 2015 43338 445 CHITEST(資料一, 資料二) 8
  9. 9. 自動化系統 供資料分析 與視覺化 先修課程與關聯性 資料前處理 (過濾, 篩選) 資料準備 (假設, 目地) 資料視覺化 (顏色, 圖表) 資料分析 (統計, 計算) 資料結論 (決策, 參考) 自動化 系統建立 製作模組 9
  10. 10. 程式自動化與資料分析搭配結構 資料前處理 (過濾, 篩選) 資料準備 (假設, 目地) 資料視覺化 (顏色, 圖表) 資料分析 (統計, 計算) 資料結論 (決策, 參考) 自動化 系統建立 製作模組 10 自動化系統 供資料分析 與視覺化 程式自動化 客製化設計
  11. 11. 自動化評估 : 資料量與資料類別 時間軸 單位時間資料通量 第一項資源資料總量 = 單位時間資料通量 x 時間區間 時間軸 單位時間資料通量 第二項資源資料總量 = 單位時間資料通量 x 時間區間 11
  12. 12. 資料量與自動化 時間軸 單位時間資料通量 資料總量 資料 前處理 資料類別 少 中 高 自動化處理 人工處理 12
  13. 13. 需要自動化 ? 旅遊醫學合約醫院列表 透過 TGOS 地址比對或 Google Map 取得經緯度 共 27 筆資料 13
  14. 14. 需要自動化 ? 近12個月登革熱病媒蚊調查資料 共有 17 欄位 每日約 60 筆資料 14
  15. 15. 資料量與自動化設計 時間軸 單位時間資料通量 資料總量 資料 前處理 資料類別 人工處理 少 中 高 高度整合 自動化 專屬式 自動化 彈性模組 自動化 15
  16. 16. 自動化設計差異 16 7 8 9 4 5 6 1 2 3 專屬式自動化 2 2 2 2 2 2 2 2 1 高度整合自動化 4 5 1 2 3 彈性模組自動化
  17. 17. 絕對自動化 -> 工業 4.0 ? 近12個月登革熱病媒蚊調查資料 登入系統 選擇時間範圍 選擇主題地區 輸出資料 資料前處理 數值計算 填入表格 產出報表 錯誤回溯 17
  18. 18. 工業 4.0 -> 無法預期 ? 無法自動化或 不正確自動化 就不要自動化 或階段性自動化 錯誤回溯性 需更大成本 18
  19. 19. 自動化目的 • 增加人員生產力 • 減少人員成本 • 降低重複流程 • 減低人為誤差 • 增加人員創造力 • 利於標準化 • 利於規格化 • 可重複性處理 19
  20. 20. 自動化系統模組與架構 製作系統 自動化與 控制系統 資源來源 與前處理 品保與 品管系統 製作支援 系統 支援 系統 製造 系統 20
  21. 21. 常見(自動化?)服務 21 Dropbox Google Drive OneDrive iCloud
  22. 22. 自動化服務的建立模式 ? 22 製作系統 自動化與 控制系統 資源來源 與前處理 品保與 品管系統 製作支援 系統 W E W E
  23. 23. Dropbox 的自動化子系統 23 製作系統 自動化與 控制系統 資源來源 與前處理 品保與 品管系統 製作支援 系統 製作支援 自動化控制 品保/品管
  24. 24. 多種自動化錯誤狀況 24 OneDrive OneDrive Google Drive Dropbox iCloud
  25. 25. 自動化系統模組與架構 製作系統 自動化與 控制系統 資源來源 與前處理 品保與 品管系統 製作支援 系統 支援 系統 製造 系統 資料 API 回授訊號 / 進階自動化 成果與追溯驗證成果展示 與設計 25
  26. 26. Excel 自動化準備 自 Excel 2016 起內建 Excel 2013(含以前)需安裝 Power Query 26
  27. 27. Excel 自動化 近5年台北區各週急診腸病毒就診人次為例 0 100 200 300 400 500 600 700 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 就診人次 週次 近5年台北區急診腸病毒就診人次 2013 2014 2015 2016 2017 27
  28. 28. 程式自動化準備 28 > python --version > Rscript --version 是否安裝 回應版本 命令提示字元
  29. 29. 資料來源與前處理 資料來源一 正確性與 綱目驗證 正確性與 綱目驗證 資料來源二 29
  30. 30. 從 Excel 取得需自動化處理資料 1 2 3 30
  31. 31. 自 Excel 準備資料型態 Power Query 1 2 31
  32. 32. 從 Excel 取得固定參考資料 區別資訊 1 2 3 區別對照表編碼問題 -> 檔按原點 UTF-8 32
  33. 33. 自 Excel 萃取與合併資料 =VLOOKUP( [@縣市], 區別對照表!county, 2, FALSE ) 1 2 33
  34. 34. 自 Excel 驗證資料 # 檢查區別空値 # 若有錯誤, 回傳 1, 否則 0 =IF( LEN([@區別])<2, 1, 0 ) # 檢查人次空値 # 若有錯誤, 回傳 1, 否則 0 =IF( INT([@腸病毒急診就診人次]) < 1, 1, 0 ) # 檢查重複資料 (*耗時) # 若有重覆, 回傳 1, 否則 0 =IF(SUMPRODUCT( ($A:$A=A2)*1, ($B:$B=B2)*1, ($C:$C=C2)*1, ($D:$D=D2)*1)>1,1,0) 1 2 3* 34
  35. 35. 資料來源品質監控 資料來源一 正確性與 綱目驗證 正確性與 綱目驗證 資料來源二 傳送資料不同步 品質監測 35
  36. 36. 資料品質監測 36 一致性驗證 時序性驗證 健全性驗證 正確性驗證 綱目驗證 資料來源 完整性驗證 • 綱目 : 資料是否符合規範,如是否允許有空値。 • 正確 : 資料來源是否正確,如何驗證此筆資料正確性,如村里與縣市對應。 • 一致 : 資料來源與目的接收資料是否互相一致 ,完整通報單編號或末 7 碼。 • 健全 : 資料表間的欄位之間的驗證,如通用鍵値的格式是否正確或被正確產出。 • 時序 : 資料傳入時間是否符合要求,如是否要求時效性。 • 完整 : 舊有資料的驗證是否正確,如是否允許修改舊有資料。
  37. 37. 製作系統 資料來源 與前處理 模組 2 資料二萃取 模組 2 資料處理分析 模組 3 資料呈現與結論 模組 1 資料一萃取 自動化 與控制系統 37
  38. 38. 用 Excel 樞紐分析表進行分析 1 2 38
  39. 39. 自 Excel 計算每年各週的總和値 區別 年 週 腸病毒人次 39
  40. 40. 製作程式化系統 40 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身 Excel 圖表結果 R Python R Python Excel Power BI 圖表結果
  41. 41. Windows 批次執行檔 (.bat) 建立 41 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身 1 2 automation.bat
  42. 42. Linux 批次執行檔 (.sh) 建立 42 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身 $ vim /home/jkw/automation.sh 終端機 1 圖形化 #!/bin/bash # Comment # Head # Body # Tail 2
  43. 43. 簡單程式範例 43 # coding: utf-8 # author : jiankaiwang (https://welcome-jiankaiwang.rhcloud.com/) print("prepare data in python") exit(0) Python 範例 # author : jiankaiwang (https://welcome-jiankaiwang.rhcloud.com/) print("plot a image in rscript") quit(save = "no", status = 0) R 範例 1 1 2 2 1 2處理內容 執行回傳狀態 値 狀態 0 成功 1 錯誤
  44. 44. 多樣化執行環境 44 1 > python C:automationPrepareData.py [args] 執行 Python > Rscript C:automationplot.r [args] 執行 R > sas -sysin C:automationplot.r –log C:automationplot.log 執行 SAS > C:automationhelloworld.exe Windows 執行檔 2 $ /home/jkw/helloworld Linux 執行檔
  45. 45. SET localPath=C:UsersJianKaiWangDesktopautomation REM prepare data in Python python %localPath%SimplePython.py REM plot from data in R Rscript %localPath%SimpleR.r Windows 製作批次檔建立 45 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身 1 2 3
  46. 46. Linux 製作批次檔建立 46 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身 #!/bin/bash localPath='/home/jkw' # prepare data in Python python $localPath/SimplePython.py # plot from data in R Rscript $localPath/SimpleR.r 1 2 3
  47. 47. 執行批次檔 47 SET localPath=C:UsersJianKaiWangDesktopautomation REM prepare data in Python python %localPath%SimplePython.py REM plot from data in R Rscript %localPath%SimpleR.r Windows Linux #!/bin/bash localPath='/home/jkw' # prepare data in Python python $localPath/SimplePython.py # plot from data in R Rscript $localPath/SimpleR.r > C:automationautomation.bat 1 2 $ chmod a+x /home/jkw/automation.sh $ /home/jkw/automation.sh 1
  48. 48. 品保/品管系統 檢驗結果 檢驗綱目 製作系統 檢驗結果 製作支援系統 48
  49. 49. 資料驗證 你有多相信這次自動化資料分析? 綱目驗證設計 客製驗證 • 邏輯驗證 • 絕對驗證 • 個別狀況 製作系統 邏輯驗證 • 領域知識 • 經驗判斷 • 例各區每週皆有腸病毒急診 絕對驗證 • 量化判斷 • 深度 vs 廣度 • 例 2010 年台北區第一週腸 病毒就診人次為 4,530 個別狀況 • 唯一或特徵 • 例 2016 年台北登革熱群聚 49
  50. 50. 自 Excel 進行資料驗證 邏輯驗證 絕對驗證 # 若有錯誤, 回傳 1, 否則 0 =IF( GETPIVOTDATA("腸病毒急診就診人次", 樞紐分析表!$A$3,"年",2007)=4530, 0, 1) # 若有錯誤, 回傳 1, 否則 0 =IF( COUNTIF(樞紐分析表!B5:L57, 0) < 1, 0, 1 ) 50
  51. 51. 綱目驗證過程 MVC 3 層資料驗證 資料註解客製驗證綱目驗證 • 基本驗證 • 必填欄位 • 數值範圍 控制器層級服務/軟體層級輸出 API 層級 • 邏輯驗證 • 絕對驗證 • 個別狀況 • 輸出欄位 • API 交換 製作系統 51
  52. 52. 自動化與控制系統 計時器 控制器O 控制命令 輸入訊號 製作 系統 52
  53. 53. 自 Excel 自動排程更新工作資料表 1 2 53
  54. 54. 自 Excel 自動排程更新樞紐資料表 1 2 54
  55. 55. 啟動 Windows 工作排程器管理頁面 55 排程工作1 2 3
  56. 56. Windows 工作排程器 56 各類主題 各類排程狀態表 各項排程設定 排程控制區
  57. 57. 於 Windows 建立工作排程 57 1 2 3
  58. 58. Windows 工作排程狀態 58
  59. 59. Linux (含 Mac) 工作排程器介紹 59 $ sudo vim /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 30 2 * * 1 root /usr/bin/letsencrypt renew >> /var/log/le-renew.log # 10 8 * * * jkw sh /home/jkw/opendataplatform/opendataapi.sh */5 * * * * jkw /home/jkw/automation.sh 排程器 排程設定 1 2
  60. 60. 再探自動化錯誤 : 錯誤偵測與控制 60 OneDrive Google Drive Dropbox iCloud
  61. 61. 自動化與控制系統 計時器 控制器O 開迴路 控制系統 控制命令 輸入訊號 計時器 控制器O 閉迴路 控制系統 控制命令 輸入訊號 回授訊號 製作 系統 + - 61
  62. 62. 主被動自動化監測 流程監測 處理模組 3 處理模組 2 處理模組 1 資料來源 與前處理 模組監測 結果監測 • 流程監測 : 執行時間異常, 流程錯誤 • 模組監測 : 模組錯誤 • 結果監測 : 結果錯誤 (PC/NC) 62
  63. 63. 進階自動化功能 • 安全操作 • 維護與修復診斷 • 錯誤偵測與復原 主被動自動化監測 錯誤偵測與復原 資 料 取 得 最小權限原則 主動回報與 被動紀錄 - + 嘗試修復原則 製作元件 1 製作 元件 2 63
  64. 64. @echo off SET localPath=C:UsersJianKaiWangDesktopautomation REM prepare data in Python python %localPath%SimplePython.py if errorlevel 1 ( echo 資料準備錯誤 EXIT /b 1 ) else ( echo 資料準備正確 ) REM plot from data in R Rscript %localPath%SimpleR.r if errorlevel 1 ( echo 產出結果失敗 EXIT /b 1 ) else ( echo 成功產出結果 ) EXIT /b 0 Windows 偵測性自動化流程 64 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身
  65. 65. Linux 偵測性自動化流程 65 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身 #!/bin/bash localPath='/home/jkw' # prepare data in Python python $localPath/SimplePython.py if [ $? = 1 ]; then echo "資料準備錯誤" exit 1 else echo "資料準備正確" fi # plot from data in R Rscript $localPath/SimpleR.r if [ $? = 1 ]; then echo "產出結果失敗" exit 1 else echo "成功產出結果" fi exit 0
  66. 66. 製作支援系統 品保/品管系統 自動化設計 任務規劃製作結果 製作系統 自動化 處理結果 錯誤追溯 66
  67. 67. 自 Excel 產出結果 1 2 67
  68. 68. 視覺化結果 68
  69. 69. 錯誤追溯表 自動回答問題 1 2 3 4 5 6 7 # 取得更新日期時間 =NOW() 1 # 取得檢查區別碼 =IF(SUM(RODS_腸病毒工作表!G:G) < 1, 0, 1) 2 # 取得檢查人次碼 =IF(SUM(RODS_腸病毒工作表!H:H) < 1, 0, 1) 3 # 取得檢查重複碼 =IF(SUM(RODS_腸病毒工作表!I:I) < 1, 0, 1) 4 # 取得邏輯驗證碼 =IF(COUNTIF(樞紐分析表!B5:L57, 0) < 1, 0, 1) 5 # 取得絕對驗證碼 =IF(GETPIVOTDATA("腸病毒急診就診人次", 樞紐分析表!$A$3,"年",2007)=4530, 0, 1) 6 7 # 取得自動化結果 =IF(SUM(D4:D8)<1,"成功", "失敗") 69
  70. 70. 製作支援系統 品保/品管系統 自動化設計 製造規劃 (版本管理) 任務規劃 製作結果 製作系統 自動化 處理結果 70 錯誤追溯 (錯誤碼)
  71. 71. 多項排程管理與錯誤追蹤 71 @echo off SET localPath=C:UsersJianKaiWangDesktopautomation REM prepare data in Python python %localPath%SimplePython.py if errorlevel 1 ( echo 資料準備錯誤 EXIT /b 1 ) else ( echo 資料準備正確 ) REM plot from data in R Rscript %localPath%SimpleR.r if errorlevel 1 ( echo 產出結果失敗 EXIT /b 1 ) else ( echo 成功產出結果 ) EXIT /b 0 1 2 移除 移除 移除 移除
  72. 72. 自動化 USA 原則 • Understand : 清楚了解現有人工處理過程 • Simplify : 簡化過程 • Automate : 處理過程自動化 資料一 資料二 出 資料三 Understand 出 Automate Simplify 72
  73. 73. 自動化製作系統階層設計 手動 自動 混合 單 一 模 組 混 合 流 程 固 定 流 程 入 出 入 出 入 出 入 出 入 出 入 出 入 入 出 入 出 入 出 入 出 73
  74. 74. 分散式自動控制系統 子系統 模組 子系統 模組 子系統 模組 子系統 模組 最終製作系統 資料 來源 結果 區域 管理站 區域 管理站 中控管理 通訊網路 出入訊號 74
  75. 75. 製造程序類型 自動化系統建立 vs 自動化系統供視覺化資料呈現 加工 裝配 資料使用者 資料提供者 75
  76. 76. 製作成本評估 資料總量 成本 (時間,人事) FC1 FC2 VC2 VC1 方法二:自動化 TC2 = FC2 + VC2 方法一:人工 TC1 = FC1 + VC1 損益平衡點 差異 (利潤) 76
  77. 77. Excel 問題 ? • Excel 很方便 ? 缺點 ? • 操作門檻低 • 寬資料廣度 • 少量資料佳 • 資料複雜度低 • 結果產能低 • 工程化程度低 (事倍功半) • 程式的優勢 ? • 寬資料廣度 • 高資料深度 • 結果產能高 • 操作門檻高 • 背景知識要求多 • 工程化程度高 (事半功倍) • 互相搭配達效益最大化 77
  78. 78. 問題 ? 78 王建凱 http://jiankaiwang.no-ip.biz GLjankai@gmail.com Photo by Kate on Unsplash • Excel 很方便 ? 缺點 ? • 程式的優勢 ? 互相搭配 ? • 資料量差異 ? 工具選擇 ? • 事半功倍與事倍功半 ? • 預善其事,必先利其器

×