【開放數據轉換PDF實戰】學Python程式做分析 逐步拆解年度計劃4

撰文:簡浩德
出版:更新:

《香港01》早前報道,政府以PDF格式公布政府83個部門的開放數據計劃,並就計劃內容進行分析。要分析這批資料,其中一個方法就是編寫程式以撮取資料,今次特別推出一系列文章,逐步講解如何利用程式,一次過將83個PDF轉為分析用數據,亦希望藉此讓讀者了解機讀格式檔如何有助分析。

【第5講】

TL;DR

1)整理 CSV 檔案
2)試算表

進度表。

CSV 與 JSON 同屬開放數據屬三星的檔案格式。CSV 檔案可用各種試算表的程式以表格形式開啟,例如 Microsoft Office Excel、LibreOffice Calc、Google Spreadsheet、Numbers等。而 CSV 檔案本身是純文字檔案,亦可使用純文字編輯程式開啟檢視和修改。

試算表大多提供豐富的數據整理與分析的功能,包括篩選功能、排序功能、支援運算式等,都有助處理這類數千至數萬行的資料。

首先刪去不需要的欄目,剩下「dept」、「備註」、「數據集名稱」、「更新頻率」、「發放日期」這 5 個欄目。

此處仍是要人手肉眼去檢視資料數據有否缺失錯漏,經一番核對,發現入境事務處某幾項的儲存格空了。

由於 PDF 檔案的表格包含合拼儲存格,轉換過程難免會出現資料缺失。

打開原來入境事務處的 PDF 檔案查看,原來裡面使用了惡名昭彰的「合併儲存格」(這裡是採用垂直合拼的方式)。此處只能人手去填補數據的空缺。

入境事務處「開放數據」年度計劃文件截圖。

現時的問題(#10):可以解答到原初的問題了嗎?
這⋯⋯還未可以的。

回到最原初的問題是:「2019年內發放的愈 650 個新數據集其實有哪些?」而剛得出的 CSV 檔案中,有 4274 行資料,是包括所有 A 到 D 部分的資料,即 2019年發放的數據集、2020-21年發放的數據集、其他機構計劃開放的數據集及已經上載「資料一線通」網站的數據集。

其中亦非所有資料行都是數據集項目的描述,是包括一些空行。

可幸「發放日期」此欄目中,年份主要是以半形的數字紀錄,在試算表中可以篩選出儲存格中包含「2019」字眼。這個動作在原先的 PDF 檔案就不能進行此操作,只能在檔案中搜索「2019」文字作點算,惟可能其他欄目中內容同有「2019」字眼的時候,該點算出來的數字便不會準確。

經過篩選,共有 761 行資料,加上欄目名稱 1 行,共 762 行。這代表 2019 年就是政府發放數據集的數量嗎?不,不要忘記「知識產權處」的年度計劃 PDF 檔案是尚未輸入的。同時亦有部分資料因為 PDF 頁面所限而要被分開兩個表格顯示,以致在轉換到 CSV 格式時也把資料內容分拆成多於一個儲存格裡去。

現時的問題(#11):那麼即是究竟有多少個數據集會在 2019 年發放?

進度表。

在年度計劃中,不難發現有一些資料的備註是說明數據集是將會由 XLSX 格式轉換成 CSV 格式,並一併上載到「資料一線通」網站。

《香港01》向政府資訊科技辦公室(資科辦)查詢,索取於 2019 年度新增發放的數據集列表,資科辦回覆並附上一個 Microsoft Word 檔案,經點算後,有 715 項數據集,與先前以 CSV 檔案點算的總數相對接近。

小結:
行文至此讀者或會質疑,那麼早應向資科辦查詢就了事吧?為何要自行如此繁複的步驟得出差不多的結果呢?

資科辦既能整理出單一份的數據集列表,理論上只要加上「更新頻率」、「發放日期」等資訊整合,再轉換以機器可讀的開放數據格式如 CSV 或 JSON 格式,上載到「資料一線通」網站,並按年發放,已經可以算是一項令人感到有用的「開放數據」。香港政府在「開放數據」政策,若能把這類最後一哩路走完,不論在排名上或是對 IT 業界應用數據創新都會有正面的脾益。

【第6講】

TL;DR

1)這次示範存有盲點
2)應用例子:監察開放數據進程

這次示範未能盡善盡美,深諳資訊科技的職業達人或許不禁訕笑。惟這個示範旨在展示一般人可以怎樣具體地運用現存的技術,利用電腦程式,把人讀格式的 PDF 檔案,集合並轉換成機讀格式,然後進行數據分析,找出問題的答案。

雖然最終仍是依賴人手肉眼去覆檢結果,但是這正好說明政府應該採取更佳的處理方法,去發放「開放數據政策」年度計劃文件。

政府在未來訂製「開放數據政策」的時候,可給予各部門更具體、更明確硬性的指引,亦可考慮使用統一資料交換平台讓政府各部門在受系統規範下輸入資料。若個別部門在輸入資料,發現有例外情況或需要添加註解資料時,應考慮以另外一個檔案存放顯示,避免與數據主體本身混淆一起,妨擾數據處理。

從數據原初輸入階段已預先作適當處理,使最終的數據資料是以清晰整潔、隨時可用的格式呈現,相信就是「開放數據」政策的基本目標,繼而推廣此種理念到私人機構實踐。

小結:
行文至此讀者應該了解到由尋找數據、準備數據、探索數據、清理數據、分析數據的過程及思路,以及從中理解當中牽涉的困難與應對方案及可行的改善建議。如果讀者看畢此系列,有建議、意見或疑問,歡迎賜教或查詢。(電郵 omarkan@hk01.com )

~系列完~

最終整理後的結果如下,供讀者參閱或使用。一切資料均以政府網頁公布為準,《香港01》將不為有關資料引起之任何損失或誤會負責。

連結如下:
https://docs.google.com/spreadsheets/d/1HIL7l_ICuZTUcbgbNVjy9U8neDvhsKF-Wt0b3LiEVkk/edit?usp=sharing

注意事項:
此系列以 Windows 7 中文版 及 Python 3.7.2 於 2019年1月28日至31日期間測試,並力求有關資料於上述期間內準確,惟市面上不同電腦作業系統或會有不相同的執行結果,希望讀者理解。如有任何使用上的困難,請詳細參閱互聯網上其他相關資源,或向其他擁有此項相關專門知識的人士或機構進一步查詢。一切資料均以政府網頁公布為準,《香港01》將不為有關資料引起之任何損失或誤會負責。