Python + PM25 + AQI
TLDR : 此篇是透過 Python 爬取 AQI 空氣品質指標的資料,再篩選出我們熟悉的細懸浮微粒 PM2.5
數據儲存成檔案。
課堂作業:透過 Python 爬取空氣品質 PM2.5
數據,練習如何抓取政府資料開放平台公開資料,解析 JSON
檔案並做檔案處理。
資訊擷取來源
政府資料開放平臺
環保署環境資料開放平台
按照網站提供的註冊 API 使用說明,會獲得一組期限一年的 Key
https://data.moenv.gov.tw/paradigm
可以透過參數來篩選資料
(v2版)要解析資料的來源網址結構如下:
該平台也提供了以空氣品質指標為案例的 教學手冊 說明如何設定詳細參數,可供參考。
( API 網址記得更換成自己的且為最新版本 )
註冊好後可以先到 API 測試平台 查看能否成功獲得公開資料。
資料集名稱跟詳細欄位內容:空氣品質指標(AQI)(歷史資料)
實作過程紀錄
實作過程有遇到沒有獲取完整資料的問題
解決方式:把 limit 降低或是用迴圈一次只獲取特定天數的資料,但還是偶爾會報錯
完整檔案放置在 Github: Python-PM2.5
資料結構轉換說明
整個流程:request –> get json object –> key get value
request 獲得資料,用 json() 方法,將 JSON
格式的資料
轉成 Python 可以操作的資料型態,再用字典取數值的方式
從 key (record) 取得我們想要的數據 (value)。
資料結構如下 :
|
|
value (aqi) 最外層是 list
資料型態,裡面每一個元素是 dict
資料型態
我們再透過 key
(sitename,pm2.5) 取 value
(各縣市,10)。
*這邊的 value 是一個裝著大字典的 list。
讀取資料的實作過程可以搭配
|
|
更清楚了解有什麼方法可以用,資料型態是什麼。
資料輸出
檔案處理
“r” 唯讀模式
“w” 寫入模式(覆寫)
“a” 寫入模式(續寫)
with open("data_pm25.txt", "w", encoding="utf-8") as file:
再用 for 把資料寫入 file 當中
|
|
檔案讀寫,rwa"+"
模式,都練習測試看看
w+ 先讀再寫會:?
a+ 先寫再讀會:?
參考資料
實際案例應用:
民生公共物聯網資料應用—將開放資料結合 GIS 放入地圖,以網頁方式來呈現
https://learnciot.github.io/ch7/ch7.3/
新竹科學園區空氣品質監測網:將空氣品質以趨勢圖呈現
https://hspair.sipa.gov.tw/Hspairpeople/Default.aspx
補充:ChatGPT 指令大全 https://www.explainthis.io/zh-hant/chatgpt
後記:
2023-0826 更新:因工作緣故收到國家科學及技術委員會來函,配合本署組改為環境部,本署環境資料關放平臺、環境資源資料交換平臺及環境資源資料交換重構平臺自112年8月22日起變更網址及應用程式介面( Application ProgrammingInterface, API),各平臺API維持新、舊API URL平行服務三個月,請於112年11月22日期限前內完成 API URL 更新。
2024 可搭配 ChatGPT/Gemini 大型語言模型提問如何將資料做清洗,該如何轉換資料,剩下的時間思考如何應用在日常生活中,例如用折線圖呈現產出一天內空氣品質變化,結合 IFTTT 超過多少會提醒用戶,將資料搜集彙整顯示趨勢圖,以供後續研究。