上 「資料視覺化」 課程的時候, 想要拿 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 資料集, 我來了~
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。