Skip to main content

1.Python來抓取政府公開資料(CSV):空氣品質



什麼是CSV?

CSV (Comma-Separated Values,逗號分隔值為常見的一種「純文字」資料儲存的檔案格式,將所有資料以半形的逗號隔開,一般的試算表軟體均能處理並儲存CSV格式。

例如環保署的「空氣品質指標(AQI)」開放資料格式就有提供CSV跟JSON格式(如下圖),點擊CSV右邊的「檢視資料」:

image-1639670126680.png

畫面上方會有一個「資料下載網址」,可以先複製起來(等一下寫程式會用到),下方也會有資料的預覽:

image-1639670247199.png

點一下「資料下載網址」就能下載該CSV檔,用LibreOffice Calc開啟的畫面如下圖。如果用Excel開啟,因為檔案的編碼格式是UTF-8,所以開起來看可能會變成亂碼。

image.png

CSV檔可以用一般文字編輯軟體來開啟,例如用記事本開啟的畫面如下圖,無法像試算表軟體那樣對齊:

image-1639670672053.png


用Python處理線上的CSV資料


Python處理CSV檔的方式與JSON不同,可以先參考以下範例:

import  urllib.request,csv
url = 'CSV檔的網址'
webpage = urllib.request.urlopen(url)  #開啟網頁
data = csv.reader(webpage.read().decode('utf-8').splitlines()) #讀取資料到data陣列中
for i in data:
    print('測站->',i[0],'縣市=',i[1], 'AQI=',i[2])   

因為CSV的資料已經儲存到「data」這個二維陣列中了,所以用 for i in data: 之後,i就變成了一維陣列,索引值從0開始編號,所以i[0]就是「SiteName」、i[1]變成「County」、i[5]就是「SO2」……,依此類推。

image-1639670835362.png


上面的程式 執行後的結果如下:

image-1639671010933.png

(以下省略)


練習:修改以上程式碼,讓使用者可以輸入觀測站名稱(例如忠明)或縣市(如臺中市),列出符合該關鍵字的觀測站所量測到的AQI值及PM 2.5。