能否让Plotly choropleth使用ISO 3166-1 alpha-2国家代码而不是ISO 3166-1 alpha-3来绘制国家地图?

3

我最近开始使用Plotly,并决定尝试"世界地图",因为它看起来非常简单。我的数据集中有指定受访者所在国家的两位数国家代码(例如,巴西的BR或德国的DE,也称为ISO 3166-1 alpha-2代码)。当我第一次成功运行文件并在Web浏览器中加载它时,屏幕上没有显示地图,这让我感到困惑。我查看了示例csv文件,并注意到它使用三位数国家代码(例如,意大利的ITA或瑞典的SWE,这些被称为ISO 3166-1 alpha 3代码)。我创建了一个小测试集,并将三位数代码应用于我的数据集,地图加载了我放入的所有数据,并在我指定的正确国家内显示。这使我相信,choropleth默认在数据中查找三位数国家代码,以便知道在地图上放置数据的位置。
在我设置循环遍历接收到的数据并将所有代码从两个字母格式更改为三个字母格式之前,我想知道在Plotly choropleths中是否有一种简单的方法可以指定您想要的国家代码类型?
2个回答

6

请点击下方链接查看2个字母到3个字母的映射表:

http://www.nationsonline.org/oneworld/country_code_list.htm

Countrylet     2let  3let  
Afghanistan    AF    AFG  
Aland Islands  AX    ALA 

 

dfcountry = pd.read_csv('countryMap.txt',sep='\t') # mapping of 2 letter to 3 letter

 

    Country  min    avg     max
    AD       5251   5251    5251

 

dfData = pd.read_csv('myData.txt',sep='\t') # My Source data

df = dfData.merge(dfcountry,how='inner',left_on=['Country'],right_on=['2let'])

现在您可以使用三个字符的国家代码。我因为时间紧迫,所以采取了一种简便的方法。希望这有所帮助。


这是完整的代码 代码链接 git - Nav

2

或者您可以使用pycountry-converthttps://pypi.org/project/pycountry-convert/

from pycountry_convert import country_alpha2_to_country_name, country_name_to_country_alpha3

data['country_alpha_3'] = data.country_alpha_2.apply(lambda x: country_name_to_country_alpha3(country_alpha2_to_country_name(x)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接