最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數(shù)據(jù)可視化繪制世界人口地圖

 更新時間:2022年06月25日 15:36:29   作者:Z_Y_H  
這篇文章主要為大家介紹了python數(shù)據(jù)可視化繪制世界人口地圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

數(shù)據(jù)來源:population_data.json,

先看一下數(shù)據(jù)長啥樣

[
  {
    "Country Name": "Arab World",
    "Country Code": "ARB",
    "Year": "1960",
    "Value": "96388069"
  },
  {
    "Country Name": "Arab World",
    "Country Code": "ARB",
    "Year": "1961",
    "Value": "98882541.4"
  },
省略。。。。
]

'''這個文件實際上就是一個很長的Python列表,其中每個元素都是一個包含四個鍵的字典:
國家名、國別碼、年份以及表示人口數(shù)量的值。

我們只關(guān)心每個國家2010年的人口數(shù)量,因此我們首先編寫一個打印這些信息的程序:'''

import json
#將數(shù)據(jù)加載到一個列表中
filename= 'population_data.json'
with open(filename) as f :
    pop_data = json.load(f)
#打印每個國家2010年的人口數(shù)量
for pop_dic in pop_data :
     if pop_dic["Year"] == '2010' :
         country_name= pop_dic['Country Name']
         population =int(float(pop_dic['Value']) )#population_data.json中的每個鍵和值都是字符串。為處理這些人口數(shù)據(jù),我們需要將表示人口數(shù)量的字符串轉(zhuǎn)換為數(shù)字值,為此我們使用函數(shù)int():
         print(country_name + ":" + str(population))
rab World:357868000
Caribbean small states:6880000
East Asia & Pacific (all income levels):2201536674
East Asia & Pacific (developing only):1961558757
Euro area:331766000
Europe & Central Asia (all income levels):890424544
Europe & Central Asia (developing only):405204000

獲取兩個字母的國別碼

'''制作地圖前,還需要解決數(shù)據(jù)存在的最后一個問題。Pygal中的地圖制作工具要求數(shù)據(jù)為特定的格式:用國別碼表示國家,以及用數(shù)字表示人口數(shù)量。處理地理政治數(shù)據(jù)時,經(jīng)常需要用到幾個標準化國別碼集。

population_data.json中包含的是三個字母的國別碼,但Pygal使用兩個字母的國別碼。我們需要想辦法根據(jù)國家名獲取兩個字母的國別碼。

Pygal使用的國別碼存儲在模塊i18n(internationalization的縮寫)中。

字典COUNTRIES包含的鍵和值分別為兩個字母的國別碼和國家名。

要查看這些國別碼,可從模塊i18n中導(dǎo)入這個字典,并打印其鍵和值:'''

from pygal_maps_world.i18n import COUNTRIES
for country_code in sorted(COUNTRIES.keys()):
    print(country_code, COUNTRIES[country_code])
ad Andorra
ae United Arab Emirates
af Afghanistan
al Albania

為獲取國別碼,我們將編寫一個函數(shù),它在COUNTRIES中查找并返回國別碼。

我們將這個函數(shù)放在一個名為country_codes的模塊中,以便能夠在可視化程序中導(dǎo)入它:

from pygal_maps_world.i18n import COUNTRIES
def get_country_code(country_name):
    #根據(jù)指定的國家,返回Pygal使用的兩個字母的國別碼
    for code,name in COUNTRIES.items():
        if name == country_name :
            return code
    # 如果沒有找到指定的國家,就返回None
    return None
#打印每個國家2010年的人口數(shù)量
for pop_dic in pop_data :
     if pop_dic["Year"] == '2010' :
         country_name= pop_dic['Country Name']
         population =int(float(pop_dic['Value']) )#population_data.json中的每個鍵和值都是字符串。為處理這些人口數(shù)據(jù),我們需要將表示人口數(shù)量的字符串轉(zhuǎn)換為數(shù)字值,為此我們使用函數(shù)int():
         code =  get_country_code(country_name)
         if code :
             print(code + ":" + str(population))
         else:
            print('error - ' + ":" + str(population))
error - :357868000
error - :6880000
error - :2201536674
error - :1961558757
error - :331766000

導(dǎo)致顯示錯誤消息的原因有兩個。首先,并非所有人口數(shù)量對應(yīng)的都是國家,有些人口數(shù)量對應(yīng)的是地區(qū)(阿拉伯世界)和經(jīng)濟類群(所有收入水平)。

其次,有些統(tǒng)計數(shù)據(jù)使用了不同的完整國家名(如Yemen, Rep.,而不是Yemen)。當前,我們將忽略導(dǎo)致錯誤的數(shù)據(jù),看看根據(jù)成功恢復(fù)了的數(shù)據(jù)制作出的地圖是什么樣的。

制作世界地圖

import pygal_maps_world.maps#創(chuàng)建了一個Worldmap實例,并設(shè)置了該地圖的的title屬性
wm = pygal_maps_world.maps.World()
wm.title = 'North, Central, and South America'
'''
方法add(),它接受一個標簽和一個列表,其中后者包含我們要突出的國家的國別碼。每次調(diào)用add()都將為指定的國家
選擇一種新顏色,并在圖表左邊顯示該顏色和指定的標簽。我們要以同一種顏色顯示整個北美地區(qū),因此第一次調(diào)用add()
時,在傳遞給它的列表中包含'ca'、'mx'和'us',以同時突出加拿大、墨西哥和美國。接下來,對中美和南美國家做同樣
的處理。
'''
wm.add('North America', ['ca', 'mx', 'us'])
wm.add('Central America', ['bz', 'cr', 'gt', 'hn', 'ni', 'pa', 'sv'])
wm.add('South America', ['ar', 'bo', 'br', 'cl', 'co', 'ec', 'gf',
'gy', 'pe', 'py', 'sr', 'uy', 've'])
'''
方法render_to_file()創(chuàng)建一個包含該圖表的.svg文件,你可以在瀏覽器中打開它。輸出是一幅以不同顏色突出北美、
中美和南美的地圖
'''
wm.render_to_file('americas.svg')

繪制完整的世界人口地圖

'''要呈現(xiàn)其他國家的人口數(shù)量,需要將前面處理的數(shù)據(jù)轉(zhuǎn)換為Pygal要求的字典格式:鍵為兩個字母的國別碼,值為人口數(shù)量。

為此,在world_population.py中添加如下代碼:

import  json

#將數(shù)據(jù)加載到一個列表中
filename= 'population_data.json'
with open(filename) as f :
    pop_data = json.load(f)
def get_country_code(country_name):
    #根據(jù)指定的國家,返回Pygal使用的兩個字母的國別碼
    for code,name in COUNTRIES.items():
        if name == country_name :
            return code
    # 如果沒有找到指定的國家,就返回None
    return None
#創(chuàng)建一個包含人口數(shù)量是字典
cc_populations = {}
#打印每個國家2010年的人口數(shù)量
for pop_dic in pop_data :
     if pop_dic["Year"] == '2010' :
         country_name= pop_dic['Country Name']
         population =int(float(pop_dic['Value']) )#population_data.json中的每個鍵和值都是字符串。為處理這些人口數(shù)據(jù),我們需要將表示人口數(shù)量的字符串轉(zhuǎn)換為數(shù)字值,為此我們使用函數(shù)int():
         code =  get_country_code(country_name)
         if code :
            cc_populations[code] =  population
import pygal_maps_world.maps#創(chuàng)建了一個Worldmap實例,并設(shè)置了該地圖的的title屬性
wm = pygal_maps_world.maps.World()
wm.title = 'world population in 2010, by country'
wm.add('2010', cc_populations)
wm.render_to_file('world_population.svg')

根據(jù)人口數(shù)量將國家分組

import json
#將數(shù)據(jù)加載到一個列表中
filename= 'population_data.json'
with open(filename) as f :
    pop_data = json.load(f)
def get_country_code(country_name):
    #根據(jù)指定的國家,返回Pygal使用的兩個字母的國別碼
    for code,name in COUNTRIES.items():
        if name == country_name :
            return code
    # 如果沒有找到指定的國家,就返回None
    return None
#創(chuàng)建一個包含人口數(shù)量是字典
cc_populations = {}
#打印每個國家2010年的人口數(shù)量
for pop_dic in pop_data :
     if pop_dic["Year"] == '2010' :
         country_name= pop_dic['Country Name']
         population =int(float(pop_dic['Value']) )#population_data.json中的每個鍵和值都是字符串。為處理這些人口數(shù)據(jù),我們需要將表示人口數(shù)量的字符串轉(zhuǎn)換為數(shù)字值,為此我們使用函數(shù)int():
         code =  get_country_code(country_name)
         if code :
            cc_populations[code] =  population
###根據(jù)人口數(shù)量將國家分3組   
cc_pop_1,cc_pop_2,cc_pop_3 = {},{},{}
for cc,pop in cc_populations.items():
    if pop < 10000000:
        cc_pop_1[cc] = pop
    elif pop < 1000000000:
        cc_pop_2[cc] = pop
    else:
        cc_pop_3[cc] = pop
import pygal_maps_world.maps#創(chuàng)建了一個Worldmap實例,并設(shè)置了該地圖的的title屬性
wm = pygal_maps_world.maps.World()
wm.title = 'world population in 2010, by country'
wm.add('0-10m', cc_pop_1)
wm.add('10m-1bn', cc_pop_2)
wm.add('> 1bn', cc_pop_3)
wm.render_to_file('world_population.svg')

根據(jù)Pygal設(shè)置世界地圖的樣式

在這個地圖中,根據(jù)人口將國家分組雖然很有效,但默認的顏色設(shè)置很難看。例如,在這里,Pygal選擇了鮮艷的粉色和綠色基色。

下面使用Pygal樣式設(shè)置指令來調(diào)整顏色。我們也讓Pygal使用一種基色,但將指定該基色,并讓三個分組的顏色差別更大

###根據(jù)Pygal設(shè)置世界地圖的樣式
'''
在這個地圖中,根據(jù)人口將國家分組雖然很有效,但默認的顏色設(shè)置很難看。例如,在這里,Pygal選擇了鮮艷的粉色
和綠色基色。下面使用Pygal樣式設(shè)置指令來調(diào)整顏色。我們也讓Pygal使用一種基色,但將指定該基色,并讓三個分組
的顏色差別更大
'''
###根據(jù)人口數(shù)量將國家分組
import json
#將數(shù)據(jù)加載到一個列表中
filename= 'population_data.json'
with open(filename) as f :
    pop_data = json.load(f)
def get_country_code(country_name):
    #根據(jù)指定的國家,返回Pygal使用的兩個字母的國別碼
    for code,name in COUNTRIES.items():
        if name == country_name :
            return code
    # 如果沒有找到指定的國家,就返回None
    return None
#創(chuàng)建一個包含人口數(shù)量是字典
cc_populations = {}
#打印每個國家2010年的人口數(shù)量
for pop_dic in pop_data :
     if pop_dic["Year"] == '2010' :
         country_name= pop_dic['Country Name']
         population =int(float(pop_dic['Value']) )#population_data.json中的每個鍵和值都是字符串。為處理這些人口數(shù)據(jù),我們需要將表示人口數(shù)量的字符串轉(zhuǎn)換為數(shù)字值,為此我們使用函數(shù)int():
         code =  get_country_code(country_name)
         if code :
            cc_populations[code] =  population
###根據(jù)人口數(shù)量將國家分3組   
cc_pop_1,cc_pop_2,cc_pop_3 = {},{},{}
for cc,pop in cc_populations.items():
    if pop < 10000000:
        cc_pop_1[cc] = pop
    elif pop < 1000000000:
        cc_pop_2[cc] = pop
    else:
        cc_pop_3[cc] = pop
import pygal_maps_world.maps#創(chuàng)建了一個Worldmap實例,并設(shè)置了該地圖的的title屬性
from pygal.style import RotateStyle
from pygal.style import LightColorizedStyle#加亮顏色主題
wm_style = RotateStyle('#336699', base_style= LightColorizedStyle)
wm = pygal_maps_world.maps.World(style = wm_style)
wm.title = 'world population in 2010, by country'
wm.add('2010', cc_populations)
wm.add('0-10m', cc_pop_1)
wm.add('10m-1bn', cc_pop_2)
wm.add('> 1bn', cc_pop_3)
wm.render_to_file('world_population.svg')

以上就是python數(shù)據(jù)可視化繪制世界人口地圖的詳細內(nèi)容,更多關(guān)于python繪制世界人口地圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python中文分詞+詞頻統(tǒng)計的實現(xiàn)步驟

    python中文分詞+詞頻統(tǒng)計的實現(xiàn)步驟

    詞頻統(tǒng)計就是輸入一段句子或者一篇文章,然后統(tǒng)計句子中每個單詞出現(xiàn)的次數(shù),下面這篇文章主要給大家介紹了關(guān)于python中文分詞+詞頻統(tǒng)計的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python-docx 實現(xiàn)整體修改或者部分修改文字的大小和字體類型

    Python-docx 實現(xiàn)整體修改或者部分修改文字的大小和字體類型

    這篇文章主要介紹了Python-docx 實現(xiàn)整體修改或者部分修改文字的大小和字體類型,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python 3利用Dlib 19.7實現(xiàn)攝像頭人臉檢測特征點標定

    python 3利用Dlib 19.7實現(xiàn)攝像頭人臉檢測特征點標定

    這篇文章主要為大家詳細介紹了python 3利用Dlib 19.7實現(xiàn)攝像頭人臉檢測特征點標定,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python實現(xiàn)對excel文件列表值進行統(tǒng)計的方法

    Python實現(xiàn)對excel文件列表值進行統(tǒng)計的方法

    這篇文章主要介紹了Python實現(xiàn)對excel文件列表值進行統(tǒng)計的方法,涉及Python基于win32com組件操作表格文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • python可視化分析的實現(xiàn)(matplotlib、seaborn、ggplot2)

    python可視化分析的實現(xiàn)(matplotlib、seaborn、ggplot2)

    這篇文章主要介紹了python可視化分析的實現(xiàn)(matplotlib、seaborn、ggplot2),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python動態(tài)規(guī)劃之零錢兌換問題詳解

    Python動態(tài)規(guī)劃之零錢兌換問題詳解

    這篇文章主要介紹了Python動態(tài)規(guī)劃之零錢兌換問題詳解,這次我們就按照套路模板,再來剖析一道經(jīng)典動規(guī)題目零錢兌換,計算并返回可以湊成總金額所需的 最少的硬幣個數(shù) 如果沒有任何一種硬幣組合能組成總金額,返回-1,需要的朋友可以參考下
    2023-11-11
  • 使用PyTorch實現(xiàn)去噪擴散模型的完整代碼

    使用PyTorch實現(xiàn)去噪擴散模型的完整代碼

    在本文中,我們將深入研究DDPM的復(fù)雜性,涵蓋其訓練過程,包括正向和逆向過程,并探索如何執(zhí)行采樣,在整個探索過程中,我們將使用PyTorch從頭開始構(gòu)建DDPM,并完成其完整的訓練,需要的朋友可以參考下
    2024-01-01
  • 詳解python如何通過numpy數(shù)組處理圖像

    詳解python如何通過numpy數(shù)組處理圖像

    Numpy?是?Python?中科學計算的核心庫,NumPy?這個詞來源于?Numerical?和?Python?兩個單詞。它提供了一個高性能的多維數(shù)組對象,以及大量的庫函數(shù)和操作,可以幫助程序員輕松地進行數(shù)值計算,廣泛應(yīng)用于機器學習模型、圖像處理和計算機圖形學、數(shù)學任務(wù)等領(lǐng)域
    2022-03-03
  • pandas中DataFrame多層索引的實現(xiàn)

    pandas中DataFrame多層索引的實現(xiàn)

    本文主要介紹了pandas中DataFrame多層索引的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • pygame游戲之旅 添加碰撞效果的方法

    pygame游戲之旅 添加碰撞效果的方法

    這篇文章主要為大家詳細介紹了pygame游戲之旅的第7篇,教大家如何添加碰撞的效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論

邯郸市| 平罗县| 老河口市| 嵊州市| 永嘉县| 宜宾市| 阿坝| 灯塔市| 隆回县| 松阳县| 青川县| 惠水县| 潜山县| 海口市| 青河县| 灵川县| 乐亭县| 泰宁县| 兖州市| 政和县| 南乐县| 南通市| 和林格尔县| 昌图县| 麻城市| 安义县| 吴旗县| 兰州市| 崇义县| 什邡市| 武宁县| 锦屏县| 陵水| 广灵县| 武宣县| 敦煌市| 隆子县| 呼伦贝尔市| 固安县| 萨嘎县| 克什克腾旗|