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.
自動化系統
資料準備供分析應用
理論與實作
王建凱 2017/08
http://jiankaiwang.no-ip.biz
GLjankai@gmail.com
說明
• 本文件以建立自動化資料準備供分析與視覺化應用為核心,並以
MS Office (Excel, Access, SQL Server)、批次檔 (Python
/ R 作為主體) 與數項相關工具進行實作。
• 資料準備包含 csv, t...
資料前處理
資料來源一
資料來源二
N
N
N
N
'05' 0
0
5 0
0
資料
前處理
資
料
整
合
資
料
清
理
資
料
轉
換
3
Excel 中常用資料前處理函式
N
N
'05' 0
0
5 0
0
資料整合 資料清理 資料轉換
IF 檢查條件
COUNTIF 條件計數
DATEDIF 日期差値
LEN 字串長度
MID 中間子字串
LEFT 左取字串
RIGHT 右取...
資料視覺化元素
長度 > 弧度 > 面積
顏
色
形
狀
方
式
5
資料視覺化
兩
組
數
據
長條圖 斜坡圖 啞鈴圖 Small Multiple
整
體
組
成
圓餅圖 堆疊圖
時
間
趨
勢
折線圖
6
資料敘述摘要
5 0
0
眾數
平均值
中位數
中心趨勢
全距
四分位差
標準差
變異數
離散趨勢
連續性資料
5 0
0
類別性資料
次數分配 佔率分析
45 %
35 %
15 %
類別一
類別二
類別三
7
檢定與預測
皮爾森相關係數 (Excel 圖表功能) T 檢定 (T.TEST 函式)
單尾 雙尾
配對 (成偶) 1.72E-28 3.43E-28
同質性 1.12E-34 2.24E-34
異質性 4.62E-31 9.24E-31
T....
自動化系統
供資料分析
與視覺化
自動化系統建立
資料前處理
(過濾, 篩選)
資料準備
(假設, 目地)
資料視覺化
(顏色, 圖表)
資料分析
(統計, 計算)
資料結論
(決策, 參考)
自動化
系統建立
製作模組
9
N
'05'
0
5
自動化系統模組與架構
製作系統
自動化與
控制系統
資源來源
與前處理
品保與
品管系統
製作支援
系統
支援
系統
製造
系統
資料 API
回授訊號 / 進階自動化
成果與追溯驗證成果展示
與設計
10
Excel 自動化 11
自動化更新樞紐分析表
自動化更新圖表
@echo off
SET localPath=C:UsersJianKaiWangDesktopautomation
REM prepare data in Python
python %localPath%SimplePython.py
i...
製造程序類型 自動化系統建立 vs 自動化系統供視覺化資料呈現
加工 裝配
資料使用者 資料提供者
13
lat lon loc cnt
25 121 '01' 1
22 120 '07' 1
25 121 '01' 1
loc cnt
'01...
程式自動化與資料分析搭配結構
資料前處理
(過濾, 篩選)
資料準備
(假設, 目地)
資料視覺化
(顏色, 圖表)
資料分析
(統計, 計算)
資料結論
(決策, 參考)
自動化
系統建立
製作模組
14
自動化系統
供資料分析
與視覺化
原...
供資料視覺化呈現內容準備 15
Power Query
前處理巨量資料資料庫
資料準備供交換或分析 資料準備與開放資料
csv
xml
json
民眾資料庫存取
線上工具
資料驗證
操作過程與方式 16
巨量資料
資料取得
操作流程
R
python
bat
軟體系統建立
目的導向 (使用者導向) 17
使用對象 期望資料
使用載具 使用時間
使用情境 準備方法
開放資料 18
使用對象
期望資料
使用載具
使用時間
使用情境
準備方法
民眾
了解居住地登革熱狀況
• 村里的病例數
• 鄰近是否有病例
• 就醫資訊
• Excel / Word
• 軟體 / 程式 / API
• 一次性
• 每週 / ...
資料描述 19
判斷資料
結構化資料
半結構化資料
非結構化資料
結構化
固定屬性
是
否
是
否
結構化
經分析可分解多個
互相關聯的組成部
分,各組成部分間
有明確層次結構。
固定屬性(欄位)
單一列標題的表格
式資料,每筆資料
的欄位數均...
固定屬性結構化資料 - 嚴格定義 20
資料屬性 (固定欄位, 純値)
每筆
資料
(無空行)
經分析可分解多個互相關聯的組成部分,各組成部分間有明確層次結構。資料屬性、其型態及其順序皆嚴格定義。
村里層級 地理資訊 布氏指數 住宅指數 容器指...
常用結構化資料檔案格式 – csv, txt 21
Date County Village VillLat BI BILv
2016/07/01 台南市 永康里 23.0265 0.000 0
2016/07/01 宜蘭縣 礁溪村 24.816...
從 Excel 連線資料庫 MS SQL Server 為例
22
連接資料庫 1 伺服器資訊 2 存取設定 3
自資料庫取得原始資料內容 dengue.accdb
23
select top 10 *
from Dengue_Daily
where 是否境外移入 = '否'
order by 發病日 desc;
1
2
自 Excel 準備固定屬性結構化資料 24
連接資料庫
Power Query 2
1 Excel 處理結果 3
產出近 12 個月台南市各鄉鎮各年齡層登革熱確定病例數之 csv, txt 格式檔案。
從 Excel 產出 csv, txt 格式資料 25
CSV 產出結果 3Excel 另存新檔固定屬性結構化驗證 21
• 是否有公式
• 是否有儲存格
• 是否單筆資料單列
• 是否有空行
• 是否有空屬性
• 資料型態是否符合
• 資料範...
非結構化資料 26
結構化資料以外均為非結構化資料,例如一般文章、圖檔、影音等。
非固定屬性結構化資料 – 具資料容忍性 27
經分析可分解多個互相關聯的組成部分,各組成部分間有明確層次結構。但資料屬性、其型態、其順序或空値可
依實際狀況調整,甚至移除。
符合 W3C 標準半結構化資料 – xml 28
Date County Village VillLat BI BILv
2016/07/01 台南市 永康里 23.0265 0.000 0
2016/07/01 宜蘭縣 礁溪村 24.8168...
頗析 xml 格式 29
<?xml version="1.0" encoding="UTF-8"?>
<DengueIndex>
<MosIndex category="05">
<Date>2016/07/01</Date>
<County...
透過 Power Query 前處理巨量資料 30
產出 104 年起每日屏東縣各鄉鎮村里各年齡層登革熱確定病例數之 xml 格式檔案
1
2
Date.Year([發病日])
3 4
5
月
日
Date.Month([發病日])
Date....
準備 xml map 資料綱目 31
<?xml version="1.0" encoding="UTF-8"?>
<DengueCase>
<Case>
<Year></Year>
<Month></Month>
<Day></Day>
<A...
自 Excel 產出 xml 資料 32
匯入自定義 xml 綱目 對應 xml 綱目及匯出
符合 W3C 標準半結構化資料 – json 33
Date County Village VillLat BI BILv
2016/07/01 台南市 永康里 23.0265 0.000 0
2016/07/01 宜蘭縣 礁溪村 (null)...
自 Excel 資料準備 json 格式 34
A B C
1 8 5 a
2 8 3 b
Excel 資料處理
匯出 csv 檔案 轉換 json 檔案
A,B,C
8,5,a
8,3,b
[
{
"A": "8",
"B": "5",
"C...
透過 Excel 準備 json 格式資料 35
產出 104 年起高雄市各登革熱確定病例數之 json 格式檔案
欄位 格式
發病日 yyyy/mm/dd
性別 男或女
年齡層 字串
居住縣市 字串
居住鄉鎮 字串, 可空値
居住村里 字串,...
資料結構化與檔案格式之間對應 36
Date County Village VillLat BI BILv
2016/07/01 台南市 永康里 23.0265 0.000 0
2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 ...
資料結構化與常用檔案格式比較 37
[
{
"A": "8", "B": "5", "C": "a"
}
]
A,B,C
8,5,a
8,3,b
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<0...
開放資料 5 顆星分類架構 38
by Tim Berners-Lee
星等 說明
採用開放授權,並使資料(任何資料格
式)可以在網路上取得
讓資料以結構化的方式取得(如用
Excel 取代掃描的表格)
使用開放格式取代專屬格式(例如用
csv...
建立含有資料描述的檔案 json
39
{
"fields" : [
{
"type" : "datatype",
"id" : "attribute.1"
},
{
"type" : "datatype",
"id" : "attribute...
建立資料描述 json 格式
40
type 函式回傳値 資料型態
1 數字, 小數, 日期
2 文字
4 邏輯値
16 錯誤値
64 陣列
type id
1 發病日
2 性別
2 年齡層
2 居住縣市
2 居住鄉鎮
2 最小統計區
1 最小...
完成含有資料描述的檔案 json
41
{
"fields" : [
],
"records" : [
]
}
[
{ "type": "date", "id": "發病日" },
{ "type": "string", "id": "性別" ...
完成含有資料描述的檔案 xml
42
定義欄位與
資料型態
紀錄資料
產出 104 年起高雄市各登革熱確定病例數之 xml 綱目及資料
<?xml version="1.0" encoding="UTF-8"?>
<DengueCase>
<f...
其他纇型的檔案說明綱要 43
DengueCase.csv
DengueCase.txt
readme.*
Schema.*
+
DengueCase.zip
DengueCase.rar
DengueCase.7z
匯出資料 綱目/說明/聯結...
行政院政府開放資料品質 4 面 7 項檢測 44
檢測構面 檢測指標 計算基礎 判斷方式 判斷時點 輸出結果
資料可直接取得
連結有效性 全部資源 機器測試 定期 是/否
資源能直接下載 全部資源 機器測試 資源異動時 回傳連結
資料易於被處理...
資料取得性 45
https://data.cdc.gov.tw 連結失效 資源能直接下載
資料易於處理性 46
Date County Village VillLat BI BILv
2016/07/01 台南市 永康里 23.0265 0.000 0
2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 0
2016/...
資料易於理解 47
定義欄位與
資料型態
紀錄資料
<?xml version="1.0" encoding="UTF-8"?>
<DengueCase>
<fields>
<Date></Date>
<Gender></Gender>
<Ag...
民眾意見回饋 48
建立自動化視覺化資料內容準備 49
Power Query巨量資料前處理
資料庫
準備交換資料
開放資料
csv
xml
json
民眾
資料庫存取
kml
shp
geojson
資料視覺化
常用格式
應用標準格式
資料驗證
軟體或程式處理
...
自動化資料準備系統建立 50
Power Query巨量資料前處理
資料庫
準備交換資料
開放資料
民眾
資料庫存取
kml
shp
geojson
資料視覺化
常用格式
應用標準格式
資料驗證
軟體或程式處理
| |
自動化
資料準備系統
c...
地理資料分析 51
kml 地理資訊內容 點線面
52
資料處理
kml 模版 對映 kml
1 2
• Excel Plugin
• 程式(VBA, Python等)
• 軟體或線上服務
點
線
面
<?xml version='1.0' encoding='U...
kml 模組對應設計 53
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
<Document>
<name><!-- ma...
標示點位 54
地方衛生局
孳清區域
孳清區域位置
<!-- default point data -->
<Folder>
<name>衛生局</name>
<Style id="defaultIcon">
<IconStyle>
<Icon...
標示線面 55
<!-- line string -->
<Folder>
<name>行車方向</name>
<Style id="linestring">
<LineStyle>
<color>7f00ffff</color>
<width...
安裝 Google Earth 56
https://www.google.com/earth/download/gep/agree.html
資料視覺化於 Google Earth 57
軟體功能 舉例路徑規劃
58
資料視覺化於其他工具 KML Viewer
59
http://ivanrublev.me/kml/
geojson 地理資訊內容 點線面
60
資料處理
geojson 模版
1
點
線
面
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry"...
標示點位 與 kml 相同範例
61
地方衛生局
孳清區域
孳清區域位置
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type...
標示線面 62
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [0...
地理資料呈現 63
http://geojson.io
地圖編輯工具 先規劃路線再補資料
64
https://google-developers.appspot.com/maps/documentation/utils/geojson/
線上轉換工具 格式固定需前處理
65
geojson
應用服務內容 使用者對象/載具
66
csv
txt
json
shp
xml
kml
佳
差
通
用
性
差
佳
應
用
服
務
性
需求面 供應面
cap
soap
jackjson
資料 API適應性 API
資料前處理
...
認識資料 API 供資料視覺化 API
67
需求面
供應面
API
https://od.cdc.gov.tw/opendataplatform/?
|- s=[dengue|influlinechart]&
|- v=[dev1|a1|a2...
API 是解決資料操作最佳解 open data x open api
68
【2017關鍵趨勢:Open Data】開放資料席捲全球,下一步將是Open API
http://www.ithome.com.tw/news/111025
資料 API 概論 設計就是關鍵
69
即時性 (時間)
操作性 (空間)
最佳 API 設計實作權限式或單方向
驗證性或長久保存性
操作性 (空間)
• 存取方式與參數設計 (CRUD)
• 可視資料完整性
• 進階操作,如篩選
• 最小權限...
開放資料使用 API 之處理 70
geojson
csv
txt
json
shp
xml
kml
佳
差
通
用
性
差
佳
應
用
服
務
性
供應面
cap
soap
jackjson
資料前處理
原始資料
資料轉換分析
資料驗證
資料...
資料 API 範例 含有資料描述與狀態
71
https://data.cdc.gov.tw/api/action/datastore_search?resource_id=1078c7ec-d905-4a6b-85f5-18d3ef420b4...
綱目驗證過程
API/MVC 3 層資料驗證
資料註解客製驗證綱目驗證
• 基本驗證
• 必填欄位
• 數值範圍
控制器層級服務/軟體層級輸出 API 層級
• 邏輯驗證
• 絕對驗證
• 個別狀況
• 輸出欄位
• API 交換
• 品質監測...
資料驗證 你有多相信這次自動化資料分析?
綱目驗證設計
客製驗證
• 邏輯驗證
• 絕對驗證
• 個別狀況
邏輯驗證
• 領域知識
• 經驗判斷
• 例各區每週皆有腸病毒急診
絕對驗證
• 量化判斷
• 深度 vs 廣度
• 例 2010 年台...
品質監測 74
一致性驗證
時序性驗證
健全性驗證
正確性驗證
綱目驗證
完整性驗證
• 綱目 : 資料準備是否符合規範,如是否允許有空値。
• 正確 : 資料準備是否正確,如何驗證此筆資料正確性,如村里與縣市對應。
• 一致 : 資料準備與目...
資料驗證範例 登革熱病媒蚊調查資料
75
資料註解 客製驗證 綱目驗證
• 基本驗證
• 必填欄位
• 數值範圍
• 邏輯驗證
• 絕對驗證
• 個別狀況
• 輸出欄位
• API 交換
• 品質監測
Date City Village Vil...
自動化資料準備供分析應用 76
資料庫
資料庫存取
kml
shp
geojson
常用格式
應用標準格式
資料驗證
軟體或程式處理
| |
自動化
資料準備系統
csv
xml
json
資料 API
資
料
前
處
理
原
始
資
料
資
...
簡易 API 自動化建置 77
@echo off
REM environemt settings
SET localPath=D:codepython20170823_automation
SET pscpPath="C:Program Fi...
自動化建置與存取方式 78
工作排程器 https://od.cdc.gov.tw/eic/xxx.json
總結與問題 79
Photo by JESHOOTS.COM on Unsplash
王建凱 2017/08
http://jiankaiwang.no-ip.biz
GLjankai@gmail.com
• 資料 API ?
• 資料驗證 ?...
Upcoming SlideShare
Loading in …5
×

自動化資料準備供分析與視覺化應用 : 理論與實作 (automatic data preparation for data analyzing and visualizing : theory and implementation)

198 views

Published on

本文件以建立自動化資料準備供分析與視覺化應用為核心,並以 Microsoft 工具 (Excel, Access, SQL Server)、批次檔 (Python / R 作為主體) 與數項相關工具進行實作。

資料準備包含 csv, txt, json, xml 及其延伸 geojson, kml 等做為資料分析與視覺化之實作格式,並介紹 Data API 設計。

本文件並以 Open Data 與地理資訊作為使用端應用說明。

The topics to the document are related with automatic data preparation for data analyzing and visualizing. In the document, we used MS tools (Excel, Access, SQL Server), the windows batch execution (based on python / R) and other related tools to implement topics.

We deliver how to prepare the data in csv, txt, json, xml and their extension geojson and kml formats, and to introduce the web data api as well.

We also introduce some applications, including open data and GIS.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

自動化資料準備供分析與視覺化應用 : 理論與實作 (automatic data preparation for data analyzing and visualizing : theory and implementation)

  1. 1. 自動化系統 資料準備供分析應用 理論與實作 王建凱 2017/08 http://jiankaiwang.no-ip.biz GLjankai@gmail.com
  2. 2. 說明 • 本文件以建立自動化資料準備供分析與視覺化應用為核心,並以 MS Office (Excel, Access, SQL Server)、批次檔 (Python / R 作為主體) 與數項相關工具進行實作。 • 資料準備包含 csv, txt, json, xml 及其延伸 geojson, kml 等做為資料分析與視覺化之實作格式,並介紹 Data API 設計。 • 本課程並以 Open Data 與地理資訊作為使用端應用說明。 • 本完整課程建議以 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 N '05' 0 5
  10. 10. 自動化系統模組與架構 製作系統 自動化與 控制系統 資源來源 與前處理 品保與 品管系統 製作支援 系統 支援 系統 製造 系統 資料 API 回授訊號 / 進階自動化 成果與追溯驗證成果展示 與設計 10
  11. 11. Excel 自動化 11 自動化更新樞紐分析表 自動化更新圖表
  12. 12. @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 進階自動化 12 批次檔 變數與環境設置 回傳處理狀況 頭 尾 流程管理 (進階自動化) 資料前處理 (Python) 結果產出 (R) 身
  13. 13. 製造程序類型 自動化系統建立 vs 自動化系統供視覺化資料呈現 加工 裝配 資料使用者 資料提供者 13 lat lon loc cnt 25 121 '01' 1 22 120 '07' 1 25 121 '01' 1 loc cnt '01' 2 '07' 1 lat lon 25 121 22 120
  14. 14. 程式自動化與資料分析搭配結構 資料前處理 (過濾, 篩選) 資料準備 (假設, 目地) 資料視覺化 (顏色, 圖表) 資料分析 (統計, 計算) 資料結論 (決策, 參考) 自動化 系統建立 製作模組 14 自動化系統 供資料分析 與視覺化 原始資料 (資料庫, 初始値) 目的資料 (多樣化目的) 目的導向 標準規範 品質驗證
  15. 15. 供資料視覺化呈現內容準備 15 Power Query 前處理巨量資料資料庫 資料準備供交換或分析 資料準備與開放資料 csv xml json 民眾資料庫存取 線上工具 資料驗證
  16. 16. 操作過程與方式 16 巨量資料 資料取得 操作流程 R python bat 軟體系統建立
  17. 17. 目的導向 (使用者導向) 17 使用對象 期望資料 使用載具 使用時間 使用情境 準備方法
  18. 18. 開放資料 18 使用對象 期望資料 使用載具 使用時間 使用情境 準備方法 民眾 了解居住地登革熱狀況 • 村里的病例數 • 鄰近是否有病例 • 就醫資訊 • Excel / Word • 軟體 / 程式 / API • 一次性 • 每週 / 每日 • 產生村里層級確定病例數統計資料 • 能夠由 Excel 分析的檔案 • 每日 / 每週產出資料 • 產生含有地理資訊之確定病例資料 • 能夠由 Excel 或軟體呈現的檔案 • 每日產出資料 • 產生含有地理資訊之快篩醫院資料 • 能夠由 Excel 或軟體呈現的檔案 • 每月產出資料
  19. 19. 資料描述 19 判斷資料 結構化資料 半結構化資料 非結構化資料 結構化 固定屬性 是 否 是 否 結構化 經分析可分解多個 互相關聯的組成部 分,各組成部分間 有明確層次結構。 固定屬性(欄位) 單一列標題的表格 式資料,每筆資料 的欄位數均相同, 且無合併儲存格、 無公式、無空行等 特性區分
  20. 20. 固定屬性結構化資料 - 嚴格定義 20 資料屬性 (固定欄位, 純値) 每筆 資料 (無空行) 經分析可分解多個互相關聯的組成部分,各組成部分間有明確層次結構。資料屬性、其型態及其順序皆嚴格定義。 村里層級 地理資訊 布氏指數 住宅指數 容器指數 幼蟲指數
  21. 21. 常用結構化資料檔案格式 – csv, txt 21 Date County Village VillLat BI BILv 2016/07/01 台南市 永康里 23.0265 0.000 0 2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 0 2016/07/01 彰化縣 鹿港鎮 24.0563 0.000 0 Date String String Float Float Number yyyy/mm/dd <= 5 <= 5 -90 ~ 90 >= 0 >= 0 Not Null Not Null Not Null Not Null Not Null Not Null 資料屬性 (固定欄位, 純値) 每筆資料 (無空行) 屬性名 屬性型態 資料範圍 允許空値 Date County Village VillLat BI BILv 2016/07/01 台南市 永康里 23.0265 0.000 0 2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 0 2016/07/01 彰化縣 鹿港鎮 24.0563 0.000 0 產出資料 , 區格為 csv TAB 區格為 txt 標題與每筆資料間 皆已換行 Enter 為間格
  22. 22. 從 Excel 連線資料庫 MS SQL Server 為例 22 連接資料庫 1 伺服器資訊 2 存取設定 3
  23. 23. 自資料庫取得原始資料內容 dengue.accdb 23 select top 10 * from Dengue_Daily where 是否境外移入 = '否' order by 發病日 desc; 1 2
  24. 24. 自 Excel 準備固定屬性結構化資料 24 連接資料庫 Power Query 2 1 Excel 處理結果 3 產出近 12 個月台南市各鄉鎮各年齡層登革熱確定病例數之 csv, txt 格式檔案。
  25. 25. 從 Excel 產出 csv, txt 格式資料 25 CSV 產出結果 3Excel 另存新檔固定屬性結構化驗證 21 • 是否有公式 • 是否有儲存格 • 是否單筆資料單列 • 是否有空行 • 是否有空屬性 • 資料型態是否符合 • 資料範圍是否符合 • 資料是否有空値 2 CSV (逗號分隔)文字檔 (Tab 字元分隔)
  26. 26. 非結構化資料 26 結構化資料以外均為非結構化資料,例如一般文章、圖檔、影音等。
  27. 27. 非固定屬性結構化資料 – 具資料容忍性 27 經分析可分解多個互相關聯的組成部分,各組成部分間有明確層次結構。但資料屬性、其型態、其順序或空値可 依實際狀況調整,甚至移除。
  28. 28. 符合 W3C 標準半結構化資料 – xml 28 Date County Village VillLat BI BILv 2016/07/01 台南市 永康里 23.0265 0.000 0 2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 0 2016/07/01 彰化縣 鹿港鎮 (null) 0.000 0 <?xml version="1.0" encoding="UTF-8"?> <DengueIndex> <MosIndex> <Date>2016/07/01</Date> <County>台南市</County> <Village>永康里</Village> <VillLat>23.0265</VillLat> <BI>0.000</BI> <BILv>0</BILv> </MosIndex> <MosIndex> <Date>2016/07/01</Date> <County>宜蘭縣</County> <Village>礁溪村</Village> <VillLat>24.8168</VillLat> <BI>0.000</BI> <BILv>0</BILv> </MosIndex> <MosIndex> <Date>2016/07/01</Date> <County>彰化縣</County> <Village>鹿港鎮</Village> <BI>0.000</BI> <BILv>0</BILv> </MosIndex> </DengueIndex> DengueIndex MosIndex MosIndex MosIndex Date County Village VillLat BI BILv 2016/07/01 台南市 永康里 23.0265 0.000 0 xml 樹狀結構 根 葉
  29. 29. 頗析 xml 格式 29 <?xml version="1.0" encoding="UTF-8"?> <DengueIndex> <MosIndex category="05"> <Date>2016/07/01</Date> <County>台南市</County> <Village>永康里</Village> <VillLat>23.0265</VillLat> <BI>0.000</BI> <BILv>0</BILv> </MosIndex> <MosIndex category="34"> <Date>2016/07/01</Date> <County>宜蘭縣</County> <Village>礁溪村</Village> <VillLat>24.8168</VillLat> <BI>0.000</BI> <BILv>0</BILv> </MosIndex> </DengueIndex> 資料與屬性皆以 閉鎖式紀錄 <Tag></Tag> 巢狀式包裹 <Parent> <child> </child> </Parent> 樹狀結構 Root -> Leaf 自定義標籤 • 建議由大至小且可 理解性文字組成 • 能對應欄位或屬性 名為佳 • 以英數字組成 序列性紀錄 <row1></row1> <row2></row2> 屬性定義,有應用規 範,但亦可自訂 必要,為 XML 聲明, 說明版本與編碼
  30. 30. 透過 Power Query 前處理巨量資料 30 產出 104 年起每日屏東縣各鄉鎮村里各年齡層登革熱確定病例數之 xml 格式檔案 1 2 Date.Year([發病日]) 3 4 5 月 日 Date.Month([發病日]) Date.Day([發病日])
  31. 31. 準備 xml map 資料綱目 31 <?xml version="1.0" encoding="UTF-8"?> <DengueCase> <Case> <Year></Year> <Month></Month> <Day></Day> <Age></Age> <Gender></Gender> <County></County> <Town></Town> <Village></Village> <Immigration></Immigration> <Count></Count> </Case> <Case></Case> </DengueCase> 自定義 xml 綱目 dengue_pingtung.xml Excel 中開啟功能
  32. 32. 自 Excel 產出 xml 資料 32 匯入自定義 xml 綱目 對應 xml 綱目及匯出
  33. 33. 符合 W3C 標準半結構化資料 – json 33 Date County Village VillLat BI BILv 2016/07/01 台南市 永康里 23.0265 0.000 0 2016/07/01 宜蘭縣 礁溪村 (null) 0.000 0[ "資料 1", "資料 2", "資料 3" ] 串列資料 串列資料 { "屬性 1" : "値 1", "屬性 2" : "値 2", "屬性 3" : "値 3" } [ { "Date" : 2016/07/01, "County" : "台南市", "Village" : "永康里", "VillLat" : 23.0265, "BI" : 0.000, "BILv" : 0 }, { "Date" : 2016/07/01, "County" : "宜蘭縣", "Village" : "礁溪村", "BI" : 0.000, "BILv" : 0 } ] 中括號表示 多筆資料 逗號區隔 各筆資料 大括號為鍵値 (key-value) 類資料 標示方式為 Key : Value 透過冒號表示對應 第一筆資料 資料容忍性
  34. 34. 自 Excel 資料準備 json 格式 34 A B C 1 8 5 a 2 8 3 b Excel 資料處理 匯出 csv 檔案 轉換 json 檔案 A,B,C 8,5,a 8,3,b [ { "A": "8", "B": "5", "C": "a" }, { "A": "8", "B": "3", "C": "b" } ] 1 2 1 2 https://codebeautify.org/csv-to-xml-json • 透過 Excel Plugin • 透過程式(VBA, Python等) • 透過軟體或線上服務
  35. 35. 透過 Excel 準備 json 格式資料 35 產出 104 年起高雄市各登革熱確定病例數之 json 格式檔案 欄位 格式 發病日 yyyy/mm/dd 性別 男或女 年齡層 字串 居住縣市 字串 居住鄉鎮 字串, 可空値 居住村里 字串, 可空値 最小統計區 字串 統計區中心經度 浮點數, 可空値 統計區中心緯度 浮點數, 可空値 是否為境外移入 字串, 是或否 確定病例數 數字, 需大於 0 透過 Excel 匯出 csv 檔案 1 透過線上工具進行轉換 2
  36. 36. 資料結構化與檔案格式之間對應 36 Date County Village VillLat BI BILv 2016/07/01 台南市 永康里 23.0265 0.000 0 2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 0 2016/07/01 彰化縣 鹿港鎮 24.0563 0.000 0 County Town Village Count Immigration 血清型 屏東縣 屏東市 (null) 1 否 (null) 屏東縣 東港鎮 (null) 1 是 第二型 宜蘭市 宜蘭市 慈安里 1 是 第一型 結 構 化 半 結 構 化 非 結 構 化 [ { "A": "8", "B": "5", "C": "a" } ] A,B,C 8,5,a 8,3,b <?xml version="1.0" encoding="UTF-8" ?> <root> <0> <A>8</A><B>5</B><C>a</C> </0> <1> <A>8</A><B>3</B><C>b</C> </1> </root> A B C 8 5 a 8 3 b csv txt xml json
  37. 37. 資料結構化與常用檔案格式比較 37 [ { "A": "8", "B": "5", "C": "a" } ] A,B,C 8,5,a 8,3,b <?xml version="1.0" encoding="UTF-8" ?> <root> <0> <A>8</A><B>5</B><C>a</C> </0> <1> <A>8</A><B>3</B><C>b</C> </1> </root> A B C 8 5 a 8 3 b xml json txt (TAB) csv 格式 優點 缺點 csv • 處理與分析 • 資料庫交換 • 儲存 • 冗餘格式 • 不易理解與辨識 • 需符合既定格式 • 延伸性低 txt (TAB) • 辨識與理解 • 冗餘格式 • 不利資料交換 • 需符合既定格式 • 延伸性低 xml • 網路交換 • 註解完整 • 延伸性優 • 儲存 • 資料庫交換 • 冗餘資料 • 複雜性高 json • 網路交換 • 輕量化 • 平台支援度高 • 儲存 • 資料庫交換 • 延伸性佳 • 資料無順序性
  38. 38. 開放資料 5 顆星分類架構 38 by Tim Berners-Lee 星等 說明 採用開放授權,並使資料(任何資料格 式)可以在網路上取得 讓資料以結構化的方式取得(如用 Excel 取代掃描的表格) 使用開放格式取代專屬格式(例如用 csv, json 取代 Excel) 使用固定網址來表示資料,使其它人可 以連結到資料在網絡的位置 鏈結資料到其它相關資料,並提供資料 之間的脈絡關係或描述說明
  39. 39. 建立含有資料描述的檔案 json 39 { "fields" : [ { "type" : "datatype", "id" : "attribute.1" }, { "type" : "datatype", "id" : "attribute.2" } ], "records" : [ { "attribute.1" : "value", "attribute.2" : "value" }, { "attribute.1" : "value", "attribute.2" : "value" } ] } (建議保留字) 含有資料描述 json 格式模板 日期 縣市 鄉鎮 鄉鎮緯度 布氏指數 布氏級數 2016/07/01 台南市 永康里 23.0265 0.000 0 2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 0 2016/07/01 彰化縣 鹿港鎮 24.0563 0.000 0 Date String String Float Float Number { "fields" : [ { "type" : "date", "id" : "日期" }, { "type" : "string", "id" : "縣市" }, { "type" : "string", "id" : "鄉鎮" }, { "type" : "float", "id" : "鄉鎮緯度" }, { "type" : "float", "id" : "布氏指數" }, { "type" : "number", "id" : "布氏級數" }, ], "records" : [ { "日期" : "2016/07/01", "縣市" : "台南市", "鄉鎮" : "永康里", "鄉鎮緯度" : "23.0265", "布氏指數" : "0.000", "布氏級數" : "0", } ] } 定義欄位與 資料型態 紀錄資料
  40. 40. 建立資料描述 json 格式 40 type 函式回傳値 資料型態 1 數字, 小數, 日期 2 文字 4 邏輯値 16 錯誤値 64 陣列 type id 1 發病日 2 性別 2 年齡層 2 居住縣市 2 居住鄉鎮 2 最小統計區 1 最小統計區中心點X 1 最小統計區中心點Y 2 是否境外移入 1 確定病例數 type =TYPE(records!G3) id =TEXT(records!G1, "") type id date 發病日 string 性別 string 年齡層 string 居住縣市 string 居住鄉鎮 string 最小統計區 float 最小統計區中心點X float 最小統計區中心點Y bool 是否境外移入 number 確定病例數 Excel 中函式造成資料型態辨識問題 建議資料型態
  41. 41. 完成含有資料描述的檔案 json 41 { "fields" : [ ], "records" : [ ] } [ { "type": "date", "id": "發病日" }, { "type": "string", "id": "性別" }, { "type": "string", "id": "年齡層" }, { "type": "string", "id": "居住縣市" }, ... ] [ { "發病日": "2015/1/2 00:00", "性別": "男", "年齡層": "50-54", "居住縣市": "高雄市", "居住鄉鎮": "三民區", "最小統計區": "A6405-0613-00", "最小統計區中心點X": "120.32461", "最小統計區中心點Y": "22.64882", "是否境外移入": "否", "確定病例數": "1" }, ... ] 資料描述與綱目 資料內容 產出 104 年起高雄市各登革熱確定病例數之 json 格式檔案 1 2 3
  42. 42. 完成含有資料描述的檔案 xml 42 定義欄位與 資料型態 紀錄資料 產出 104 年起高雄市各登革熱確定病例數之 xml 綱目及資料 <?xml version="1.0" encoding="UTF-8"?> <DengueCase> <fields> <Date></Date> <Gender></Gender> <Age></Age> <County></County> <Town></Town> <Zone></Zone> <ZoneLon></ZoneLon> <ZoneLat></ZoneLat> <Immigration></Immigration> <Count></Count> </fields> <records> <Case> <Date></Date> <Gender></Gender> <Age></Age> <County></County> <Town></Town> <Zone></Zone> <ZoneLon></ZoneLon> <ZoneLat></ZoneLat> <Immigration></Immigration> <Count></Count> </Case> <Case></Case> </records> </DengueCase> 定義欄位與資料型態 多筆資料 1 2 3
  43. 43. 其他纇型的檔案說明綱要 43 DengueCase.csv DengueCase.txt readme.* Schema.* + DengueCase.zip DengueCase.rar DengueCase.7z 匯出資料 綱目/說明/聯結 壓縮檔 manifest.*
  44. 44. 行政院政府開放資料品質 4 面 7 項檢測 44 檢測構面 檢測指標 計算基礎 判斷方式 判斷時點 輸出結果 資料可直接取得 連結有效性 全部資源 機器測試 定期 是/否 資源能直接下載 全部資源 機器測試 資源異動時 回傳連結 資料易於被處理 是否為結構化 全部資源 機器測試 資源異動時 是/否 資料易於理解 資料編碼相符 結構化資源 機器測試 資源異動時 是/否 資料欄位相符 結構化資源 機器測試 資源異動時 是/否 更新時效性 熱門資源 人工檢核 定期 有/無 民眾回饋意見 回復效率 全部資源 人工檢核(7日) 定期 筆數
  45. 45. 資料取得性 45 https://data.cdc.gov.tw 連結失效 資源能直接下載
  46. 46. 資料易於處理性 46 Date County Village VillLat BI BILv 2016/07/01 台南市 永康里 23.0265 0.000 0 2016/07/01 宜蘭縣 礁溪村 24.8168 0.000 0 2016/07/01 彰化縣 鹿港鎮 24.0563 0.000 0 County Town Village Count Immigration 血清型 屏東縣 屏東市 (null) 1 否 (null) 屏東縣 東港鎮 (null) 1 是 第二型 宜蘭市 宜蘭市 慈安里 1 是 第一型 結 構 化 半 結 構 化 非 結 構 化 佳 差 csv txt json xml geojson KML SHP 建議格式
  47. 47. 資料易於理解 47 定義欄位與 資料型態 紀錄資料 <?xml version="1.0" encoding="UTF-8"?> <DengueCase> <fields> <Date></Date> <Gender></Gender> <Age></Age> <County></County> <Town></Town> <Zone></Zone> <ZoneLon></ZoneLon> <ZoneLat></ZoneLat> <Immigration></Immigration> <Count></Count> </fields> <records> <Case> <Date></Date> <Gender></Gender> <Age></Age> <County></County> <Town></Town> <Zone></Zone> <ZoneLon></ZoneLon> <ZoneLat></ZoneLat> <Immigration></Immigration> <Count></Count> </Case> <Case></Case> </records> </DengueCase> 註解 更新時效性 編碼與描述
  48. 48. 民眾意見回饋 48
  49. 49. 建立自動化視覺化資料內容準備 49 Power Query巨量資料前處理 資料庫 準備交換資料 開放資料 csv xml json 民眾 資料庫存取 kml shp geojson 資料視覺化 常用格式 應用標準格式 資料驗證 軟體或程式處理 | | 資料 API
  50. 50. 自動化資料準備系統建立 50 Power Query巨量資料前處理 資料庫 準備交換資料 開放資料 民眾 資料庫存取 kml shp geojson 資料視覺化 常用格式 應用標準格式 資料驗證 軟體或程式處理 | | 自動化 資料準備系統 csv xml json 資料 API
  51. 51. 地理資料分析 51
  52. 52. kml 地理資訊內容 點線面 52 資料處理 kml 模版 對映 kml 1 2 • Excel Plugin • 程式(VBA, Python等) • 軟體或線上服務 點 線 面 <?xml version='1.0' encoding='UTF-8'?> <kml xmlns='http://www.opengis.net/kml/2.2'> <Document> <name><!-- map topic --></name> <Folder> <!-- default point data --> </Folder> <Folder> <!-- marker point data --> </Folder> <Folder> <!-- line string --> </Folder> <Folder> <!-- polygon --> </Folder> </Document> </kml> A Lat Lon 1 a 22 121 2 b 23 121
  53. 53. kml 模組對應設計 53 <?xml version='1.0' encoding='UTF-8'?> <kml xmlns='http://www.opengis.net/kml/2.2'> <Document> <name><!-- map topic --></name> <Folder> <!-- default point data --> </Folder> <Folder> <!-- marker point data --> </Folder> <Folder> <!-- line string --> </Folder> <Folder> <!-- polygon --> </Folder> </Document> </kml> 定義 kml 對應 <!-- default point data --> <Folder> <name></name> <Style id="defaultIcon"> <IconStyle> <Icon> <href></href> <scale></scale> </Icon> </IconStyle> </Style> <Placemark> <name></name> <description></description> <styleUrl>#defaultIcon</styleUrl> <Point> <coordinates></coordinates> </Point> </Placemark> <Placemark></Placemark> </Folder> <!-- marker point data --> <Folder> <name></name> <Style id="markerIcon"> ... </Style> <Placemark> ... <styleUrl>#markerIcon</styleUrl> ... </Placemark> <Placemark></Placemark> </Folder> <!-- line string --> <Folder> <name></name> <Style id="linestring"> <LineStyle> <color></color> <width></width> </LineStyle> </Style> <Placemark> <name></name> <description></description> <styleUrl>#linestring</styleUrl> <LineString> <extrude></extrude> <tessellate></tessellate> <altitudeMode></altitudeMode> <coordinates></coordinates> </LineString> </Placemark> </Folder> <!-- polygon --> <Folder> <name>area</name> <Style id="polygon"> ... <PolyStyle> <color></color> </PolyStyle> </Style> <Placemark> ... <styleUrl>#polygon</styleUrl> <Polygon> ... <outerBoundaryIs> <LinearRing> <coordinates></coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </Folder>
  54. 54. 標示點位 54 地方衛生局 孳清區域 孳清區域位置 <!-- default point data --> <Folder> <name>衛生局</name> <Style id="defaultIcon"> <IconStyle> <Icon> <href>http://maps.google.com/mapfiles/kml/paddle/grn-blank.png</href> <scale>1.0</scale> </Icon> </IconStyle> </Style> <Placemark> <name>台南市南區衛生局</name> <description>衛生局地點</description> <styleUrl>#defaultIcon</styleUrl> <Point> <coordinates>120.188028,22.960753,0</coordinates> </Point> </Placemark> </Folder> <!-- marker point data --> <Folder> <name>孳清區域</name> <Style id="markerIcon"> <IconStyle> <Icon> <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href> <scale>1.0</scale> </Icon> </IconStyle> </Style> <Placemark> <name>孳清區域1</name> <description>大成里孳清區域</description> <styleUrl>#markerIcon</styleUrl> <Point> <coordinates>120.200560,22.979706,0</coordinates> </Point> </Placemark> </Folder>
  55. 55. 標示線面 55 <!-- line string --> <Folder> <name>行車方向</name> <Style id="linestring"> <LineStyle> <color>7f00ffff</color> <width>4</width> </LineStyle> </Style> <Placemark> <name>衛生局至孳清區域1</name> <description>台南市南區孳清區域1</description> <styleUrl>#linestring</styleUrl> <LineString> <extrude>1</extrude> <tessellate>0</tessellate> <altitudeMode>absolute</altitudeMode> <coordinates>120.188028,22.960753,50 120.200560,22.979706,50</coordinates> </LineString> </Placemark> </Folder> <!-- polygon --> <Folder> <name>孳清區域</name> <Style id="polygon"> <LineStyle> <color>7f00ffff</color> <width>1.0</width> </LineStyle> <PolyStyle> <color>7dff0000</color> </PolyStyle> </Style> <Placemark> <name></name> <styleUrl>#polygon</styleUrl> <Polygon> <extrude>1</extrude> <tessellate>1</tessellate> <altitudeMode>relativeToGround</altitudeMode> <outerBoundaryIs> <LinearRing> <coordinates>120.20013444504855,22.981446194786031,30 120.2009293647983,22.981440209797825,30 120.2008937381554,22.980485012873032,30 120.20091464199709,22.980174072275588,30 120.20062622581963,22.979582101632673,30 120.20063199766855,22.978222565019337,30 120.20064496769101,22.977854616397394,30 120.19767222809082,22.977781515904212,30 120.19767492695621,22.978057666228324,30 120.19767867802852,22.978441618286013,30 120.19764377713852,22.979328816571638,30 120.19762317906645,22.979852399168863,30 120.19763365077233,22.980274377260685,30 120.19763449613504,22.980330530029903,30 120.19764418722946,22.980974473393189,30 120.19765609785054,22.981517602755162,30 120.20013444504855,22.981446194786031,30</coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </Folder> 項目 來源 標示 http://kml4earth.appspot.com/icons.html 顏色 http://www.zonums.com/gmaps/kml_color/ 轉換 https://www.earthpoint.us/ExcelToKml.aspx 常用資源
  56. 56. 安裝 Google Earth 56 https://www.google.com/earth/download/gep/agree.html
  57. 57. 資料視覺化於 Google Earth 57
  58. 58. 軟體功能 舉例路徑規劃 58
  59. 59. 資料視覺化於其他工具 KML Viewer 59 http://ivanrublev.me/kml/
  60. 60. geojson 地理資訊內容 點線面 60 資料處理 geojson 模版 1 點 線 面 { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [0,0] }, "properties": {} }, { "type": "Feature", "properties": {}, "geometry": { "type": "LineString", "coordinates": [] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [] } } ] }; 對應 geojson 2 • Excel Plugin • 程式(VBA, Python等) • 軟體或線上服務 單一元素 型態與座標 其他屬性
  61. 61. 標示點位 與 kml 相同範例 61 地方衛生局 孳清區域 孳清區域位置 { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [0,0] }, "properties": {} }, { "type": "Feature", "properties": {}, "geometry": { "type": "LineString", "coordinates": [] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [] } } ] }; { "type": "Feature", "geometry": { "type": "Point", "coordinates": [120.188028,22.960753] }, "properties": { "名稱" : "衛生局", "描述" : "台南市南區衛生局" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [120.200560,22.979706] }, "properties": { "名稱" : "孳清區域1", "描述" : "大成里孳清區域" } },
  62. 62. 標示線面 62 { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [0,0] }, "properties": {} }, { "type": "Feature", "properties": {}, "geometry": { "type": "LineString", "coordinates": [] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [] } } ] }; { "type": "Feature", "properties": { "名稱" : "衛生局至孳清區域1", "描述" : "台南市南區孳清區域1" }, "geometry": { "type": "LineString", "coordinates": [ [120.188028, 22.960753], [120.200560, 22.979706] ] } }, { "type": "Feature", "properties": { "名稱" : "孳清區域1" }, "geometry": { "type": "Polygon", "coordinates": [[ [120.20013444504855,22.981446194786031], [120.2009293647983,22.981440209797825], [120.2008937381554,22.980485012873032], [120.20091464199709,22.980174072275588], [120.20062622581963,22.979582101632673], [120.20063199766855,22.978222565019337], [120.20064496769101,22.977854616397394], [120.19767222809082,22.977781515904212], [120.19767492695621,22.978057666228324], [120.19767867802852,22.978441618286013], [120.19764377713852,22.979328816571638], [120.19762317906645,22.979852399168863], [120.19763365077233,22.980274377260685], [120.19763449613504,22.980330530029903], [120.19764418722946,22.980974473393189], [120.19765609785054,22.981517602755162], [120.20013444504855,22.981446194786031] ]] } }
  63. 63. 地理資料呈現 63 http://geojson.io
  64. 64. 地圖編輯工具 先規劃路線再補資料 64 https://google-developers.appspot.com/maps/documentation/utils/geojson/
  65. 65. 線上轉換工具 格式固定需前處理 65
  66. 66. geojson 應用服務內容 使用者對象/載具 66 csv txt json shp xml kml 佳 差 通 用 性 差 佳 應 用 服 務 性 需求面 供應面 cap soap jackjson 資料 API適應性 API 資料前處理 原始資料 資料轉換分析 資料驗證 資料準備 情境設計 介面設計 *
  67. 67. 認識資料 API 供資料視覺化 API 67 需求面 供應面 API https://od.cdc.gov.tw/opendataplatform/? |- s=[dengue|influlinechart]& |- v=[dev1|a1|a2]& |- f=[json|csv|txt] API 設計規劃 : 通用性及僅讀取權限
  68. 68. API 是解決資料操作最佳解 open data x open api 68 【2017關鍵趨勢:Open Data】開放資料席捲全球,下一步將是Open API http://www.ithome.com.tw/news/111025
  69. 69. 資料 API 概論 設計就是關鍵 69 即時性 (時間) 操作性 (空間) 最佳 API 設計實作權限式或單方向 驗證性或長久保存性 操作性 (空間) • 存取方式與參數設計 (CRUD) • 可視資料完整性 • 進階操作,如篩選 • 最小權限原則 • 開放授權 (OAuth) 政 府 開 放 資 料 金融系統 政府開放資料 • 大部分為單一存取方式 • 可視資料完整度低 • 符合最小權限 • 資料即時性變異度高 API • 原指應用程式介面 • API 即操作、動作 • 資料 API ~= 對資料進行操作
  70. 70. 開放資料使用 API 之處理 70 geojson csv txt json shp xml kml 佳 差 通 用 性 差 佳 應 用 服 務 性 供應面 cap soap jackjson 資料前處理 原始資料 資料轉換分析 資料驗證 資料準備 情境設計 介面設計 本署 NIDSS 資料庫 連結數張資料表 (村里, 鄉鎮) 次級統計資料計算 確認資料欄位與數值 準備要產出資料之相關欄位 通用性或應用服務性 放置位置與存取方式 登革熱近12個月每日確定病例統計 適應性 API資料 API 使用方式 • 提供兩種 API • 放置於 nidss 主機, 採通用性設計,直 接讀取資源 • 放置於 azure 資料 庫,採通用性及高 操作性設計
  71. 71. 資料 API 範例 含有資料描述與狀態 71 https://data.cdc.gov.tw/api/action/datastore_search?resource_id=1078c7ec-d905-4a6b-85f5-18d3ef420b42&limit=5 { "help" : "https://data.cdc.gov.tw/api/3/action/help_show?name=datastore_search", "success" : true, "result" : { "resource_id" : "1078c7ec-d905-4a6b-85f5-18d3ef420b42", "fields" : [ ... ], "records" : [ ... ], "_links" : {}, "limit" : 5, "total" : 13898 } }
  72. 72. 綱目驗證過程 API/MVC 3 層資料驗證 資料註解客製驗證綱目驗證 • 基本驗證 • 必填欄位 • 數值範圍 控制器層級服務/軟體層級輸出 API 層級 • 邏輯驗證 • 絕對驗證 • 個別狀況 • 輸出欄位 • API 交換 • 品質監測 72
  73. 73. 資料驗證 你有多相信這次自動化資料分析? 綱目驗證設計 客製驗證 • 邏輯驗證 • 絕對驗證 • 個別狀況 邏輯驗證 • 領域知識 • 經驗判斷 • 例各區每週皆有腸病毒急診 絕對驗證 • 量化判斷 • 深度 vs 廣度 • 例 2010 年台北區第一週腸 病毒就診人次為 4,530 個別狀況 • 唯一或特徵 • 例 2016 年台北登革熱群聚 73
  74. 74. 品質監測 74 一致性驗證 時序性驗證 健全性驗證 正確性驗證 綱目驗證 完整性驗證 • 綱目 : 資料準備是否符合規範,如是否允許有空値。 • 正確 : 資料準備是否正確,如何驗證此筆資料正確性,如村里與縣市對應。 • 一致 : 資料準備與目的接收資料是否互相一致,完整通報單編號或末 7 碼。 • 健全 : 資料表間的欄位之間的驗證,如通用鍵値的格式是否正確或被正確產出。 • 時序 : 資料傳入時間是否符合要求,如是否要求時效性。 • 完整 : 舊有資料的驗證是否正確,如是否允許修改舊有資料。
  75. 75. 資料驗證範例 登革熱病媒蚊調查資料 75 資料註解 客製驗證 綱目驗證 • 基本驗證 • 必填欄位 • 數值範圍 • 邏輯驗證 • 絕對驗證 • 個別狀況 • 輸出欄位 • API 交換 • 品質監測 Date City Village VillLat BI BILv 2016/07/01 05 003 23.0265 0.0 0 2016/07/01 43 888 24.8168 0.0 0 2016/07/01 37 888 24.0563 0.0 0 City CityName Village VillName 05 台南市 003 永康里 43 宜蘭縣 888 礁溪鄉 37 彰化縣 888 鹿港鎮 基本驗證 必填欄位 數值範圍 邏輯驗證 • 每個月皆有調查指數/級數 絕對驗證 • 例 2016 年全台灣布氏指 數大於 10 的共有 941 處(筆/區域) 一致性驗證 時序性驗證 健全性驗證 正確性驗證 綱目驗證 完整性驗證 BI 屬性有空値 (無主鍵値) 縣市村里對應 (無時間限制) (無主鍵値) 舊有資料更新
  76. 76. 自動化資料準備供分析應用 76 資料庫 資料庫存取 kml shp geojson 常用格式 應用標準格式 資料驗證 軟體或程式處理 | | 自動化 資料準備系統 csv xml json 資料 API 資 料 前 處 理 原 始 資 料 資 料 轉 換 分 析 資 料 驗 證 資 料 準 備 情 境 設 計 介 面 設 計
  77. 77. 簡易 API 自動化建置 77 @echo off REM environemt settings SET localPath=D:codepython20170823_automation SET pscpPath="C:Program Files (x86)Puttypscp.exe" SET rawDataFileName=rawData.csv SET transformName=targetData SET transformType=json,txt,xml SET sftppwd=password cd %localPath% :prepareData REM prepare data in Python python %localPath%query.py --fout=%rawDataFileName% SET execRes=%errorlevel% if %execRes%==1 ( REM echo 輸入參數錯誤 EXIT /b 1 ) REM ... :transform REM transform data into other formats python %localPath%csv2Others.py --fin=%rawDataFileName% --fout=%transformName% -- format=%transformType% SET execRes=%errorlevel% if %execRes%==1 ( REM echo 輸入參數錯誤 EXIT /b 11 ) REM ... :setSimpleAPI REM transfer to remote server for client downloading %pscpPath% -pw %sftppwd% %localPath%%transformName%.json eic@od.cdc.gov.tw:/var/www/html/eic/%transformName%.json REM ... PAUSE EXIT /b 0 ... # connection and prepare data try: py2my = py2mysql("host", "port", "user", "pwd", "db") connStatus = py2my.checkConnectionValid() if connStatus['state'] != "success": sys.exit(3) # query the data queryData = py2my.execsql("sql", (), True, True) if queryData['state'] != "success": sys.exit(4) # vaildate the data if not vaildatedData(queryData['data']): sys.exit(4) # write out the rawData table in csv availableData = queryData['data'] attributes = ["year", "month", "dengueval"] with codecs.open(fileOut,"w","utf-8") as fout: ... ... # transform the data and output for i in range(0, len(fileFormat), 1): if fileFormat[i] == "json": with codecs.open(fileOut + ".json", "w", "utf-8") as fout: fout.write(json.dumps(allData, ensure_ascii=False)) elif fileFormat[i] == "txt": with codecs.open(fileOut + ".txt", "w", "utf-8") as fout: with codecs.open(fileIn,"r","utf-8") as fin: ... elif fileFormat[i] == "xml": with codecs.open(fileOut + ".xml", "w", "utf-8") as fout: ... 批次檔 可搭配其他軟 體或服務
  78. 78. 自動化建置與存取方式 78 工作排程器 https://od.cdc.gov.tw/eic/xxx.json
  79. 79. 總結與問題 79 Photo by JESHOOTS.COM on Unsplash 王建凱 2017/08 http://jiankaiwang.no-ip.biz GLjankai@gmail.com • 資料 API ? • 資料驗證 ? • 品質監測 ? • 自動化系統建立 ?

×