Python爬虫爬取疫情数据并可视化展示
本文主要介绍使用 Python 爬虫爬取疫情数据,并使用可视化工具展示数据的过程,适合对 Python 爬虫和数据可视化有一定基础的读者。下面是具体实现方法:
1. 数据获取
Python 爬虫获取疫情数据的方法有很多,这里以爬取丁香园的数据为例。丁香园是一家专业疫情数据网站,提供了各地区、各国家和全球的疫情数据。数据地址为 http://ncov.dxy.cn/ncovh5/view/pneumonia。
首先,我们需要使用 requests 库获取网站的源代码。获取源代码的代码如下:
import requests
url = 'http://ncov.dxy.cn/ncovh5/view/pneumonia'
response = requests.get(url)
html = response.content.decode('utf-8')
接下来,我们使用 BeautifulSoup 库解析 HTML。假设我们要爬取中国疫情数据,数据在 HTML 代码的 <script id="getAreaStat">
标签中,我们可以使用以下代码来解析该标签下的数据:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
script = soup.find('script', id='getAreaStat')
data = script.string.strip() # 获取 JavaScript 代码
得到 JavaScript 代码后,我们需要使用正则表达式来匹配数据。在 JavaScript 中,中国疫情数据的键为 "provinceName",其对应值是一个包含各个省份数据的列表。我们可以使用以下正则表达式来匹配该信息:
import re
pattern = re.compile('\[.*?\]') # 匹配一个方括号内的所有内容
result = pattern.search(data).group()
完成上面操作后,我们得到包含各个省份疫情数据的字符串。我们需要使用 json
库将其转换为字典类型:
import json
data_dict = json.loads(result)
至此,我们已经成功获取了中国各省份的疫情数据。
2. 数据处理
我们需要将获取到的数据转换为 Pandas 的 DataFrame
类型,方便进行数据处理和可视化。我们可以先定义一个空的数据框,然后循环遍历各省份的数据,将每个省份的数据添加到数据框中。
代码示例如下:
import pandas as pd
df = pd.DataFrame()
for province in data_dict:
province_df = pd.DataFrame(province['cities'])
province_df['provinceName'] = province['provinceName']
df = pd.concat([df, province_df])
至此,我们已经成功将各省份的数据转换为数据框,并添加了 "provinceName" 这一列。
接下来,我们可以进行数据清洗和处理。例如按照确诊人数排序,并提取前 10 个省份数据:
df = df.sort_values('confirmedCount', ascending=False)
top10_df = df.head(10)
3. 可视化展示
我们可以使用 Matplotlib、Seaborn、Plotly 等可视化工具来展示数据。
以下是使用 Matplotlib 和 Seaborn 来展示数据的两个示例:
示例一:使用 Matplotlib 柱状图展示前 10 省份的确诊人数
import matplotlib.pyplot as plt
plt.bar(top10_df['provinceName'], top10_df['confirmedCount'])
plt.xticks(rotation=45)
plt.title('Top 10 Provinces by Confirmed Cases')
plt.show()
示例二:使用 Seaborn 散点图展示每个省份的死亡人数与治愈人数
import seaborn as sns
sns.scatterplot(x='deadCount', y='curedCount', hue='provinceName', data=df)
plt.title('Dead Count vs. Cured Count by Province')
plt.show()
以上就是 Python 爬虫爬取疫情数据并可视化展示的完整攻略。当然,在实际应用中可能会遇到更加复杂的数据和需求,本文仅提供了一个基础的实现思路。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫爬取疫情数据并可视化展示 - Python技术站