當前位置:
首頁 > 知識 > 猶他州空氣質量分析-從EPA的空氣質量服務站API中抓取數據

猶他州空氣質量分析-從EPA的空氣質量服務站API中抓取數據

雷鋒網按:本文為AI研習社編譯的技術博客,原標題 Analyzing Utah』s Air Quality – Connecting to the EPA』s AQS Data API,作者為 Randy Zwitch 。

翻譯 | 京鵬 校對 | 餘杭 整理 | 餘杭

住在山谷里有點像生活在湯碗里,所有重物似乎都集中在碗底。 我想說猶他州的許多山谷被稱為地壘和地塹,雖然我確信一些地質學家可能糾正我的錯誤。無論如何,四面環山意味著空氣污染往往會收集並集中在山谷底。

從伍德蘭丘陵看猶他州

作為一個終身的猶他人,我開始懷疑污染有多嚴重? 新聞記者似乎認為很糟糕。 政界人士卻說這種情況從未如此好過。 有多糟糕呢? 它對房地產價值等因素有何影響? 有多少人受到影響?

為了幫助回答其中一些問題,我們與MapD的高級開發人員倡導者Randy Zwitch合作。 通過這種合作,我們希望可以更好地了解猶他州的空氣質量及其影響,並且隨著我們的學習,我們將與您分享我們的流程。

這種合作關係將產生一系列博客文章,記錄我們的流程和學習所得。

分析猶他州空氣質量

第一部分:連接到 EPA 的 AQS 數據 API

第二部分:AQS 數據清理和轉化

第三部分:使用 Shapefile 並在 MapD 中分配AQI站點

第四部分:在 MapD 中構建猶他州 AQI 儀錶板

第五部分:最終分析:空氣質量調查結果

讓我們開始吧...


在 EPA.gov 上註冊一個賬號

我們需要從環保局獲取我們的空氣質量數據。數據免費提供,唯一的要求是創建一個賬戶,用於訪問空氣質量數據API。

要創建新帳戶,請訪問https://aqs.epa.gov/signup。您需要提供的唯一信息是電子郵件地址。 在使用您的電子郵件地址提交表單後,您將收到一個密碼。


熟悉 API 參數和數據

收到 API 密碼後,你就可以通過一個基於網頁的查詢表查詢空氣質量數據。

EPA 上基於網頁的空氣質量查詢工具

使用這個基於網頁的查詢工具可以快速熟悉可用的數據類型,用於選擇所需數據的參數以及整體數據輸出格式。


確定分析所需的數據

通過API可以獲得大量的空氣質量數據,當您嘗試使用基於網頁的查詢工具時,您可以開始了解哪種數據集最符合您的興趣。 對於我們的分析,我們使用以下參數:

AQI污染物:該數據集包含用於測量空氣質量指數的所有污染物,您可能更熟悉將其作為污染物指標,例如今天我們的空氣污染是紅色,請拼車出行。

參數代碼:我們沒有提供參數代碼,因為我們想要評估所有與AQI相關的污染物。 但是,如果您只對臭氧感興趣,可以通過傳入「臭氧」參數代碼(44201 - 臭氧)來限制查詢。

州代碼:在這個分析中,我們對猶他州(49 - 猶他州)感興趣。

郡代碼:我們想要檢索猶他州所有郡的空氣質量數據,但是將此參數留空會導致 API 調用失敗,因此我們需要單獨請求每個郡的數據集。 下一步有更多這方面的內容。


從網頁表格遷移到編程 API 調用

一旦您理解了數據並了解了如何構建查詢,就可以從基於網頁的表單轉換為您選擇的編程語言,以便對數據進行檢索,挖掘,清理,傳輸等。 對於此示例,我們將使用Python。

有關如何與API交互的詳細文檔,請參閱:https://aqs.epa.gov/aqsweb/documents/ramltohtml.html

Python 腳本示例

項目路徑結構

讓我們分解這個例子中的操作:

第1步: 導入 Python 庫

pandas:由於數據來自API,我們將使用 Pandas 將數據存儲在 DataFrame 中。 稍後,我們將在操作數據時使用Pandas 的其他功能。

io:我們將使用 io 庫來解碼從API返回的數據。

requests:Requests 庫將用於向 EPA.gov 伺服器發出API請求。

第2步:創建 Pandas Dataframe

我們將創建一個空的 DataFrame 來存儲 API 的響應。

第3步: 導入配置數據

如前所述,我們無法請求整個州的數據,因此我們需要一種有效的方法來按縣逐個請求數據。 為了使代碼更具可伸縮性,我們將使用 county.py 來檢索要處理的郡列表。 雖然我們在這裡只看猶他州,但代碼可以很容易地擴展到處理任何州.

將用於構造 API 調用的基本配置信息包含在名為 config.py 的文件中,此文件作為基本配置文件運行,您要從主項目代碼中抽象出來的任何細節都可以放到裡面。

第4步: 遍歷州的每個郡

現在我們需要遍歷有興趣分析的州的每個郡。

這就是我們定義循環的方式。 使用 county.py 中包含的縣列表,我們將遍歷州的縣列表中的每個縣名(如 config.py 中所定義)。 對我們來說,我們的 config.stateName = utah。

第5步: 構建API調用

在我們的郡循環中,我們將構建一個 API 調用來檢索給定的州 - 郡組合的空氣質量數據。

這裡我們只是構建一個字元串,然後用於執行API調用。 API連接詳細信息,如在config.py中定義的 apiURL 和 apiUser 。

構造 API 字元串的示例

基本查詢參數,如 aqsClass 和 stateCode,也在 config.py 中定義。

countyCode 是循環處理的當前郡的代碼。

如果您希望通過簡單地在 config.py 文件中添加兩個額外的行項目,您所請求的數據集的開始(bdate)和結束(edate)日期也可以編碼到 config.py 中,如下所示:

我希望通過請求給定年份的數據來使腳本更容易運行,而無需每次都更新配置文件,因此我只需編寫用戶輸入來獲取所需的年份,如下所示:

第6步:發出 API 請求並處理結果

我們將使用 requests 庫來發送 API 請求,使用我們在上一步中構建的字元串。

然後將響應存儲在 Pandas 的 DataFrame aqs_df 中。

最後,我們將響應 DataFrame 合併到我們的主 DataFrame 中。 請記住,我們循環遍歷給定州的每個縣,因此我們需要處理結果,然後構建一個 DataFrame,其中包含州內每個縣的所有數據。

第7步: 輸出全部結果

最後,在我們為州中的每個縣提出API請求並將每個API調用的響應組合到我們的主 DataFrame df之後,我們現在可以將結果輸出到 csv 文件中。

雖然我們將在 Python 中進行額外的清理和工作,但我們希望將輸出數據快速導入 MapD,以確保在我們完成 Python 中的任何其他工作之前格式是理想的(這些額外的計算和清理步驟將在未來的文章中呈現)。

本系列的下一篇文章將重點介紹如何從 API 清理數據,使用數據計算空氣質量指數(AQI),並導出數據以導入MapD,我們將進一步分析數據並創建互動式數據可視化。

原文:

https://33sticks.com/analyzing-utahs-air-quality-connecting-epas-aqs-data-api/


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

NLP 教程:詞性標註、依存分析和命名實體識別解析與應用
微軟發布 1.25 億美國建築足跡開放數據

TAG:AI研習社 |