自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python抓取國(guó)家醫(yī)療費(fèi)用數(shù)據(jù):哪個(gè)國(guó)家花得最多、哪個(gè)國(guó)家花得最少?

開(kāi)發(fā) 后端
數(shù)據(jù)科學(xué)就是利用各種工具包來(lái)解決問(wèn)題,網(wǎng)絡(luò)抓取和正則表達(dá)式是我需要研究的兩個(gè)領(lǐng)域。結(jié)果簡(jiǎn)短但復(fù)雜,這一項(xiàng)目展示了如何將三種技術(shù)結(jié)合起來(lái)解決數(shù)據(jù)科學(xué)問(wèn)題。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。

整個(gè)世界正被大流行困擾著,不同國(guó)家拿出了不同的應(yīng)對(duì)策略,也取得了不同效果。這也是本文的腦洞來(lái)源,筆者打算研究一下各國(guó)在醫(yī)療基礎(chǔ)設(shè)置上的開(kāi)支,對(duì)幾個(gè)國(guó)家的醫(yī)療費(fèi)用進(jìn)行數(shù)據(jù)可視化。

由于沒(méi)有找到最近一年的可靠數(shù)據(jù)來(lái)源,所以這里使用的是2016年的數(shù)據(jù)。數(shù)據(jù)清楚哪個(gè)國(guó)家花得最多、哪個(gè)國(guó)家花得最少。我一直想試試在Python中網(wǎng)絡(luò)抓取和數(shù)據(jù)可視化,這算是個(gè)不錯(cuò)的項(xiàng)目。雖然手動(dòng)將數(shù)據(jù)輸入Excel肯定快得多,但是這樣就不會(huì)有寶貴的機(jī)會(huì)來(lái)練習(xí)一些技能了。

數(shù)據(jù)科學(xué)就是利用各種工具包來(lái)解決問(wèn)題,網(wǎng)絡(luò)抓取和正則表達(dá)式是我需要研究的兩個(gè)領(lǐng)域。結(jié)果簡(jiǎn)短但復(fù)雜,這一項(xiàng)目展示了如何將三種技術(shù)結(jié)合起來(lái)解決數(shù)據(jù)科學(xué)問(wèn)題。

[[331939]]

要求

網(wǎng)絡(luò)抓取主要分為兩部分:

  • 通過(guò)發(fā)出HTTP請(qǐng)求來(lái)獲取數(shù)據(jù)
  • 通過(guò)解析HTMLDOM來(lái)提取重要數(shù)據(jù)

庫(kù)和工具

  • Requests能夠非常簡(jiǎn)單地發(fā)送HTTP請(qǐng)求。
  • Pandas是一個(gè)Python包,提供快速、靈活和有表現(xiàn)力的數(shù)據(jù)結(jié)構(gòu)。
  • Web Scraper可以幫助在不設(shè)置任何自動(dòng)化瀏覽器的情況下抓取動(dòng)態(tài)網(wǎng)站。
  • Beautiful Soup是一個(gè)Python庫(kù),用于從HTML和XML文件中提取數(shù)據(jù)。
  • matplotlib是一個(gè)綜合的庫(kù),用于在Python中創(chuàng)建靜態(tài)、動(dòng)畫(huà)和交互式可視化效果。

設(shè)置

設(shè)置非常簡(jiǎn)單,只需創(chuàng)建一個(gè)文件夾,并安裝BeautifulSoup和Requests。此處假設(shè)已經(jīng)安裝了Python3.x,再根據(jù)指令來(lái)創(chuàng)建文件夾并安裝庫(kù)。

  1. mkdir scraper 
  2. pip install beautifulsoup4 
  3. pip install requests 
  4. pip install matplotlib 
  5. pip install pandas 

現(xiàn)在,在該文件夾中創(chuàng)建一個(gè)任意名稱(chēng)的文件。這里用的是scraping.py.,然后在文件中導(dǎo)入Beautiful Soup和 requests,如下所示:

  1. import pandas as pd 
  2. from bs4 import BeautifulSoup 
  3. import matplotlib.pyplot as plt 
  4. import requests 

抓取的內(nèi)容:國(guó)家名;人均開(kāi)銷(xiāo)。

網(wǎng)絡(luò)抓取

現(xiàn)在,所有scraper設(shè)置都已準(zhǔn)備好,應(yīng)向target URL發(fā)出GET請(qǐng)求以獲得原始HTML數(shù)據(jù)。

  1. r =requests.get( https://api.scrapingdog.com/scrape?api_key=<YOUR_API_KEY>&url=https://data.worldbank.org/indicator/SH.XPD.CHEX.PC.CD?most_recent_value_desc=false&dynamic=true ).text 

這將得出target URL的HTML代碼,我們必須使用Beautiful Soup來(lái)解析HTML。

  1. soup = BeautifulSoup(r,’html.parser’) 
  2. country=list() 
  3. expense=list() 

筆者用兩張空表來(lái)存儲(chǔ)國(guó)家名和每個(gè)國(guó)家24小時(shí)內(nèi)的開(kāi)支。可以看到,每個(gè)國(guó)家都存儲(chǔ)在一個(gè)“項(xiàng)目”標(biāo)簽中,把所有的項(xiàng)目標(biāo)簽都存儲(chǔ)在一張列表中。

  1. try: 
  2.  Countries=soup.find_all(“div”,{“class”:”item”}) 
  3. except: 
  4.  Countries=None 

世界上有190個(gè)國(guó)家,為每個(gè)國(guó)家的醫(yī)療開(kāi)支運(yùn)行一個(gè)for循環(huán):

  1. for i in range(0,190): 
  2. country.append(Countries[i+1].find_all(“div”,{“class”:None})[0].text.replace(“”,””)) 
  3. expense.append(round(float(Countries[i+1].find_all(“div”,{“class”:None})[2].text.replace(“”,””).replace(‘,’,’’)))/365) 
  4. Data = {‘country’:country,’expense’: expense} 

因?yàn)槲蚁肟纯催@些國(guó)家每天是如何花錢(qián)的,所以把這筆費(fèi)用除以365。如果把給定的數(shù)據(jù)直接除以365,這可能會(huì)更容易些,但這樣就沒(méi)有學(xué)習(xí)的意義了?,F(xiàn)在的“數(shù)據(jù)”看起來(lái)是這樣的:

  1. { country : [ Central AfricanRepublic ,  Burundi ,  Mozambique ,  Congo, Dem. Rep. ,  Gambia, The ,  Niger , Madagascar ,  Ethiopia ,  Malawi ,  Mali ,  Eritrea ,  Benin ,  Chad , Bangladesh ,  Tanzania ,  Guinea ,  Uganda ,  Haiti ,  Togo ,  Guinea-Bissau , Pakistan ,  Burkina Faso ,  Nepal ,  Mauritania ,  Rwanda ,  Senegal ,  PapuaNew Guinea ,  Lao PDR ,  Tajikistan ,  Zambia ,  Afghanistan ,  Comoros , Myanmar ,  India ,  Cameroon ,  Syrian Arab Republic ,  Kenya ,  Ghana ,"Cote d Ivoire",  Liberia ,  Djibouti ,  Congo, Rep. ,  Yemen, Rep. , Kyrgyz Republic ,  Cambodia ,  Nigeria ,  Timor-Leste ,  Lesotho ,  SierraLeone ,  Bhutan ,  Zimbabwe ,  Angola ,  Sao Tome and Principe ,  SolomonIslands ,  Vanuatu ,  Indonesia ,  Vietnam ,  Philippines ,  Egypt, Arab Rep. , Uzbekistan ,  Mongolia ,  Ukraine ,  Sudan ,  Iraq ,  Sri Lanka ,  CaboVerde ,  Moldova ,  Morocco ,  Fiji ,  Kiribati ,  Nicaragua ,  Guyana , Honduras ,  Tonga ,  Bolivia ,  Gabon ,  Eswatini ,  Thailand ,  Jordan , Samoa ,  Guatemala ,  St. Vincent and the Grenadines ,  Tunisia ,  Algeria , Kazakhstan ,  Azerbaijan ,  Albania ,  Equatorial Guinea ,  El Salvador , Jamaica ,  Belize ,  Georgia ,  Libya ,  Peru ,  Belarus ,  Paraguay ,  NorthMacedonia ,  Colombia ,  Suriname ,  Armenia ,  Malaysia ,  Botswana , Micronesia, Fed. Sts. ,  China ,  Namibia ,  Dominican Republic ,  Iran,Islamic Rep. ,  Dominica ,  Turkmenistan ,  South Africa ,  Bosnia andHerzegovina ,  Mexico ,  Turkey ,  Russian Federation ,  Romania ,  St. Lucia , Serbia ,  Ecuador ,  Tuvalu ,  Grenada ,  Montenegro ,  Mauritius , Seychelles ,  Bulgaria ,  Antigua and Barbuda ,  Brunei Darussalam ,  Oman , Lebanon ,  Poland ,  Marshall Islands ,  Latvia ,  Croatia ,  Costa Rica , St. Kitts and Nevis ,  Hungary ,  Argentina ,  Cuba ,  Lithuania ,  Nauru , Brazil ,  Panama ,  Maldives ,  Trinidad and Tobago ,  Kuwait ,  Bahrain , Saudi Arabia ,  Barbados ,  Slovak Republic ,  Estonia ,  Chile ,  CzechRepublic ,  United Arab Emirates ,  Uruguay ,  Greece ,  Venezuela, RB , Cyprus ,  Palau ,  Portugal ,  Qatar ,  Slovenia ,  Bahamas, The ,  Korea,Rep. ,  Malta ,  Spain ,  Singapore ,  Italy ,  Israel ,  Monaco ,  SanMarino ,  New Zealand ,  Andorra ,  United Kingdom ,  Finland ,  Belgium , Japan ,  France ,  Canada ,  Austria ,  Germany ,  Netherlands ,  Ireland , Australia ,  Iceland ,  Denmark ,  Sweden ,  Luxembourg ,  Norway , Switzerland ,  United States ,  World ],  expense : [0.043835616438356165,0.049315068493150684, 0.052054794520547946, 0.057534246575342465,0.057534246575342465, 0.06301369863013699, 0.06575342465753424,0.07671232876712329, 0.0821917808219178, 0.0821917808219178,0.0821917808219178, 0.0821917808219178, 0.08767123287671233,0.09315068493150686, 0.09863013698630137, 0.10136986301369863,0.10410958904109589, 0.10410958904109589, 0.10684931506849316,0.10684931506849316, 0.1095890410958904, 0.11232876712328767,0.1232876712328767, 0.12876712328767123, 0.13150684931506848,0.14520547945205478, 0.1506849315068493, 0.1506849315068493, 0.15342465753424658,0.15616438356164383, 0.15616438356164383, 0.16164383561643836,0.16986301369863013, 0.1726027397260274, 0.17534246575342466,0.18082191780821918, 0.18082191780821918, 0.1863013698630137,0.1863013698630137, 0.1863013698630137, 0.1917808219178082, 0.1917808219178082,0.19726027397260273, 0.2, 0.2136986301369863, 0.21643835616438356,0.2191780821917808, 0.2356164383561644, 0.2356164383561644, 0.2493150684931507,0.25753424657534246, 0.2602739726027397, 0.2876712328767123, 0.29041095890410956,0.3013698630136986, 0.30684931506849317, 0.336986301369863,0.35342465753424657, 0.3589041095890411, 0.3698630136986301,0.3863013698630137, 0.3863013698630137, 0.41643835616438357,0.4191780821917808, 0.4191780821917808, 0.43561643835616437, 0.4684931506849315,0.4684931506849315, 0.4931506849315068, 0.5150684931506849, 0.5150684931506849,0.5260273972602739, 0.547945205479452, 0.5561643835616439, 0.5835616438356165,0.6027397260273972, 0.6054794520547945, 0.6082191780821918, 0.6136986301369863,0.6219178082191781, 0.6602739726027397, 0.684931506849315, 0.7013698630136986,0.7123287671232876, 0.7178082191780822, 0.7342465753424657, 0.7452054794520548,0.7698630136986301, 0.8054794520547945, 0.810958904109589, 0.8328767123287671,0.8438356164383561, 0.8575342465753425, 0.8657534246575342, 0.8712328767123287,0.8958904109589041, 0.8986301369863013, 0.9315068493150684, 0.9753424657534246,0.9835616438356164, 0.9917808219178083, 1.0410958904109588, 1.0602739726027397,1.0904109589041096, 1.104109589041096, 1.1342465753424658, 1.1369863013698631,1.1479452054794521, 1.158904109589041, 1.1726027397260275, 1.2164383561643837,1.2657534246575342, 1.284931506849315, 1.284931506849315, 1.3041095890410959,1.3424657534246576, 1.3534246575342466, 1.3835616438356164, 1.389041095890411,1.4136986301369863, 1.4575342465753425, 1.515068493150685, 1.6356164383561644,1.6767123287671233, 1.7068493150684931, 1.7287671232876711, 1.7753424657534247,1.8136986301369864, 2.2164383561643834, 2.3315068493150686, 2.3945205479452056,2.421917808219178, 2.4356164383561643, 2.5506849315068494, 2.5835616438356164,2.6164383561643834, 2.66027397260274, 2.706849315068493, 2.7726027397260276,2.7835616438356166, 2.852054794520548, 2.871232876712329, 2.915068493150685,2.926027397260274, 3.010958904109589, 3.1424657534246574, 3.1890410958904107,3.23013698630137, 3.2465753424657535, 3.263013698630137, 3.621917808219178,3.6246575342465754, 3.778082191780822, 4.13972602739726, 4.323287671232877,4.476712328767123, 4.586301369863014, 4.934246575342466, 5.005479452054795,5.024657534246575, 5.027397260273973, 5.6, 6.3780821917808215,6.5479452054794525, 6.745205479452054, 7.504109589041096, 7.772602739726027,8.054794520547945, 8.254794520547945, 10.26027397260274, 10.506849315068493,10.843835616438357, 11.27945205479452, 11.367123287671232, 11.597260273972603,11.67945205479452, 12.213698630136987, 12.843835616438357, 12.915068493150685,12.991780821917809, 13.038356164383561, 13.704109589041096, 13.873972602739727,15.24931506849315, 15.646575342465754, 17.18082191780822, 20.487671232876714,26.947945205479453, 27.041095890410958, 2.8109589041095893]} 

數(shù)據(jù)幀

繪制圖表之前,必須使用Pandas準(zhǔn)備一個(gè)數(shù)據(jù)幀。首先我們得明確DataFrame是什么:

DataFrame是一個(gè)二維大小可變的、潛在的異構(gòu)表格式數(shù)據(jù)結(jié)構(gòu),帶有標(biāo)記的軸(行和列)。創(chuàng)造一個(gè)數(shù)據(jù)幀非常簡(jiǎn)單直接:

  1. df = pd.DataFrame(Data,columns=[‘country’, ‘expense’]) 

可視化

我們大部分時(shí)間都花在收集和格式化數(shù)據(jù)上,現(xiàn)在到了做圖的時(shí)候啦,可以使用matplotlib和seaborn 來(lái)可視化數(shù)據(jù)。如果不太在意美觀,可以使用內(nèi)置的數(shù)據(jù)幀繪圖方法快速顯示結(jié)果:

  1. df.plot(kind = ‘bar’, x=’country’, y=’expense’) 
  2. plt.show() 

現(xiàn)在,結(jié)論出來(lái)了:許多國(guó)家每天的支出都低于一美元。這些國(guó)家中大多數(shù)都位于亞洲和非洲,看來(lái)世界衛(wèi)生組織應(yīng)更關(guān)注這些國(guó)家。

[[331940]]

圖源:unsplash

這不一定是一個(gè)值得出版的圖表,卻是結(jié)束一個(gè)小項(xiàng)目的最佳方式。

學(xué)習(xí)技術(shù)技能最有效的方法就是動(dòng)手實(shí)踐。學(xué)習(xí)的過(guò)程比最終的結(jié)果更重要,在這個(gè)項(xiàng)目中,展示了如何使用3項(xiàng)關(guān)鍵的數(shù)據(jù)科學(xué)技能:

  • 網(wǎng)頁(yè)抓?。簷z索聯(lián)網(wǎng)數(shù)據(jù)
  • BeautifulSoup:分析數(shù)據(jù)以提取信息
  • 可視化:展示所有的努力

 

比起技術(shù)更重要的是,找到自己感興趣的項(xiàng)目,不一定是能夠改變世界的事物才具有價(jià)值,從生活中探索有趣的項(xiàng)目吧。

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2013-12-03 10:51:43

2018-04-10 13:34:55

Python C 語(yǔ)言PHP

2010-11-24 15:05:09

2010-03-02 11:08:10

數(shù)據(jù)中心 培訓(xùn)

2018-01-09 13:53:40

2025-02-13 10:19:24

2017-04-27 23:54:36

2015-12-21 16:48:31

FusionCube一華為

2016-12-19 17:46:32

大數(shù)據(jù)IDC

2021-05-15 06:21:05

APP反詐騙熱點(diǎn)推薦

2013-10-15 17:06:19

大數(shù)據(jù)

2018-04-13 10:00:01

大數(shù)據(jù)

2013-01-25 11:20:06

2016-12-29 14:45:28

中國(guó)電信

2024-07-31 15:44:06

2012-05-29 09:30:10

Windows Pho

2014-12-03 17:51:05

2020-05-15 19:59:31

網(wǎng)絡(luò)安全醫(yī)療技術(shù)

2021-01-12 16:28:41

5G運(yùn)營(yíng)商韓國(guó)

2012-02-06 10:09:56

數(shù)據(jù)中心云計(jì)算
點(diǎn)贊
收藏

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