country-converter官方文档----机翻人工确认

项目描述

国家转换器 (coco) 是一个 Python 包,可在不同的分类和不同的命名版本之间转换和匹配国家名称。在内部,它使用常规的表达方式来匹配国家名称。可可还可用于在不同的分类方案之间构建聚合和谐矩阵。

内容表

作用

迄今为止,在(元)数据描述中,没有关于如何命名或指定个别国家单一标准。虽然某些数据源遵循 ISO 3166,但此标准除数字分类外,还定义了 2 个字母和 3 个字母的代码。使问题更加复杂的是,许多数据库没有使用现有标准之一,而是使用不合标准的国家名称对国家进行分类。

国家转换器(可可)自动转换从不同的标准和版本的国家名称。在内部,Coco 基于一张表格,其中指定了每个国家/地区不同的 ISO 和 UN 标准,以及官方名称和常规表达方式,旨在匹配特定国家名称的所有英文版本。此外,可可还包括基于联合国、欧盟、经合组织成员国、联合国区域规格、大陆以及各种MRIO和IAM数据库的分类(见下文的分类方案)。

安装

Country_converter在 Pypi 注册。从命令行:

pip install country_converter --upgrade

国家转换器也可以从conda,可以安装使用conda(如果你没有conda_forge通道添加到您的康达配置添加"-cconda",请参阅此处的安装说明):

conda install country_converter

或者,源代码可在GitHub上找到。

包裹取决于pandas库:测试测试是必需的。有关运行测试的更多信息,请参阅贡献.rst。

用法

基本使用

在 Python 内使用

将各种国名转换为某些标准名称:

import country_converter as coco
some_names = ['United Rep. of Tanzania', 'DE', 'Cape Verde', '788', 'Burma', 'COG',
              'Iran (Islamic Republic of)', 'Korea, Republic of',
              "Dem. People's Rep. of Korea"]
standard_names = coco.convert(names=some_names, to='name_short')
print(standard_names)

这导致[坦桑尼亚’,德国’,‘佛得角’,‘突尼斯’,‘缅甸’,‘刚果共和国’,‘伊朗’,‘韩国’,‘朝鲜’。输入格式根据 ISO 二个字母、ISO 三个字母、ISO 数字或常规表达匹配自动确定。如果有任何模糊性,可以用参数"src"指定源格式。

在多次转换的情况下,可以通过为所有转换对单个国家转换对象进行实例化来实现更好的性能:

import country_converter as coco
cc = coco.CountryConverter()

some_names = ['United Rep. of Tanzania', 'Cape Verde', 'Burma',
              'Iran (Islamic Republic of)', 'Korea, Republic of',
              "Dem. People's Rep. of Korea"]

standard_names = cc.convert(names = some_names, to = 'name_short')
UNmembership = cc.convert(names = some_names, to = 'UNmember')
print(standard_names)
print(UNmembership)

分类方案之间的转换:

iso3_codes = ['USA', 'VUT', 'TKL', 'AUT', 'XXX' ]
iso2_codes = coco.convert(names=iso3_codes, to='ISO2')
print(iso2_codes)

这导致 [美国’, ‘Vu’, ‘Tk’, ‘AT’, ‘找不到’

未找到的指示可以指定(例如,not_found = “不存在”),如果"not_found"未通过,则原始条目将通过:

iso2_codes = coco.convert(names=iso3_codes, to='ISO2', not_found=None)
print(iso2_codes)

结果在 [‘美国’, ‘VU’, ‘Tk’, ‘AT’, ‘XX’

内部数据存储在pandas数据帧中,可直接访问。例如,这可用于筛选成员国组织的国家(每年)。注意:为此,需要一个"国家转换器"实例。

import country_converter as coco
cc = coco.CountryConverter()

some_countries = ['Australia', 'Belgium', 'Brazil', 'Bulgaria', 'Cyprus', 'Czech Republic',
                  'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary',
                  'India', 'Indonesia', 'Ireland', 'Italy', 'Japan', 'Latvia', 'Lithuania',
                  'Luxembourg', 'Malta', 'Romania', 'Russia', 'Turkey', 'United Kingdom',
                  'United States']

oecd_since_1995 = cc.data[(cc.data.OECD >= 1995) & cc.data.name_short.isin(some_countries)].name_short
eu_until_1980 = cc.data[(cc.data.EU <= 1980) & cc.data.name_short.isin(some_countries)].name_short
print(oecd_since_1995)
print(eu_until_1980)

所有分类均可通过:

cc.EU28
cc.OECD

cc.EU27as('ISO3')

以及可用的分类方案:

cc.valid_class

还有一个甲型腺,只得到国家分类(因此省略了任何国家集团):

cc.valid_country_classifications

如果您更需要一本描述分类/会员使用的字典:

import country_converter as coco
cc = coco.CountryConverter()
cc.get_correspondence_dict('EXIO3', 'ISO3')

还包括未在特定分类使用中分配的国家:

cc.get_correspondence_dict('EU27', 'ISO2', replace_nan='NonEU')

常规表达式还可用于将任何国家列表与任何其他国家列表匹配。例如:

match_these = ['norway', 'united_states', 'china', 'taiwan']
master_list = ['USA', 'The Swedish Kingdom', 'Norway is a Kingdom too',
               'Peoples Republic of China', 'Republic of China' ]

matching_dict = coco.match(match_these, master_list)

默认情况下,如果找不到匹配项,则国家转换器会向巨蛇记录记录器发出警告。以下示例演示了如何配置可可伐木行为。

import logging
import country_converter as coco
logging.basicConfig(level=logging.INFO)
coco.convert("asdf")
# WARNING:country_converter.country_converter:asdf not found in regex
# Out: 'not found'

coco_logger = coco.logging.getLogger()
coco_logger.setLevel(logging.CRITICAL)
coco.convert("asdf")
# Out: 'not found'

有关更多信息,请参阅 IPython 笔记本(country_converter_examples.ipynb)

命令线使用

国家转换器包还提供了一个称为 coco 的指挥线接口。

最小示例:

coco Cyprus DE Denmark Estonia 4 'United Kingdom' AUT

根据将输入与 ISO2、ISO3、ISonumeric 或常规表达匹配匹配的输入,将给定名称转换为 ISO3 代码。名称列表必须按空格划分,由多个单词组成的国名必须放在引号中(’)。

输入分类可以用"src"或"-s"(或将自动确定)、目标分类(“到"或”-t")来指定。

默认输出是一个空间分离列表,可以通过"+output_sep"或"-o"(例如 -o"|")通过分离器来更改。

因此,要从 ISO3 转换为 UN 编号代码,并接收输出作为逗号分离列表使用:

coco AUT DEU VAT AUS -s ISO3 -t UNcode -o ', '

命令线工具还允许指定未找到条目的输出,包括通过"无"将其传递到输出:

coco CAN Peru US Mexico Venezuela UK Arendelle --not_found=None

并指定一个额外的数据文件,这将覆盖现有的国家匹配

coco Congo --additional_data path/to/datafile.csv

参阅 https://github.com/konstantinstadler/country_converter/tree/master/tests/custom_data_example.txt,了解其他数据文件示例。

旗帜UNmember_only(-u)和include_obsolete(-i)仅将搜索限制在联合国会员国,或将其扩展到还包括目前过时的国家。例如,荷属安的列斯群岛于2010年解散。

因此:

coco "Netherlands Antilles"

导致"未找到"。但是,搜索范围可扩展到最近解散的国家::

coco "Netherlands Antilles" -i

这导致了 “蚂蚁” 。

除这些国家外,可可指挥线工具还接受各种国家分类(EXIO1、EXIO2、EXIO3、WIOD、Eora、MESSAGE、OECD、EU27、EU28、UN、过时、塞西莉亚2050、金砖四国、APEC、基础、独联体、G7、G20)。其中之一可以通过

coco G20

列出该分类中的所有国家/

对于几乎涵盖所有国家的分类(MRIO 和 IAM 分类)

coco EXIO3

列出唯一的分类名称。在传递参数时,打印所选分类的简化函件:

coco EXIO3 --to ISO3

欲了解更多信息,请致电

coco -h
在Matlab中使用

较新的(在 2016 年测试)版本的 Matlab 允许直接调用 Python 功能和库。这需要安装在系统路径(例如通过 Anaconda)中的 Python 版本>= 3.4)。

要进行测试,请在 Matlab 中试用此:

py.print(py.sys.version)

如果这有效,您也可以在通过点(在窗口命令线)安装后使用 coco - 请参阅上面的安装说明):

pip install country_converter --upgrade

在 matlab 中:

coco = py.country_converter.CountryConverter()
countries = {'The Swedish Kingdom', 'Norway is a Kingdom too', 'Peoples Republic of China', 'Republic of China'};
ISO2_pythontype = coco.convert(countries, pyargs('to', 'ISO2'));
ISO2_cellarray = cellfun(@char,cell(ISO2_pythontype),'UniformOutput',false);

或者,作为一个长单线:

short_names = cellfun(@char, cell(py.country_converter.convert({56, 276}, pyargs('src', 'UNcode', 'to', 'name_short'))), 'UniformOutput',false);

如上所述,可可的所有属性也可在Matlab提供:

coco = py.country_converter.CountryConverter();
coco.EU27
EU27ISO3 = coco.EU27as('ISO3');

这些功能返回pandas数据帧。基础值可以访问与 。值 (例如.

EU27ISO3.values

我留给专业的 Matlab 用户来找出如何进一步处理它们。

另请参阅 IPython 笔记本(country_converter_examples.ipynb)以获取更多信息 - Python 中提供的所有功能(例如,通过附加数据文件,指定在数据丢失的情况下的输出)也在 Matlab 中工作,通过 pyargs 功能传递参数。

为国家聚合构建和谐

Coco 提供在不同分类之间构建和谐载体、矩阵和字典的功能。这可以用于巨蛇以及垫板。有关更多信息,请参阅(country_converter_aggregation_helper.ipynb)

分类方案

目前有以下分类方案(另请参阅下面的数据源以获取更多信息):

  1. ISO2 (ISO 3166-1 阿尔法-2)
  2. ISO3 (ISO 3166-1 阿尔法-3)
  3. ISO - 数字(ISO 3166-1 数字)
  4. 联合国数字代码(M.49 - 跟随大扩展ISO数字)
  5. 标准名称或短名称
  6. "官方"名称
  7. 大陆
  8. 联合国地区
  9. EXIOBASE 1 分类
  10. EXIOBASE 2 分类
  11. EXIOBASE 3 分类
  12. WIOD分类
  13. 欧拉
  14. 经合组织成员(每年)
  15. 消息11 区域分类
  16. 图像
  17. 提醒
  18. 联合国会员国(每年)
  19. 欧盟成员(包括欧盟12国、欧盟15国、欧盟25国、欧盟27国、EU27_2007国、欧盟28国)
  20. 欧洲经济区成员
  21. 申根
  22. [塞西莉亚](https://cecilia2050.eu/system/files/De Koning et al. (2014)_Scenarios for 2050_0.pdf)2050 分类
  23. 亚太经合组织
  24. 金砖四国
  25. 基本
  26. 独联体(截至2019年,土库曼斯坦除外)
  27. G7
  28. G20(将所有欧盟成员国列为个别成员国)
  29. 粮农组织代码(数字)
  30. GBD 代码(数字 - 全球疾病负担国家代码)

Coco 包含官方认可的代码以及争议或解散国家的非标准代码。将设置限制为只有官方承认的联合国会员国或包括过时的国家,请通过

import country_converter as coco
cc = coco.CountryConverter()
cc_UN = coco.CountryConverter(only_UNmember=True)
cc_all = coco.CountryConverter(include_obsolete=True)

cc.convert(['PSE', 'XKX', 'EAZ', 'FRA'], to='name_short')
cc_UN.convert(['PSE', 'XKX', 'EAZ', 'FRA'], to='name_short')
cc_all.convert(['PSE', 'XKX', 'EAZ', 'FRA'], to='name_short')

cc 导致 [巴勒斯坦’, ‘科索沃’, ‘找不到’, ‘法国’, 而cc_UN转换为 [未找到’, ‘未找到’, ‘未找到’, '法国]和cc_all转换为 [‘巴勒斯坦’, ‘科索沃’, ‘桑给巴尔’, ‘法国’] 请注意, 基础数据帧可在属性.数据 (例如cc_all. 数据) 。

数据源和进一步阅读

大多数基础数据都可以在维基百科中找到,描述ISO 3166-1的页面是一个很好的起点。联合国区域/代码在联合国统计司(未统计)网页上提供。在维基百科上也解释了ISO数字代码和UN(M.49)代码之间的差异。从各自的数据库中提取了EXIOBASE、WIODEora分类。 对于Eora,这些名称基于网页上提供的"国家名称"csv 文件,但更新了 Eora26 数据库中使用的不同名称。消息分类遵循消息模型区域描述中给出的 11 个区域聚合。IMAGE分类基于"区域分类地图",以便提醒我们从模型开发人员处收到国家地图。

经合组织联合国的成员可以在成员组织的网页上找到,关于过时的国家代码的信息在Statoids网页上。

由于英国脱欧进程,欧盟的形势变得复杂起来。在命名上,可可遵循欧盟统计局的词汇表,因此欧盟27指没有英国的欧盟,而EU27_2007指的是没有克罗地亚的欧盟(2007年扩大后的地位)。欧盟的捷径总是与最近的分类联系起来。欧洲经济区协议仍然适用于英国(2020年9月,英国脱欧过渡期-如这里所述),因此英国目前被纳入欧洲经济区。

全球疾病负担国家代码是从此处可用的 GBD 代码簿中提取的。

沟通、问题、错误和增强功能

请使用问题跟踪器记录错误,建议增强功能以及与 coco 相关的所有其他通信。

你可以在推特上关注我, 了解我所有的开源和研究项目的最新消息 (偶尔还有一些随机转推) 。

相关软件

一揽子计划为国家提供历史国家、国家细分、语言和货币的ISO官方数据库。如果您需要转换非英语国名,则国名包括一个以不同语言和功能转换为不同 ISO 3166 标准的国名的广泛数据库。Python-iso3166专注于 ISO 3166 标准中定义的两个字母、三个字母和三位数代码之间的转换。

如果您正在使用 R,则应该查看国家代码

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值