2023年4月24日 星期一

幫 OWID 資料加上三字元 iso 國碼及所在大陸

上 「資料視覺化」 課程的時候, 想要拿 electricity mix 這個資料集做例子。 發現裡面混雜著個別的國家、 聯盟 (G20、 OECD) 跟大陸 (歐/亞/非/..), 很難整理。 另一方面我也希望標示每個國家所在的大陸, 但是原始資料集裡面並沒有這項資訊。 於是我找到 List of Countries by Continent 這個表格, 並且 在 owid dataset 發問 之後修改了我的小程式 country-encode.py, 以後要整理 OWID 的資料就方便多了。

假設程式碼 country-encode.py、 簡碼對照表 country-codes.csv 跟某個想要處理的 csv 資料檔 (例如我提供的範例 democracy.csv) 這三個檔案都在目前目錄。 可以這樣執行: python3 country-encode.py democracy.csv 它會在每一列前面加上 iso3 跟 continent 這兩個欄位。 其中 iso3 這個欄位也有可能是 OWID 自己定義的區域代碼 (例如 OWID_EU27 代表歐盟), 只要將這些列過濾掉, 就可以得到最初想要的資料。 如果 csv 資料檔的國家名稱欄位並不在最前面 (第 0 欄), 也可以用 -c 指定以其他欄位作為國名來查詢。

如果遇到查詢不到的國家名稱, 它會試著縮短名稱, 並且用 difflib.get_close_matches() 來模糊比對。 如果還是查不到, 或是查到不止一個類似的名稱, 他會在這一列最前面加上 # , 而這些資料就必須要另外手動處理。 例如 electricity mix 那個檔案裡面就會出現這樣的例子。

有了 iso 三碼國碼, 以後也可以很方便地 join 好幾個表格。 OWID 資料集, 我來了~

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。