Python抓取国家医疗费用数据:哪个国家花得最多呢?

本文作者通过Python网络爬虫技术获取2016年各国医疗费用数据,旨在研究全球医疗支出差异。利用Requests、BeautifulSoup等工具,抓取并分析了各国每日医疗开支情况,发现很多国家的支出低于一美元,特别是亚洲和非洲地区。项目不仅展示了网络抓取和数据可视化的应用,还强调了动手实践在学习数据科学技能中的重要性。
摘要由CSDN通过智能技术生成

整个世界正被大流行困扰着,不同国家拿出了不同的应对策略,也取得了不同效果。这也是本文的脑洞来源,笔者打算研究一下各国在医疗基础设置上的开支,对几个国家的医疗费用进行数据可视化。

由于没有找到最近一年的可靠数据来源,所以这里使用的是2016年的数据。数据清楚哪个国家花得最多、哪个国家花得最少。我一直想试试在Python中网络抓取和数据可视化,这算是个不错的项目。虽然手动将数据输入Excel肯定快得多,但是这样就不会有宝贵的机会来练习一些技能了。

数据科学就是利用各种工具包来解决问题,网络抓取和正则表达式是我需要研究的两个领域。结果简短但复杂,这一项目展示了如何将三种技术结合起来解决数据科学问题。

要求

网络抓取主要分为两部分:

·        通过发出HTTP请求来获取数据

·        通过解析HTMLDOM来提取重要数据

库和工具

·        Requests能够非常简单地发送HTTP请求。

·        Pandas是一个Python包,提供快速、灵活和有表现力的数据结构。

·        Web Scraper可以帮助在不设置任何自动化浏览器的情况下抓取动态网站。

·        Beautiful Soup是一个Python库,用于从HTML和XML文件中提取数据。

·        matplotlib是一个综合的库,用于在Python中创建静态、动画和交互式可视化效果。

设置

设置非常简单,只需创建一个文件夹,并安装BeautifulSoup和Requests。此处假设已经安装了Python3.x,再根据指令来创建文件夹并安装库。

mkdir scraper
pip install beautifulsoup4
pip install requests
pip install matplotlib
pip install pandas

现在,在该文件夹中创建一个任意名称的文件。这里用的是scraping.py.,然后在文件中导入Beautiful Soup和 requests,如下所示:

import pandas as pd
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import requests

抓取的内容:国家名;人均开销。

图源:unsplash

网络抓取

现在,所有scraper设置都已准备好,应向target URL发出GET请求以获得原始HTML数据。

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

这将得出target URL的HTML代码,我们必须使用Beautiful Soup来解析HTML。

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

 

笔者用两张空表来存储国家名和每个国家24小时内的开支。可以看到,每个国家都存储在一个“项目”标签中,把所有的项目标签都存储在一张列表中。

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

 

世界上有190个国家,为每个国家的医疗开支运行一个for循环:

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

因为我想看看这些国家每天是如何花钱的,所以把这笔费用除以365。如果把给定的数据直接除以365,这可能会更容易些,但这样就没有学习的意义了。现在的“数据”看起来是这样的:

<span>{<span> country </span>: [<span> Central AfricanRepublic </span>, <span> Burundi </span>, <span> Mozambique </span>, <span> Congo, Dem. Rep. </span>, <span> Gambia, The </span>, <span> Niger </span>,<span> Madagascar </span>, <span> Ethiopia </span>, <span> Malawi </span>, <span> Mali </span>, <span> Eritrea </span>, <span> Benin </span>, <span> Chad </span>,<span> Bangladesh </span>, <span> Tanzania </span>, <span> Guinea </span>, <span> Uganda </span>, <span> Haiti </span>, <span> Togo </span>, <span> Guinea-Bissau </span>,<span> Pakistan </span>, <span> Burkina Faso </span>, <span> Nepal </span>, <span> Mauritania </span>, <span> Rwanda </span>, <span> Senegal </span>, <span> PapuaNew Guinea </span>, <span> Lao PDR </span>, <span> Tajikistan </span>, <span> Zambia </span>, <span> Afghanistan </span>, <span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值