国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何使用 Python 繪制 COVID-19 的全球擴(kuò)散圖

開發(fā) 后端 開源
用 Python 和 Pandas 可視化 COVID-19 在全球范圍內(nèi)的傳播路徑可能對(duì)這些數(shù)據(jù)的分析有所幫助。


?[[358773]]?

使用這些開源框架創(chuàng)建一個(gè)彩色地圖,顯示病毒的可能的傳播路徑。


對(duì)于一個(gè)全球旅行司空見慣的世界來(lái)說(shuō),疾病的傳播是一個(gè)真正令人擔(dān)憂的問題。一些組織會(huì)跟蹤重大的流行病(還有所有普遍的流行病),并將他們的跟蹤工作獲得的數(shù)據(jù)公開出來(lái)。不過(guò),這些原始的數(shù)據(jù)對(duì)人來(lái)說(shuō)可能很難處理,這就是為什么數(shù)據(jù)科學(xué)如此重要的原因。比如,用 Python 和 Pandas 可視化 COVID-19 在全球范圍內(nèi)的傳播路徑可能對(duì)這些數(shù)據(jù)的分析有所幫助。

最開始,當(dāng)面對(duì)如此大數(shù)量的原始數(shù)據(jù)時(shí)可能難以下手。但當(dāng)你開始處理數(shù)據(jù)之后,慢慢地就會(huì)發(fā)現(xiàn)一些處理數(shù)據(jù)的方式。下面是用于處理 COVID-19 數(shù)據(jù)的一些常見的情況:

  1. 從 GitHub 上下載 COVID-19 的國(guó)家每日傳播數(shù)據(jù),保存為一個(gè) Pandas 中的 DataFrame 對(duì)象。這時(shí)你需要使用 Python 中的 Pandas 庫(kù)。
  2. 處理并清理下載好的數(shù)據(jù),使其滿足可視化數(shù)據(jù)的輸入格式。所下載的數(shù)據(jù)的情況很好(數(shù)據(jù)規(guī)整)。這個(gè)數(shù)據(jù)有一個(gè)問題是它用國(guó)家的名字來(lái)標(biāo)識(shí)國(guó)家,但最好是使用三位數(shù)的 ISO 3 碼(國(guó)家代碼表)來(lái)標(biāo)識(shí)國(guó)家。為了生成 ISO 3 碼,可是使用??pycountry?? 這個(gè) Python 庫(kù)。生成了這些代碼之后,可以在原有的 DataFrame 上增加一列,然后用這些代碼填充進(jìn)去。
  3. 最后為了實(shí)現(xiàn)可視化,使用 Plotly 庫(kù)中的??express?? 模塊。這篇文章是使用名為choropleth 的地圖(可在 Plotly 庫(kù)中獲得)來(lái)可視化該疾病在全球的傳播。

第一步:Corona 數(shù)據(jù)

從下面這個(gè)網(wǎng)站上下載最新的 corona 數(shù)據(jù)(LCTT 譯注:2020-12-14 仍可訪問,有墻):

我們之間將這個(gè)下載好的數(shù)據(jù)載入為 Pandas 的 DataFrame。Pandas 提供了一個(gè)函數(shù), ??read_csv()??,可以直接使用 URL 讀取數(shù)據(jù),并返回一個(gè) DataFrame 對(duì)象,具體如下所示:

import pycountry

import plotly.express as px

import pandas as pd

URL_DATASET = r'https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv'

df1 = pd.read_csv(URL_DATASET)

print(df1.head(3)) # Get first 3 entries in the dataframe

print(df1.tail(3)) # Get last 3 entries in the dataframe

在 Jupyter 上的輸出截圖:


??

Jupyter screenshot

從這個(gè)輸出可以看到這個(gè) DataFrame(??df1??)包括以下幾列數(shù)據(jù):

  1. ??Date??
  2. ??Country??
  3. ??Confirmed??
  4. ??Recovered??
  5. ??Dead??

之后還可以看到 ??Date?? 這一列包含了從 1 月 22 日到 3 月 31 日的條目信息。這個(gè)數(shù)據(jù)是每天更新的,所以你會(huì)得到你當(dāng)天的值。

第二步:清理和修改 DataFrame

我們要往這個(gè) DataFrame 中增加一列數(shù)據(jù),就是那個(gè)包含了 ISO 3 編碼。可以通過(guò)以下三步完成這個(gè)任務(wù):

  1. 創(chuàng)建一個(gè)包含所有國(guó)家的列表。因?yàn)樵??df1??? 的??Country??? 列中,國(guó)家都是每個(gè)日期就重復(fù)一次。所以實(shí)際上??Country??? 列中對(duì)每個(gè)國(guó)家就會(huì)有多個(gè)條目。我使用??unique().tolist()?? 函數(shù)完成這個(gè)任務(wù)。
  2. 我使用??d_country_code?? 字典對(duì)象(初始為空),然后將其鍵設(shè)置為國(guó)家的名稱,然后它的值設(shè)置為其對(duì)應(yīng)的 ISO 3 編碼。
  3. 我使用??pycountry.countries.search_fuzzy(country)??? 為每個(gè)國(guó)家生成 ISO 3 編碼。你需要明白的是這個(gè)函數(shù)的返回值是一個(gè)??Country??? 對(duì)象的列表。我將這個(gè)函數(shù)的返回值賦給??country_data??? 對(duì)象。以這個(gè)對(duì)象的第一個(gè)元素(序號(hào)??0???)為例。這個(gè)??\??? 對(duì)象有一個(gè)??alpha_3??? 屬性。所以我使用??country_data[0].alpha_3??? 就能“獲得”第一個(gè)元素的 ISO 3 編碼。然而,在這個(gè) DataFrame 中有些國(guó)家的名稱可能沒有對(duì)應(yīng)的 ISO 3 編碼(比如有爭(zhēng)議的領(lǐng)土)。那么對(duì)這些“國(guó)家/地區(qū)”,我就用一個(gè)空白字符串來(lái)替代 ISO 3 編碼。你也可以用一個(gè)??try-except??? 代碼來(lái)替換這部分。??except??? 中的語(yǔ)句可以寫:??print(‘could not add ISO 3 code for ->', country)??。這樣就能在找不到這些“國(guó)家/地區(qū)”對(duì)應(yīng)的 ISO 3 編碼時(shí)給出一個(gè)輸出提示。實(shí)際上,你會(huì)發(fā)現(xiàn)這些“國(guó)家/地區(qū)”會(huì)在最后的輸出中用白色來(lái)表示。
  4. 在獲得了每個(gè)國(guó)家的 ISO 3 編碼(有些是空白字符串)之后,我把這些國(guó)家的名稱(作為鍵)還有國(guó)家對(duì)應(yīng)的 ISO 3 編碼(作為值)添加到之前的字典??d_country_code??? 中。可以使用 Python 中字典對(duì)象的??update()?? 方法來(lái)完成這個(gè)任務(wù)。
  5. 在創(chuàng)建好了一個(gè)包含國(guó)家名稱和對(duì)應(yīng) ISO 3 編碼的字典之后,我使用一個(gè)簡(jiǎn)單的循環(huán)將他們加入到 DataFrame 中。

第三步:使用 Plotly 可視化傳播路徑

choropleth 地圖是一個(gè)由彩色多邊形組成的地圖。它常常用來(lái)表示一個(gè)變量在空間中的變化。我們使用 Plotly 中的 ??px??? 模塊來(lái)創(chuàng)建 choropleth 圖,具體函數(shù)為:??px.choropleth??。

這個(gè)函數(shù)的所包含的參數(shù)如下:

plotly.express.choropleth(data_frame=None, lat=None, lon=None, locations=None, locationmode=None, geojson=None, featureidkey=None, color=None, hover_name=None, hover_data=None, custom_data=None, animation_frame=None, animation_group=None, category_orders={}, labels={}, color_discrete_sequence=None, color_discrete_map={}, color_continuous_scale=None, range_color=None, color_continuous_midpoint=None, projection=None, scope=None, center=None, title=None, template=None, width=None, height=None)

??choropleth()?? 這個(gè)函數(shù)還有幾點(diǎn)需要注意:

  1. ??geojson??? 是一個(gè)??geometry??? 對(duì)象(上面函數(shù)第六個(gè)參數(shù))。這個(gè)對(duì)象有點(diǎn)讓人困擾,因?yàn)樵诤瘮?shù)文檔中沒有明確地提到這個(gè)對(duì)象。你可以提供,也可以不提供??geojson??? 對(duì)象。如果你提供了??geojson??? 對(duì)象,那么這個(gè)對(duì)象就會(huì)被用來(lái)繪制地球特征,如果不提供??geojson??? 對(duì)象,那這個(gè)函數(shù)默認(rèn)就會(huì)使用一個(gè)內(nèi)建的??geometry??? 對(duì)象。(在我們的實(shí)驗(yàn)中,我們使用內(nèi)建的??geometry??? 對(duì)象,因此我們不會(huì)為??geojson?? 參數(shù)提供值)
  2. DataFrame 對(duì)象有一個(gè)??data_frame??? 屬性,在這里我們先前就提供了一個(gè)我們創(chuàng)建好的??df1??。
  3. 我們用??Confirmed??(確診數(shù))來(lái)決定每個(gè)國(guó)家多邊形的顏色。
  4. 最后,我們??Date??? 列創(chuàng)建一個(gè)??animation_frame???。這樣我們就能通過(guò)日期來(lái)劃分?jǐn)?shù)據(jù),國(guó)家的顏色會(huì)隨著??Confirmed?? 的變化而變化。

最后完整的代碼如下:

import pycountry

import plotly.express as px

import pandas as pd

# ----------- Step 1 ------------

URL_DATASET = r'https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv'

df1 = pd.read_csv(URL_DATASET)

# print(df1.head) # Uncomment to see what the dataframe is like

# ----------- Step 2 ------------

list_countries = df1['Country'].unique().tolist()

# print(list_countries) # Uncomment to see list of countries

d_country_code = {} # To hold the country names and their ISO

for country in list_countries:

try:

country_data = pycountry.countries.search_fuzzy(country)

# country_data is a list of objects of class pycountry.db.Country

# The first item ie at index 0 of list is best fit

# object of class Country have an alpha_3 attribute

country_code = country_data[0].alpha_3

d_country_code.update({country: country_code})

except:

print('could not add ISO 3 code for ->', country)

# If could not find country, make ISO code ' '

d_country_code.update({country: ' '})


# print(d_country_code) # Uncomment to check dictionary


# create a new column iso_alpha in the df

# and fill it with appropriate iso 3 code

for k, v in d_country_code.items():

df1.loc[(df1.Country == k), 'iso_alpha'] = v


# print(df1.head) # Uncomment to confirm that ISO codes added

# ----------- Step 3 ------------

fig = px.choropleth(data_frame = df1,

locations= "iso_alpha",

color= "Confirmed", # value in column 'Confirmed' determines color

hover_name= "Country",

color_continuous_scale= 'RdYlGn', # color scale red, yellow green

animation_frame= "Date")


fig.show()

Map

你可以從這里下載并運(yùn)行??完整代碼??。

最后,這里還有一些關(guān)于 Plotly 繪制 choropleth 圖的不錯(cuò)的資源。


責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2021-02-01 16:49:52

可穿戴設(shè)備COVID-19遠(yuǎn)程監(jiān)控

2021-04-15 11:19:44

物聯(lián)網(wǎng)智能環(huán)境IoT

2021-01-04 12:03:04

人工智能AI物聯(lián)網(wǎng)

2022-11-01 14:49:49

2021-01-10 15:25:39

區(qū)塊鏈疫情區(qū)塊鏈技術(shù)

2021-03-18 13:28:28

COVID-19惡意軟件網(wǎng)絡(luò)攻擊

2022-06-10 10:24:02

JavaScriptCOVID-19前端

2021-09-23 10:06:01

物聯(lián)網(wǎng)IOT

2021-05-13 05:29:42

網(wǎng)絡(luò)犯罪英國(guó)COVID-19

2020-07-05 23:13:19

COVID-19CIO首席執(zhí)行官

2020-06-23 10:27:18

增強(qiáng)現(xiàn)實(shí)ARCOVID-19

2020-07-23 11:26:06

網(wǎng)絡(luò)安全數(shù)據(jù)技術(shù)

2020-06-17 15:08:48

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2020-06-10 10:18:32

IT新冠病毒

2022-08-30 11:59:35

暗網(wǎng)網(wǎng)絡(luò)安全數(shù)據(jù)泄露

2020-06-28 08:43:14

CEOIT戰(zhàn)略COVID-19

2021-02-18 21:55:41

網(wǎng)絡(luò)安全黑客網(wǎng)絡(luò)攻擊

2021-11-12 11:22:09

云計(jì)算云計(jì)算環(huán)境云應(yīng)用

2021-06-10 14:31:54

物聯(lián)網(wǎng)OT

2021-09-28 10:21:18

物聯(lián)網(wǎng)惡意軟件IoT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产宾馆实践打屁股91| 91在线视频| 亚洲www啪成人一区二区| 亚洲国产精品人人做人人爽| 欧美日韩黄色一级片| 影院欧美亚洲| 2019中文字幕全在线观看| 四虎亚洲精品| 欧美在线观看一区| 日韩精品综合在线| 欧美中文一区| 日韩免费电影网站| 菠萝菠萝蜜在线视频免费观看| 色先锋资源久久综合| 欧美黑人孕妇孕交| 国产成+人+日韩+欧美+亚洲| 五月天综合婷婷| 久久精品免费观看| 蜜桃网站在线观看| 国产一区二区在线观看免费| 成人高清dvd| 久久蜜桃av一区二区天堂| 翔田千里亚洲一二三区| 麻豆国产欧美日韩综合精品二区| 日本电影一区二区三区| 红桃视频亚洲| 99热一区二区三区| 日韩av不卡一区二区| 国产在线青青草| 亚洲视频一二区| 黄色国产网站在线播放| 椎名由奈av一区二区三区| 中文在线www| 一本久道中文字幕精品亚洲嫩| 国产原创视频在线观看| 日韩av在线一区二区| 一区二区中文字幕在线观看| 国产日本欧美视频| 一本一本久久a久久综合精品| 精品国产乱码久久久久软件| 麻豆久久婷婷| 国产四区在线观看| av网站一区二区三区| 亚洲欧洲闷骚av少妇影院| 色伊人久久综合中文字幕| 免费黄色网页| 中文字幕日韩免费视频| 久久野战av| 国产精品va在线| 丝袜诱惑亚洲看片| 国产三级av在线| 精品污污网站免费看| 欧美激情午夜| 国产911网站| 在线视频观看一区| 三级在线视频| 中文国产亚洲喷潮| 在线播放一区| 成人在色线视频在线观看免费大全| 91久久久免费一区二区| 久久综合九色综合久| 久久成人精品视频| 美女视频黄久久| 完全免费av在线播放| 欧美国产乱视频| 国产激情一区二区三区桃花岛亚洲| 精品福利视频导航大全| 97视频色精品| 国产精品欧美一级免费| 国产精品美女午夜爽爽| 国产精品久久久久av福利动漫| 激情欧美一区| 日本国产在线| 91亚洲精品一区二区| 中文字幕亚洲不卡| 久久99精品国产自在现线| 日本a视频在线观看| 久久青草欧美一区二区三区| 天堂av在线网| 女同性恋一区二区| 亚洲欧美在线第一页| 蜜臀av性久久久久蜜臀aⅴ四虎| 成人免费黄色网页| 91免费精品国偷自产在线| 欧美日韩激情视频| 久久精品高清| 精品久久av| 91精品国产综合久久香蕉最新版| 亚洲电影在线免费观看| gogo在线高清视频| 欧美美女直播网站| 97天天综合网| 国产91色在线|免| 宅男噜噜噜66国产精品免费| 亚洲男女性事视频| av在线小说| www.亚洲一区| 中文亚洲字幕| 国产极品美女高潮无套久久久| 亚洲激情网址| 欧美日韩在线播放一区二区| 欧美三级蜜桃2在线观看| 国产探花一区| 最新av在线| 欧美日韩国产精品一卡| 亚洲乱亚洲乱妇无码| 国产精品羞羞答答xxdd| 国内激情视频在线观看| 日韩电影在线观看永久视频免费网站| 国产成人精品在线看| 米奇精品关键词| 丰满少妇在线观看| 国产精品露脸av在线| 欧美日韩国产综合新一区| 国产一区二区三区四区五区入口 | 国产亚洲美女精品久久久| 夜夜精品视频一区二区| av午夜精品一区二区三区| 亚洲二区视频| 国产精品调教| 免费在线看污片| 欧美一区二区在线视频| 96成人在线视频| 欧美日韩亚洲综合一区二区三区| 91社区在线播放| 国产精品观看| 国产尤物久久久| 在线免费av资源| 青青草超碰在线| 高清av影院| 男人揉女人奶房视频60分| 日本精品一区二区三区高清 久久| 97国产suv精品一区二区62| 日韩精品中文字| 日韩亚洲电影在线| 色美美综合视频| 欧美性感一类影片在线播放| 91免费国产在线| 精品剧情v国产在线观看| www.国产91| 久久久久久国产免费| 国产精品一区二区无线| 黄色在线播放网站| 在线亚洲人成| 国产午夜在线视频| 久久伊人中文字幕| 欧美一区二区三区婷婷| 免费高清一区二区三区| 亚洲老头同性xxxxx| 国产乱码精品一区二区三区忘忧草| 爱情岛亚洲播放路线| 亚洲欧美久久久久一区二区三区| 欧美精品自拍偷拍| 免费欧美在线| 九色porny丨国产首页在线| 国产a级片免费看| 在线播放日韩专区| 久久综合狠狠综合| 日韩美脚连裤袜丝袜在线| 国内在线高清免费视频| 国产日韩综合一区二区性色av| 欧美日韩在线一区| 国产视频一区三区| 日韩不卡免费高清视频| 欧美激情成人网| 日产日韩在线亚洲欧美| 一本色道久久综合狠狠躁的推荐| 亚洲一级影院| 最新日韩精品| av免费网站观看| 国产精品入口免费视频一| 欧美性猛交xxxx久久久| 久久久xxx| 国产精品久久久久久av公交车 | 欧美日韩国产一二| 亚洲国产精品资源| 日本一区二区三级电影在线观看| 日韩高清欧美| 欧美韩日亚洲| 91n.com在线观看| 亚洲综合日韩在线| 亚洲深夜福利在线| 亚洲一二三四在线观看| 美女视频黄频大全不卡视频在线播放| 精品久久亚洲| 国产粉嫩一区二区三区在线观看| 日本一本草久p| 国产精品扒开腿爽爽爽视频| 精品国一区二区三区| 亚洲国产电影在线观看| 亚洲性视频h| 在线视频亚洲欧美中文| 在线观看完整版免费| 激情五月开心婷婷| 精品国产乱码久久久久久蜜柚| 欧美巨大黑人极品精男| 欧美亚洲综合在线| 欧美极品另类videosde| 日本亚洲免费观看| 国产va免费精品观看精品视频|