使用 CDC API 取得全球各國歷年 Covid-19 與流感數據並輸出 CSV 格式
一、教學目標
- 知識目標:認識 CDC(美國疾病管制與預防中心)提供的公開數據 API 及其應用。
- 技能目標:學會使用 Python 與
requests
套件,從 CDC API 提取 Covid-19 與流感數據,並將其存為 CSV 格式。
- 態度目標:培養學生對公共健康數據分析的興趣,並理解其在疫情監測與研究的價值。
二、前置準備
適用對象
- 對象:高中生、大學生或對公共健康、資料科學與 Python 有興趣的初學者。
- 先備知識:基礎 Python 知識(檔案操作、資料處理)。
所需軟硬體
- 硬體:具備網路連線的電腦。
- 軟體:
- Python 3.x(建議搭配 Anaconda)。
- Python 套件:
requests
、pandas
。
- 文字編輯器(如 VS Code 或 Jupyter Notebook)。
- 其他:穩定的網路環境(API 需要線上存取)。
教師準備
- 預先安裝
requests
與 pandas
,並測試程式碼。
- 準備 CDC API 的背景簡介(PDF 或投影片)。
- 提供範例數據解釋(如 Covid-19 與流感的欄位意義)。
三、教學流程
時間分配:總計 90 分鐘
- 導入(10 分鐘)
- 環境設定與 API 介紹(15 分鐘)
- Covid-19 數據實作(30 分鐘)
- 流感數據實作(25 分鐘)
- 總結與討論(10 分鐘)
1. 導入(10 分鐘)
活動:情境引導
- 教師提問:
「如果要追蹤 Covid-19 或流感的全球趨勢,你會怎麼獲取數據?」
- 簡介 CDC API:
- CDC 是什麼?(美國疾病管制與預防中心,提供公開健康數據)。
- API 用途:透過程式獲取 Covid-19、流感等數據。
- 目標導引:
「今天我們將學習如何用 Python 從 CDC API 提取 Covid-19 與流感數據,並存成 CSV 檔案,幫助你分析疫情趨勢!」
2. 環境設定與 API 介紹(15 分鐘)
講解(10 分鐘)
- 安裝套件:
- 展示指令:
pip install requests pandas
- 檢查安裝:
import requests, pandas
(無錯誤即成功)。
- CDC API 簡介:
- 端點範例:Covid-19 (
9mfq-cb36.json
)、流感 (vh55-3he6.json
)。
- 數據格式:JSON,需轉換為表格形式。
實作活動(5 分鐘)
- 學生任務:
- 安裝
requests
與 pandas
。
- 測試簡單請求:
import requests
url = "https://data.cdc.gov/resource/9mfq-cb36.json"
response = requests.get(url)
print(f"API 狀態碼:{response.status_code}")
3. Covid-19 數據實作(30 分鐘)
講解(10 分鐘)
- 程式碼說明:
requests.get()
:發送 API 請求。
pd.DataFrame()
:將 JSON 轉為表格。
- 欄位篩選與日期格式化。
- 展示範例:提取 Covid-19 數據並顯示前幾行。
實作活動(20 分鐘)
- 學生任務:
- 執行以下程式碼,獲取 Covid-19 數據:
import requests
import pandas as pd
# CDC Covid-19 API
url = "https://data.cdc.gov/resource/9mfq-cb36.json"
# 發送請求
response = requests.get(url)
if response.status_code == 200:
data = response.json()
df = pd.DataFrame(data)
df = df[["submission_date", "state", "tot_cases", "tot_death"]]
df["submission_date"] = pd.to_datetime(df["submission_date"])
csv_filename = "covid19_cdc_data.csv"
df.to_csv(csv_filename, index=False)
print(f"已成功儲存 Covid-19 歷年數據至 {csv_filename}")
else:
print(f"❌ API 請求失敗,狀態碼:{response.status_code}")
- 打開
covid19_cdc_data.csv
,檢查日期、州別與病例數。
- 成果檢查:確認 CSV 包含日期、州別、總確診與死亡數。
4. 流感數據實作(25 分鐘)
講解(10 分鐘)
- 程式碼說明:
- 流感 API 的欄位(如
week
、ili_activity_level
)。
- 與 Covid-19 程式碼的異同。
- 展示範例:提取流感數據並解釋活動等級。
實作活動(15 分鐘)
import requests
import pandas as pd
# CDC Flu API
flu_url = "https://data.cdc.gov/resource/vh55-3he6.json"
# 發送請求
response = requests.get(flu_url)
if response.status_code == 200:
flu_data = response.json()
flu_df = pd.DataFrame(flu_data)
flu_df = flu_df[["week", "region", "ili_activity_level", "activity_level_label"]]
flu_csv_filename = "flu_cdc_data.csv"
flu_df.to_csv(flu_csv_filename, index=False)
print(f"已成功儲存流感數據至 {flu_csv_filename}")
else:
print(f"❌ API 請求失敗,狀態碼:{response.status_code}")
- 檢查
flu_cdc_data.csv
,找出流感活動等級最高的地區。
- 成果檢查:確認 CSV 包含週數、地區與活動等級。
5. 總結與討論(10 分鐘)
- 教師總結:
- CDC API 可提供 Covid-19 與流感等多種數據。
- CSV 格式便於後續分析(如 Excel 或 Python)。
- 學生討論:
- 「你發現哪些州的 Covid-19 死亡數最高?」
- 「這些數據能用來做什麼?(如疫情預測、健康政策)」
四、評量方式
- 實作成果(70%):
- 成功生成
covid19_cdc_data.csv
。
- 成功生成
flu_cdc_data.csv
。
- 參與討論(30%):
五、延伸應用
- 進階挑戰:
- 修改程式碼,篩選特定年份(如 2023)的數據。
- 使用
matplotlib
繪製 Covid-19 或流感趨勢圖。
- 實務專案:
- 比較美國各州的流感與 Covid-19 活動等級。
- 分析某地區的疫情數據,撰寫簡易報告。
六、教學資源
- 參考連結:
- 附件:
- 程式碼檔案(
.py
格式)。
- 欄位說明表(PDF)。