是否有可能使Plotly等值使用ISO 3166-1 alpha-2国家代码而不是ISO 3166-1 alpha-3来映射国家?

时间:2016-07-22 09:59:56

标签: python plotly

我刚刚开始使用Plotly,并决定给"World Choropleth Map"一个机会,因为它看起来很简单。我使用的数据集在列中有两位数的国家/地区代码,用于指定受访者所在的国家/地区(例如,巴西的BR,德国的DE,也称为ISO 3166-1 alpha-2 codes,我相信。)我首先设法运行该文件并将其加载到Web浏览器中,屏幕上没有出现任何地图,我发现这很令人费解。我查看了示例csv并注意到它使用three digit country codes(例如,意大利的ITA或瑞典的SWE,这些被称为ISO 3166-1 alpha 3 codes。)我做了一个小测试集并应用了三位数代码到我的数据集,地图加载了我输入的所有数据,所有数据都在我指定的正确国家/地区内。这使我相信,默认情况下,等值线会查看三位数国家/地区代码的数据,以便知道将数据放在地图上的位置。

在我设置的东西循环通过我们收到的数据并将所有代码从2字母格式更改为3字母格式之前,我想知道在Plotly choropleths中是否有一种简单的方法可以指定哪种类型你想要的国家代码?

2 个答案:

答案 0 :(得分:3)

检查下面的链接,获取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'])

现在您可以使用3个国家/地区代码。我是在一个时间表下,所以只是做了一个捷径。希望这会有所帮助。

答案 1 :(得分:1)

或者您可以使用pycountry-convert软件包https://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)))