python web可视化_在Python中使用Web爬取可视化医疗保健预算

python web可视化

由于世界正面临有史以来最严重的大流行,我只是在研究各国如何在医疗基础设施上花费。 因此,我想到对几个国家的医疗费用进行数据可视化。 我的搜索结果是这篇文章 ,其中包含来自许多国家的2016年数据。我没有找到最新年份的真实来源。 因此,我们将继续2016年。

python web可视化_在Python中使用Web爬取可视化医疗保健预算_第1张图片

我知道数据非常清楚,谁花最少的钱,谁花最多的钱,但是我想进一步利用这个表。 我一直在寻找机会用Python练习网络抓取和可视化,因此认为这是一个很棒的短期项目。

尽管几乎可以肯定,在Excel中手动输入数据会更快,但是我将没有宝贵的机会练习一些技能! 数据科学是关于使用多种工具来解决问题的,Web抓取和正则表达式是我需要研究的两个领域(更不用说绘制图总是很有趣)。 结果是一个非常简短但完整的项目,展示了我们如何将这三种技术结合起来解决数据科学问题。

要求

通常,网页抓取分为两个部分:

通过发出HTTP请求获取数据通过解析HTML DOM提取重要数据

库和工具

  • 美丽的汤   是一个Python库,用于从HTML和XML文件中提取数据。
  • 通过请求,您可以非常轻松地发送HTTP请求。 Web Scraper将帮助我们无需设置任何自动化浏览器即可抓取动态网站。
  • 大熊猫   是一个Python软件包,可提供快速,灵活和富有表现力的数据结构
  • matplotlib   是用于在Python中创建静态,动画和交互式可视化效果的综合库。

建立

我们的设置非常简单。 只需创建一个文件夹并安装Beautiful Soup和请求即可。 要创建文件夹并安装库,请在给定命令下方键入。 我假设您已经安装了Python3.x。

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

现在,使用您喜欢的任何名称在该文件夹中创建一个文件。 我正在使用scraping.py。 然后,只需将“美丽的汤和请求”导入文件,如下所示。

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

我们要抓的东西

国家名称人均费用

网页抓取

现在,由于我们具备了准备刮板的所有要素,因此我们应该对目标URL进行GET请求以获取原始HTML数据。

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

这将为您提供该目标URLHTML代码。

现在,您必须使用BeautifulSoup解析HTML。

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

我声明了两个空列表,用于存储24小时内每个国家的国家名称和费用。

python web可视化_在Python中使用Web爬取可视化医疗保健预算_第2张图片

如您所见,每个国家/地区都存储在“商品”标签中。 我们将所有项目标签存储在列表中。

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(“\n”,””))
  expense.append(round(float(Countries[i+ 1 ].find_all(“div”,{“ class ”: None })[ 2 ].text.replace(“\n”,””).replace(‘,’,’’)))/ 365 )
 
Data = {‘country’: country,’expense’: expense}

我将支出除以365,因为我想看看这些国家每天的支出情况。 显然,如果我将给定数据直接除以365,这可能会更容易,但是学习毫无意义吗?

现在,这就是“ 数据”的样子

{'country' : [ 'Central African Republic' , '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' , 'Papua New 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' , 'Sierra Leone' , 'Bhutan' , 'Zimbabwe' , 'Angola' , 'Sao Tome and Principe' , 'Solomon Islands' , 'Vanuatu' , 'Indonesia' , 'Vietnam' , 'Philippines' , 'Egypt, Arab Rep.' , 'Uzbekistan' , 'Mongolia' , 'Ukraine' , 'Sudan' , 'Iraq' , 'Sri Lanka' , 'Cabo Verde' , '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' , 'North Macedonia' , 'Colombia' , 'Suriname' , 'Armenia' , 'Malaysia' , 'Botswana' , 'Micronesia, Fed. Sts.' , 'China' , 'Namibia' , 'Dominican Republic' , 'Iran, Islamic Rep.' , 'Dominica' , 'Turkmenistan' , 'South Africa' , 'Bosnia and Herzegovina' , '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' , 'Czech Republic' , 'United Arab Emirates' , 'Uruguay' , 'Greece' , 'Venezuela, RB' , 'Cyprus' , 'Palau' , 'Portugal' , 'Qatar' , 'Slovenia' , 'Bahamas, The' , 'Korea, Rep.' , 'Malta' , 'Spain' , 'Singapore' , 'Italy' , 'Israel' , 'Monaco' , 'San Marino' , '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 ]}

数据框

甚至在开始绘制图形之前,我们都必须使用熊猫准备一个DataFrame。 现在,如果您不知道什么是DataFrame,则DataFrame是具有标签轴(行和列)的二维大小可变的,可能是异构的表格数据结构。 我知道你做错了吗? 因此,只需阅读本文 ,这将对您有很大帮助。

创建一个非常简单明了。

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

可视化

该项目表明了数据科学,因为大部分时间都花在收集和格式化数据上。 但是,既然我们有了一个干净的数据集,就可以进行一些绘图! 我们可以同时使用matplotlib和seaborn来可视化数据。

如果我们不太在乎美观,可以使用内置的数据框图方法快速显示结果:

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

我知道这些国家的名字很小。 但是您可以下载并分析它。 现在,您可以看到的主要事情是,许多国家/地区的支出方式不到一美元,这真是令人震惊。 大多数国家来自亚洲和非洲。 我认为世卫组织应更多地关注这些国家,而不是西方的发达国家。

这不一定是值得出版的情节,但这是包装一个小型项目的好方法。

结论

学习技术技能的最有效方法是边做边学。 虽然整个项目本可以通过手动将值插入Excel来完成,但我还是希望能有一个长远的眼光,并考虑在这里学到的技能将如何对将来有所帮助。 学习的过程比最终结果更重要,在这个项目中,我们能够看到如何使用3个关键技能来进行数据科学:

Web爬网:使用BeautifulSoup检索在线数据:解析我们的数据以提取信息以进行可视化:展示我们所有的辛勤工作

现在,走到那里开始您自己的项目,并记住:不必为了改变世界而改变它的价值。

随时发表评论,问我任何事情。 您可以在Twitter上关注我。 感谢您的阅读,请按赞按钮!

其他资源

有清单! 此时,您应该编写第一个Web抓取工具以从任何网站收集数据都应该感到很舒服。 以下是一些其他资源,在您的网络抓取过程中可能会有所帮助:

  • 网络抓取代理服务列表
  • Selenium和Python入门
  • BeautifulSoup文档
  • Scrapingdog文档
  • 网页抓取指南

翻译自: https://hackernoon.com/visualizing-healthcare-budget-using-web-scraping-in-python-725v3vg8

python web可视化

你可能感兴趣的:(可视化,python,java,大数据,编程语言)