添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

目前先以JSON格式進行練習,若資料不提供JSON格式暫勿使用。

5.將滑鼠游標移到「JSON下載」後面的網址上方,按下滑鼠右鍵並點選【複製連結網址】。例如:

https://quality.data.gov.tw/dq_download_json.php?nid=9617&md5_url=fc93547438b2106ccec5f9b6b112c0bd

6.進入Python開發環境IDLE,開啟新檔案,複製以下範例程式碼並進行修改:

import  json, ssl, urllib.request
url = 'JSON下載的網址'
context = ssl._create_unverified_context()
with urllib.request.urlopen(url, context=context) as jsondata:
    #將JSON進行UTF-8的BOM解碼,並把解碼後的資料載入JSON陣列中
     data = json.loads(jsondata.read().decode('utf-8-sig')) 
for i in data:
      print(i['學校名稱'],'\t',i['一年級男學生數'],'\t',i['一年級女學生數'])

上例中的「學校名稱」、「一年級男學生數」及「一年級女學生數」可依照「資料資源欄位」自行修改。

7.執行之後會出現以下畫面:

(以下略)

練習1 :請顯示所有高中的一至三年級男女生學生數

資料的計算

如果要統計公開資料裡面的數字,我們可以將程式略做修改,例如我們想計算全台高一男女生的人數,我們可以將資料加總。

把原來的 for i in data 迴圈改寫成:

boy=0   #男生數 變數
girl=0  #女生數 變數
for i in data:
         boy += int(i['一年級男學生數'])
         girl += int(i['一年級女學生數'])
print("高一男生總數=", boy, '女生總數=', girl)

練習2:請加總所有高中的高一二三男女生之學生數

資料的搜尋

如果我們想讓使用者依照關鍵字列出資料,可以先用input取得關鍵字,然後使用if ,配合 find 函數:

字串變數.find(要搜尋的字串)

a="This is a book"
b="a"
print(a.find(b))

意思就是b字串出現在a字串的第幾個字(第一個字的位置是0),如果>=0 表示a字串中有b字串,否則傳回-1

因此我們可以將這個搜尋函數應用在資料的搜尋上,例如school字串變數是使用者要搜尋的學校名稱,只要在i的for迴圈中,加上 if i['學校名稱'].find(school) >= 0  就表示學校名稱中含有使用者要搜尋的文字:

執行結果為:

練習3:讓使用者輸入校名的關鍵字,計算顯示所有高中各科別的一至三年級班級數  (結果要截圖上傳)

其他開放資料的應用

練習4:請自行找一項政府開放資料,試著統計或列出裡面你感興趣的資料  (必須有搜尋功能,結果截圖上傳)