pyecharts从入门到精通-地图专题Map-世界地图和中国城市地图

2023-10-16 17:50:01 浏览数 (1)

参考

官方文档:https://pyecharts.org/#/zh-cn/quickstart Python使用Pyecharts画Geo地图,如何显示具体地点名称 pyecharts世界地图用:国家中英文对照表.xlsx Map中的地理坐标问题

安装与查看pyecharts

安装pyecharts

代码语言:javascript复制
pip install pyecharts==2.0.3
# Successfully installed prettytable-3.7.0 pyecharts-2.0.3 simplejson-3.19.1

查看版本

代码语言:javascript复制
import pyecharts
print(pyecharts.__version__) 
# 2.0.3

地图实现-Geo

pyecharts的地图实现包括:

Geo:地理坐标系 Map:地图 BMap:百度地图

本部分完成Geo地理坐标系实现。

数据集查看

数据为世界人口数据,数据集连接: Worldometers网站可实时统计全球人口数量 全球人口实时统计数据网站(Worldometers),联合国预计今日全球人口将突破80亿!

读取数据
代码语言:javascript复制
import pandas as pd
df = pd.read_excel(r'D:UsersDELLDesktoppopulationtopAll.xlsx',engine='openpyxl',sheet_name="中文")
df
生成中文国家名称
国家中文和英文名称字典:

name_map = {‘Singapore Rep.’: ‘新加坡’, ‘Dominican Rep.’: ‘多米尼加’, ‘Palestine’: ‘巴勒斯坦’, ‘Bahamas’: ‘巴哈马’, ‘Timor-Leste’: ‘东帝汶’, ‘Afghanistan’: ‘阿富汗’, ‘Guinea-Bissau’: ‘几内亚比绍’, “Cte d’Ivoire”: ‘科特迪瓦’, ‘Siachen Glacier’: ‘锡亚琴冰川’, “Br. Indian Ocean Ter.”: ‘英属印度洋领土’, ‘Angola’: ‘安哥拉’, ‘Albania’: ‘阿尔巴尼亚’, ‘United Arab Emirates’: ‘阿联酋’, ‘Argentina’: ‘阿根廷’, ‘Armenia’: ‘亚美尼亚’, ‘French Southern and Antarctic Lands’: ‘法属南半球和南极领地’, ‘Australia’: ‘澳大利亚’, ‘Austria’: ‘奥地利’, ‘Azerbaijan’: ‘阿塞拜疆’, ‘Burundi’: ‘布隆迪’, ‘Belgium’: ‘比利时’, ‘Benin’: ‘贝宁’, ‘Burkina Faso’: ‘布基纳法索’, ‘Bangladesh’: ‘孟加拉国’, ‘Bulgaria’: ‘保加利亚’, ‘The Bahamas’: ‘巴哈马’, ‘Bosnia and Herz.’: ‘波斯尼亚和黑塞哥维那’, ‘Belarus’: ‘白俄罗斯’, ‘Belize’: ‘伯利兹’, ‘Bermuda’: ‘百慕大’, ‘Bolivia’: ‘玻利维亚’, ‘Brazil’: ‘巴西’, ‘Brunei’: ‘文莱’, ‘Bhutan’: ‘不丹’, ‘Botswana’: ‘博茨瓦纳’, ‘Central African Rep.’: ‘中非’, ‘Canada’: ‘加拿大’, ‘Switzerland’: ‘瑞士’, ‘Chile’: ‘智利’, ‘China’: ‘中国’, ‘Ivory Coast’: ‘象牙海岸’, ‘Cameroon’: ‘喀麦隆’, ‘Dem. Rep. Congo’: ‘刚果民主共和国’, ‘Congo’: ‘刚果’, ‘Colombia’: ‘哥伦比亚’, ‘Costa Rica’: ‘哥斯达黎加’, ‘Cuba’: ‘古巴’, ‘N. Cyprus’: ‘北塞浦路斯’, ‘Cyprus’: ‘塞浦路斯’, ‘Czech Rep.’: ‘捷克’, ‘Germany’: ‘德国’, ‘Djibouti’: ‘吉布提’, ‘Denmark’: ‘丹麦’, ‘Algeria’: ‘阿尔及利亚’, ‘Ecuador’: ‘厄瓜多尔’, ‘Egypt’: ‘埃及’, ‘Eritrea’: ‘厄立特里亚’, ‘Spain’: ‘西班牙’, ‘Estonia’: ‘爱沙尼亚’, ‘Ethiopia’: ‘埃塞俄比亚’, ‘Finland’: ‘芬兰’, ‘Fiji’: ‘斐’, ‘Falkland Islands’: ‘福克兰群岛’, ‘France’: ‘法国’, ‘Gabon’: ‘加蓬’, ‘United Kingdom’: ‘英国’, ‘Georgia’: ‘格鲁吉亚’, ‘Ghana’: ‘加纳’, ‘Guinea’: ‘几内亚’, ‘Gambia’: ‘冈比亚’, ‘Guinea Bissau’: ‘几内亚比绍’, ‘Eq. Guinea’: ‘赤道几内亚’, ‘Greece’: ‘希腊’, ‘Greenland’: ‘格陵兰’, ‘Guatemala’: ‘危地马拉’, ‘French Guiana’: ‘法属圭亚那’, ‘Guyana’: ‘圭亚那’, ‘Honduras’: ‘洪都拉斯’, ‘Croatia’: ‘克罗地亚’, ‘Haiti’: ‘海地’, ‘Hungary’: ‘匈牙利’, ‘Indonesia’: ‘印度尼西亚’, ‘India’: ‘印度’, ‘Ireland’: ‘爱尔兰’, ‘Iran’: ‘伊朗’, ‘Iraq’: ‘伊拉克’, ‘Iceland’: ‘冰岛’, ‘Israel’: ‘以色列’, ‘Italy’: ‘意大利’, ‘Jamaica’: ‘牙买加’, ‘Jordan’: ‘约旦’, ‘Japan’: ‘日本’, ‘Kazakhstan’: ‘哈萨克斯坦’, ‘Kenya’: ‘肯尼亚’, ‘Kyrgyzstan’: ‘吉尔吉斯斯坦’, ‘Cambodia’: ‘柬埔寨’, ‘Korea’: ‘韩国’, ‘Kosovo’: ‘科索沃’, ‘Kuwait’: ‘科威特’, ‘Lao PDR’: ‘老挝’, ‘Lebanon’: ‘黎巴嫩’, ‘Liberia’: ‘利比里亚’, ‘Libya’: ‘利比亚’, ‘Sri Lanka’: ‘斯里兰卡’, ‘Lesotho’: ‘莱索托’, ‘Lithuania’: ‘立陶宛’, ‘Luxembourg’: ‘卢森堡’, ‘Latvia’: ‘拉脱维亚’, ‘Morocco’: ‘摩洛哥’, ‘Moldova’: ‘摩尔多瓦’, ‘Madagascar’: ‘马达加斯加’, ‘Mexico’: ‘墨西哥’, ‘Macedonia’: ‘马其顿’, ‘Mali’: ‘马里’, ‘Myanmar’: ‘缅甸’, ‘Montenegro’: ‘黑山’, ‘Mongolia’: ‘蒙古’, ‘Mozambique’: ‘莫桑比克’, ‘Mauritania’: ‘毛里塔尼亚’, ‘Malawi’: ‘马拉维’, ‘Malaysia’: ‘马来西亚’, ‘Namibia’: ‘纳米比亚’, ‘New Caledonia’: ‘新喀里多尼亚’, ‘Niger’: ‘尼日尔’, ‘Nigeria’: ‘尼日利亚’, ‘Nicaragua’: ‘尼加拉瓜’, ‘Netherlands’: ‘荷兰’, ‘Norway’: ‘挪威’, ‘Nepal’: ‘尼泊尔’, ‘New Zealand’: ‘新西兰’, ‘Oman’: ‘阿曼’, ‘Pakistan’: ‘巴基斯坦’, ‘Panama’: ‘巴拿马’, ‘Peru’: ‘秘鲁’, ‘Philippines’: ‘菲律宾’, ‘Papua New Guinea’: ‘巴布亚新几内亚’, ‘Poland’: ‘波兰’, ‘Puerto Rico’: ‘波多黎各’, ‘Dem. Rep. Korea’: ‘朝鲜’, ‘Portugal’: ‘葡萄牙’, ‘Paraguay’: ‘巴拉圭’, ‘Qatar’: ‘卡塔尔’, ‘Romania’: ‘罗马尼亚’, ‘Russia’: ‘俄罗斯’, ‘Rwanda’: ‘卢旺达’, ‘W. Sahara’: ‘西撒哈拉’, ‘Saudi Arabia’: ‘沙特阿拉伯’, ‘Sudan’: ‘苏丹’, ‘S. Sudan’: ‘南苏丹’, ‘Senegal’: ‘塞内加尔’, ‘Solomon Is.’: ‘所罗门群岛’, ‘Sierra Leone’: ‘塞拉利昂’, ‘El Salvador’: ‘萨尔瓦多’, ‘Somaliland’: ‘索马里兰’, ‘Somalia’: ‘索马里’, ‘Serbia’: ‘塞尔维亚’, ‘Suriname’: ‘苏里南’, ‘Slovakia’: ‘斯洛伐克’, ‘Slovenia’: ‘斯洛文尼亚’, ‘Sweden’: ‘瑞典’, ‘Swaziland’: ‘斯威士兰’, ‘Syria’: ‘叙利亚’, ‘Chad’: ‘乍得’, ‘Togo’: ‘多哥’, ‘Thailand’: ‘泰国’, ‘Tajikistan’: ‘塔吉克斯坦’, ‘Turkmenistan’: ‘土库曼斯坦’, ‘East Timor’: ‘东帝汶’, ‘Trinidad and Tobago’: ‘特里尼达和多巴哥’, ‘Tunisia’: ‘突尼斯’, ‘Turkey’: ‘土耳其’, ‘Tanzania’: ‘坦桑尼亚’, ‘Uganda’: ‘乌干达’, ‘Ukraine’: ‘乌克兰’, ‘Uruguay’: ‘乌拉圭’, ‘United States’: ‘美国’, ‘Uzbekistan’: ‘乌兹别克斯坦’, ‘Venezuela’: ‘委内瑞拉’, ‘Vietnam’: ‘越南’, ‘Vanuatu’: ‘瓦努阿图’, ‘West Bank’: ‘西岸’, ‘Yemen’: ‘也门’, ‘South Africa’: ‘南非’, ‘Zambia’: ‘赞比亚’, ‘Zimbabwe’: ‘津巴布韦’, ‘Comoros’: ‘科摩罗’}

根据字典,生成国家中文名
代码语言:javascript复制
df['国家(中文)']=df['国家(英文)'].map(name_map)
print(df.head())
df.info()

另外,部分字典中国家中文名称和Excel中国家名称不对应,需要修改。否则,这几个国家数值不能正常显示(源代码中已修改)。如:波黑(Excel文件中为全称)、蒙古(Excel文件中为蒙古国)、土库曼斯坦(Excel文件中没有,我们最后一行添加数据0)、刚果民主共和国(Excel文件中为刚果(金))、刚果(Excel文件中为刚果(布)),如果需要修改的话,再单独修改,这里不进行细节处理。

查看没有转换成功的国家中文有哪些
代码语言:javascript复制
df[df['国家(中文)'].isna()]
过滤包含中文国家名的数据
代码语言:javascript复制
df_new_cn = df[~df['国家(中文)'].isna()]
df_new_cn
可视化人口数据
代码语言:javascript复制
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker

c = (
    Map()
    .add("人口数量", [list(z) for z in zip(df_new_cn['国家(英文)'], df_new_cn['人口数量'])], "world")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Map-世界地图"),
        visualmap_opts=opts.VisualMapOpts(max_=1500000000),
    )
#     .render("map_world.html")
)
c.render_notebook()
显示中国城市地图数据
代码语言:javascript复制
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker

print(dir(Faker))
c = (
    Map()
    .add(
        "商家A",
        [list(z) for z in zip(Faker.guangdong_city, Faker.values())],
        #"china-cities",
        '广东',
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Map-中国地图(带城市)"),
        visualmap_opts=opts.VisualMapOpts(),
    )
#     .render("map_china_cities.html")
)
c.render_notebook()

拓展-pyecharts中Map源码

class pyecharts.charts.Map

代码语言:javascript复制
class Map(
    # 初始化配置项,参考 `global_options.InitOpts`
    init_opts: opts.InitOpts = opts.InitOpts()
)

func pyecharts.charts.Map.add

代码语言:javascript复制
def add(
    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
    series_name: str,

    # 数据项 (坐标点名称,坐标点值)
    data_pair: types.Sequence[types.Union[types.Sequence, opts.MapItem, dict]],

    # 地图类型,具体参考 pyecharts.datasets.map_filenames.json 文件
    maptype: str = "china",

    # 是否选中图例
    is_selected: bool = True,

    # 是否开启鼠标缩放和平移漫游。
    is_roam: bool = True,

    # 当前视角的中心点,用经纬度表示
    center: Optional[Sequence] = None,

    # 参数用于 scale 地图的长宽比。
    aspect_scale: types.Numeric = 0.75,

    # 二维数组,定义定位的左上角以及右下角分别所对应的经纬度。
    bounding_coords: types.Optional[types.Sequence[types.Numeric]] = None,

    # 最小的缩放值。
    min_scale_limit: types.Optional[types.Numeric] = None,

    # 最大的缩放值。
    max_scale_limit: types.Optional[types.Numeric] = None,

    # 默认是 'name',针对 GeoJSON 要素的自定义属性名称,作为主键用于关联数据点和 GeoJSON 地理要素。
    name_property: str = "name",

    # 选中模式,表示是否支持多个选中,默认关闭,支持布尔值和字符串。
    # 字符串取值可选'single'表示单选,或者'multiple'表示多选。
    selected_mode: types.Union[bool, str] = False,

    # 当前视角的缩放比例。
    zoom: Optional[Numeric] = 1,

    # 自定义地区的名称映射
    name_map: Optional[dict] = None,

    # 标记图形形状
    symbol: Optional[str] = None,

    # 多个拥有相同地图类型的系列会使用同一个地图展现。
    # 如果多个系列都在同一个区域有值,ECharts 会对这些值统计得到一个数据。
    # 这个配置项就是用于配置统计的方式,目前有:
    # 'sum' 取和。
    # 'average' 取平均值。
    # 'max' 取最大值。
    # 'min' 取最小值。
    map_value_calculation: str = "sum",

    # 是否显示标记图形
    is_map_symbol_show: bool = True,

    # 所有图形的 zlevel 值。
    # zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面。
    z_level: types.Numeric = 0,

    # 组件的所有图形的z值。控制图形的前后顺序。z 值小的图形会被 z 值大的图形覆盖。
    # z 相比 zlevel 优先级更低,而且不会创建新的 Canvas。
    z: types.Numeric = 2,

    # 组件离容器左侧的距离。
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比
    # 也可以是 'left', 'center', 'right'。
    pos_left: types.Union[str, types.Numeric] = "auto",

    # 组件离容器上侧的距离。
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比
    # 也可以是 'top', 'middle', 'bottom'。
    pos_top: types.Union[str, types.Numeric] = "auto",

    # 组件离容器右侧的距离。
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。默认自适应。
    pos_right: types.Union[str, types.Numeric] = "auto",

    # 组件离容器下侧的距离。
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。默认自适应。
    pos_bottom: types.Union[str, types.Numeric] = "auto",

    # 默认情况下,map series 会自己生成内部专用的 geo 组件。但是也可以用这个 geoIndex 指定一个 geo 组件。
    geo_index: types.Optional[types.Numeric] = None,

    # 当使用 dataset 时,seriesLayoutBy 指定了 dataset 中用行还是列对应到系列上
    # 也就是说,系列“排布”到 dataset 的行还是列上。可取值:
    # 'column':默认,dataset 的列对应于系列,从而 dataset 中每一列是一个维度(dimension)。
    # 'row':dataset 的行对应于系列,从而 dataset 中每一行是一个维度(dimension)。
    series_layout_by: str = "column",

    # 如果 series.data 没有指定,并且 dataset 存在,那么就会使用 dataset。datasetIndex 指定本系列使用那个 dataset。
    dataset_index: types.Optional[types.Numeric] = 0,

    # pyecharts 暂时没有提供 left/top/right/bottom 的配置
    # layoutCenter 和 layoutSize 提供了除了 left/right/top/bottom/width/height 之外的布局手段。
    # 在使用 left/right/top/bottom/width/height 的时候
    # 可能很难在保持地图高宽比的情况下把地图放在某个盒形区域的正中间,并且保证不超出盒形的范围。
    # 此时可以通过 layoutCenter 属性定义地图中心在屏幕中的位置,layoutSize 定义地图的大小。
    # 如下示例
    # layoutCenter: ['30%', '30%'],
    # // 如果宽高比大于 1 则宽度为 100,如果小于 1 则高度为 100,保证了不超过 100x100 的区域
    # layoutSize: 100
    layout_center: types.Optional[types.Sequence[str]] = None,

    # 地图的大小,见 layoutCenter。支持相对于屏幕宽高的百分比或者绝对的像素大小。
    layout_size: types.Union[str, types.Numeric] = None,

    # 标签配置项,参考 `series_options.LabelOpts`
    label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),

    # 提示框组件配置项,参考 `series_options.TooltipOpts`
    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,

    # 图元样式配置项,参考 `series_options.ItemStyleOpts`
    itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,

    # 高亮标签配置项,参考 `series_options.LabelOpts`
    emphasis_label_opts: Union[opts.LabelOpts, dict, None] = None,

    # 高亮图元样式配置项,参考 `series_options.ItemStyleOpts`
    emphasis_itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
)

MapItem:地图数据项

代码语言:javascript复制
class MapItem(
    # 数据所对应的地图区域的名称,例如 '广东','浙江'。
    name: Optional[str] = None,

    # 该区域的数据值。
    value: Optional[Numeric] = None,

    # 该区域是否选中。
    is_selected: bool = False,

    # 标签配置项,参考 `series_options.LabelOpts`
    label_opts: Union[LabelOpts, dict, None] = None,

    # 图元样式配置项,参考 `series_options.ItemStyleOpts`
    itemstyle_opts: Union[ItemStyleOpts, dict, None] = None,

    # 提示框组件配置项,参考 `series_options.TooltipOpts`
    tooltip_opts: Union[TooltipOpts, dict, None] = None,
)

拓展-python字典key和value互换

参考:https://blog.csdn.net/qq_34663267/article/details/111183411 上面给出的字典中,key为应为,value为中文,需要互换下:

1.字典推导式:

代码语言:javascript复制
m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
res = {v: k for k, v in m.items()}
print(res)

2.使用压缩器:

代码语言:javascript复制
m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
mi = dict(zip(m.values(), m.keys()))
print(mi)

3.遍历字典:

代码语言:javascript复制
m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
inverted_dict = {}
for key, value in m.items():
    inverted_dict[value] = key
print(inverted_dict)

4.结合函数map, reversed:

代码语言:javascript复制
m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
inverted_dict = dict(map(reversed, m.items()))
print(inverted_dict)

根据英文列生成中文国家名称,以上4种方法均可,本文采用字典推导式:

代码语言:javascript复制
res = {v: k for k, v in name_map.items()}
res

备注,如果不想转换字典,也可以通过如下函数实现根据value获取key

代码语言:javascript复制
# 根据字典的value获取key的函数如下:
def getkey(value, tDict):
    '''知道值获取键'''
    keys = [i for i in tDict.keys()]
    values = [j for j in tDict.values()]
    if value in values:
        i = values.index(value)
    return keys[i]

附件-世界国家地区人口数据

序号,国家(中文),国家(英文),人口数量,增长率,人口密度 1,China,“1,439,323,776”,0.39%,153 2,India,“1,380,004,385”,0.99%,464 3,United States,“331,002,651”,0.59%,36 4,Indonesia,“273,523,615”,1.07%,151 5,Pakistan,“220,892,340”,2.00%,287 6,Brazil,“212,559,417”,0.72%,25 7,Nigeria,“206,139,589”,2.58%,226 8,Bangladesh,“164,689,383”,1.01%,“1,265” 9,Russia,“145,934,462”,0.04%,9 10,Mexico,“128,932,753”,1.06%,66 11,Japan,“126,476,461”,-0.30%,347 12,Ethiopia,“114,963,588”,2.57%,115 13,Philippines,“109,581,078”,1.35%,368 14,Egypt,“102,334,404”,1.94%,103 15,Vietnam,“97,338,579”,0.91%,314 16,DR Congo,“89,561,403”,3.19%,40 17,Turkey,“84,339,067”,1.09%,110 18,Iran,“83,992,949”,1.30%,52 19,Germany,“83,783,942”,0.32%,240 20,Thailand,“69,799,978”,0.25%,137 21,United Kingdom,“67,886,011”,0.53%,281 22,France,“65,273,511”,0.22%,119 23,Italy,“60,461,826”,-0.15%,206 24,Tanzania,“59,734,218”,2.98%,67 25,South Africa,“59,308,690”,1.28%,49 26,Myanmar,“54,409,800”,0.67%,83 27,Kenya,“53,771,296”,2.28%,94 28,South Korea,“51,269,185”,0.09%,527 29,Colombia,“50,882,891”,1.08%,46 30,Spain,“46,754,778”,0.04%,94 31,Uganda,“45,741,007”,3.32%,229 32,Argentina,“45,195,774”,0.93%,17 33,Algeria,“43,851,044”,1.85%,18 34,Sudan,“43,849,260”,2.42%,25 35,Ukraine,“43,733,762”,-0.59%,75 36,Iraq,“40,222,493”,2.32%,93 37,Afghanistan,“38,928,346”,2.33%,60 38,Poland,“37,846,611”,-0.11%,124 39,Canada,“37,742,154”,0.89%,4 40,Morocco,“36,910,560”,1.20%,83 41,Saudi Arabia,“34,813,871”,1.59%,16 42,Uzbekistan,“33,469,203”,1.48%,79 43,Peru,“32,971,854”,1.42%,26 44,Angola,“32,866,272”,3.27%,26 45,Malaysia,“32,365,999”,1.30%,99 46,Mozambique,“31,255,435”,2.93%,40 47,Ghana,“31,072,940”,2.15%,137 48,Yemen,“29,825,964”,2.28%,56 49,Nepal,“29,136,808”,1.85%,203 50,Venezuela,“28,435,940”,-0.28%,32 51,Madagascar,“27,691,018”,2.68%,48 52,Cameroon,“26,545,863”,2.59%,56 53,C么te d’Ivoire,“26,378,274”,2.57%,83 54,North Korea,“25,778,816”,0.44%,214 55,Australia,“25,499,884”,1.18%,3 56,Niger,“24,206,644”,3.84%,19 57,Taiwan,“23,816,775”,0.18%,673 58,Sri Lanka,“21,413,249”,0.42%,341 59,Burkina Faso,“20,903,273”,2.86%,76 60,Mali,“20,250,833”,3.02%,17 61,Romania,“19,237,691”,-0.66%,84 62,Malawi,“19,129,952”,2.69%,203 63,Chile,“19,116,201”,0.87%,26 64,Kazakhstan,“18,776,707”,1.21%,7 65,Zambia,“18,383,955”,2.93%,25 66,Guatemala,“17,915,568”,1.90%,167 67,Ecuador,“17,643,054”,1.55%,71 68,Syria,“17,500,658”,2.52%,95 69,Netherlands,“17,134,872”,0.22%,508 70,Senegal,“16,743,927”,2.75%,87 71,Cambodia,“16,718,965”,1.41%,95 72,Chad,“16,425,864”,3.00%,13 73,Somalia,“15,893,222”,2.92%,25 74,Zimbabwe,“14,862,924”,1.48%,38 75,Guinea,“13,132,795”,2.83%,53 76,Rwanda,“12,952,218”,2.58%,525 77,Benin,“12,123,200”,2.73%,108 78,Burundi,“11,890,784”,3.12%,463 79,Tunisia,“11,818,619”,1.06%,76 80,Bolivia,“11,673,021”,1.39%,11 81,Belgium,“11,589,623”,0.44%,383 82,Haiti,“11,402,528”,1.24%,414 83,Cuba,“11,326,616”,-0.06%,106 84,South Sudan,“11,193,725”,1.19%,18 85,Dominican Republic,“10,847,910”,1.01%,225 86,Czech Republic (Czechia),“10,708,981”,0.18%,139 87,Greece,“10,423,054”,-0.48%,81 88,Jordan,“10,203,134”,1.00%,115 89,Portugal,“10,196,709”,-0.29%,111 90,Azerbaijan,“10,139,177”,0.91%,123 91,Sweden,“10,099,265”,0.63%,25 92,Honduras,“9,904,607”,1.63%,89 93,United Arab Emirates,“9,890,402”,1.23%,118 94,Hungary,“9,660,351”,-0.25%,107 95,Tajikistan,“9,537,645”,2.32%,68 96,Belarus,“9,449,323”,-0.03%,47 97,Austria,“9,006,398”,0.57%,109 98,Papua New Guinea,“8,947,024”,1.95%,20 99,Serbia,“8,737,371”,-0.40%,100 100,Israel,“8,655,535”,1.60%,400 101,Switzerland,“8,654,622”,0.74%,219 102,Togo,“8,278,724”,2.43%,152 103,Sierra Leone,“7,976,983”,2.10%,111 104,Hong Kong,“7,496,981”,0.82%,“7,140” 105,Laos,“7,275,560”,1.48%,32 106,Paraguay,“7,132,538”,1.25%,18 107,Bulgaria,“6,948,445”,-0.74%,64 108,Libya,“6,871,292”,1.38%,4 109,Lebanon,“6,825,445”,-0.44%,667 110,Nicaragua,“6,624,554”,1.21%,55 111,Kyrgyzstan,“6,524,195”,1.69%,34 112,El Salvador,“6,486,205”,0.51%,313 113,Turkmenistan,“6,031,200”,1.50%,13 114,Singapore,“5,850,342”,0.79%,“8,358” 115,Denmark,“5,792,202”,0.35%,137 116,Finland,“5,540,720”,0.15%,18 117,Congo,“5,518,087”,2.56%,16 118,Slovakia,“5,459,642”,0.05%,114 119,Norway,“5,421,241”,0.79%,15 120,Oman,“5,106,626”,2.65%,16 121,State of Palestine,“5,101,414”,2.41%,847 122,Costa Rica,“5,094,118”,0.92%,100 123,Liberia,“5,057,681”,2.44%,53 124,Ireland,“4,937,786”,1.13%,72 125,Central African Republic,“4,829,767”,1.78%,8 126,New Zealand,“4,822,233”,0.82%,18 127,Mauritania,“4,649,658”,2.74%,5 128,Panama,“4,314,767”,1.61%,58 129,Kuwait,“4,270,571”,1.51%,240 130,Croatia,“4,105,267”,-0.61%,73 131,Moldova,“4,033,963”,-0.23%,123 132,Georgia,“3,989,167”,-0.19%,57 133,Eritrea,“3,546,421”,1.41%,35 134,Uruguay,“3,473,730”,0.35%,20 135,Bosnia and Herzegovina,“3,280,819”,-0.61%,64 136,Mongolia,“3,278,290”,1.65%,2 137,Armenia,“2,963,243”,0.19%,104 138,Jamaica,“2,961,167”,0.44%,273 139,Qatar,“2,881,053”,1.73%,248 140,Albania,“2,877,797”,-0.11%,105 141,Puerto Rico,“2,860,853”,-2.47%,323 142,Lithuania,“2,722,289”,-1.35%,43 143,Namibia,“2,540,905”,1.86%,3 144,Gambia,“2,416,668”,2.94%,239 145,Botswana,“2,351,627”,2.08%,4 146,Gabon,“2,225,734”,2.45%,9 147,Lesotho,“2,142,249”,0.80%,71 148,North Macedonia,“2,083,374”,0.00%,83 149,Slovenia,“2,078,938”,0.01%,103 150,Guinea-Bissau,“1,968,001”,2.45%,70 151,Latvia,“1,886,198”,-1.08%,30 152,Bahrain,“1,701,575”,3.68%,“2,239” 153,Equatorial Guinea,“1,402,985”,3.47%,50 154,Trinidad and Tobago,“1,399,488”,0.32%,273 155,Estonia,“1,326,535”,0.07%,31 156,Timor-Leste,“1,318,445”,1.96%,89 157,Mauritius,“1,271,768”,0.17%,626 158,Cyprus,“1,207,359”,0.73%,131 159,Eswatini,“1,160,164”,1.05%,67 160,Djibouti,“988,000”,1.48%,43 161,Fiji,“896,445”,0.73%,49 162,R茅union,“895,312”,0.72%,358 163,Comoros,“869,601”,2.20%,467 164,Guyana,“786,552”,0.48%,4 165,Bhutan,“771,608”,1.12%,20 166,Solomon Islands,“686,884”,2.55%,25 167,Macao,“649,335”,1.39%,“21,645” 168,Montenegro,“628,066”,0.01%,47 169,Luxembourg,“625,978”,1.66%,242 170,Western Sahara,“597,339”,2.55%,2 171,Suriname,“586,632”,0.90%,4 172,Cabo Verde,“555,987”,1.10%,138 173,Micronesia,“548,914”,1.00%,784 174,Maldives,“540,544”,1.81%,“1,802” 175,Malta,“441,543”,0.27%,“1,380” 176,Brunei,“437,479”,0.97%,83 177,Guadeloupe,“400,124”,0.02%,237 178,Belize,“397,628”,1.86%,17 179,Bahamas,“393,244”,0.97%,39 180,Martinique,“375,265”,-0.08%,354 181,Iceland,“341,243”,0.65%,3 182,Vanuatu,“307,145”,2.42%,25 183,French Guiana,“298,682”,2.70%,4 184,Barbados,“287,375”,0.12%,668 185,New Caledonia,“285,498”,0.97%,16 186,French Polynesia,“280,908”,0.58%,77 187,Mayotte,“272,815”,2.50%,728 188,Sao Tome & Principe,“219,159”,1.91%,228 189,Samoa,“198,414”,0.67%,70 190,Saint Lucia,“183,627”,0.46%,301 191,Channel Islands,“173,863”,0.93%,915 192,Guam,“168,775”,0.89%,313 193,Cura莽ao,“164,093”,0.41%,370 194,Kiribati,“119,449”,1.57%,147 195,Grenada,“112,523”,0.46%,331 196,St. Vincent & Grenadines,“110,940”,0.32%,284 197,Aruba,“106,766”,0.43%,593 198,Tonga,“105,695”,1.15%,147 199,U.S. Virgin Islands,“104,425”,-0.15%,298 200,Seychelles,“98,347”,0.62%,214 201,Antigua and Barbuda,“97,929”,0.84%,223 202,Isle of Man,“85,033”,0.53%,149 203,Andorra,“77,265”,0.16%,164 204,Dominica,“71,986”,0.25%,96 205,Cayman Islands,“65,722”,1.19%,274 206,Bermuda,“62,278”,-0.36%,“1,246” 207,Marshall Islands,“59,190”,0.68%,329 208,Northern Mariana Islands,“57,559”,0.60%,125 209,Greenland,“56,770”,0.17%,0 210,American Samoa,“55,191”,-0.22%,276 211,Saint Kitts & Nevis,“53,199”,0.71%,205 212,Faeroe Islands,“48,863”,0.38%,35 213,Sint Maarten,“42,876”,1.15%,“1,261” 214,Monaco,“39,242”,0.71%,“26,337” 215,Turks and Caicos,“38,717”,1.38%,41 216,Saint Martin,“38,666”,1.75%,730 217,Liechtenstein,“38,128”,0.29%,238 218,San Marino,“33,931”,0.21%,566 219,Gibraltar,“33,691”,-0.03%,“3,369” 220,British Virgin Islands,“30,231”,0.67%,202 221,Caribbean Netherlands,“26,223”,0.94%,80 222,Palau,“18,094”,0.48%,39 223,Cook Islands,“17,564”,0.09%,73 224,Anguilla,“15,003”,0.90%,167 225,Tuvalu,“11,792”,1.25%,393 226,Wallis & Futuna,“11,239”,-1.69%,80 227,Nauru,“10,824”,0.63%,541 228,Saint Barthelemy,“9,877”,0.30%,470 229,Saint Helena,“6,077”,0.30%,16 230,Saint Pierre & Miquelon,“5,794”,-0.48%,25 231,Montserrat,“4,992”,0.06%,50 232,Falkland Islands,“3,480”,3.05%,0 233,Niue,“1,626”,0.68%,6 234,Tokelau,“1,357”,1.27%,136 235,Holy See,801,0.25%,“2,003”

0 人点赞