Python新型冠状病毒表格之数据处理与可视化
- 编程知识
- 2023-06-10
- 2
在新型冠状病毒疫情肆虐的背景下,数据成为了一个非常重要的指标。本文将从数据获取、数据处理与可视化三个方面介绍如何使用Python对疫情表格进行处理和可视化展示。
一、获取数据
首先,我们需要获得最新的新型冠状病毒数据。网上有很多提供数据统计的公开网站,比如http://ncov.dxy.cn/ncovh5/view/pneumonia,它的结构是通过http请求来获取的,因此我们可以通过requests库向网站发送http请求,然后使用beautifulsoup库来解析获取到的html,找到想要的数据。
import requests from bs4 import BeautifulSoup url = 'http://ncov.dxy.cn/ncovh5/view/pneumonia' response=requests.get(url) response.encoding=response.apparent_encoding soup = BeautifulSoup(response.text,'html.parser') data = soup.find_all('script', attrs={'id': 'getAreaStat'})[0].string
在这段代码中,requests库向http://ncov.dxy.cn/ncovh5/view/pneumonia 发送请求,beautifulsoup库解析返回的html,找到id为getAreaStat的script标签,并返回这个标签的text内容,也就是json格式的疫情数据。
二、数据处理
获取到完整的疫情数据之后,我们需要对它进行处理,把它变成我们想要的格式。这里我们使用pandas来对json数据进行读取和处理。
import pandas as pd import json data = json.loads(data.replace('try { window.getAreaStat = ','')[:-14]+ '}catch(e){}') data_processed = pd.json_normalize(data)
上面的代码中,json.loads将json字符串转为python对象,.replace是将javascript的全局变量转化成空,因为我们只需要json数据。[:-14]表示从字符串截取来保留有效的json数据。pd.json_normalize可以将json数据变成表格形式,更方便地进行数据处理。
三、可视化展示
最后,我们使用matplotlib库对数据进行可视化展示。
import matplotlib.pyplot as plt import numpy as np x = data_processed[data_processed['provinceName']=='湖北']['confirmedCount'] y = data_processed[data_processed['provinceName']=='湖北']['deadCount'] z = data_processed[data_processed['provinceName']=='湖北']['curedCount'] pie_labels = ['死亡','治愈','确诊'] pie_values = [x[y.index[0]],z[y.index[0]],y[y.index[0]]] plt.subplot(1,2,1) plt.pie(pie_values, labels=pie_labels, autopct='%1.1f%%') plt.title('湖北省-新型冠状病毒数据统计') plt.subplot(1,2,2) index = np.arange(len(x)) bar_width = 0.3 opacity = 0.4 plt.bar(index, x, bar_width, alpha=opacity, color='b', label='确诊病例') plt.bar(index+bar_width, z, bar_width, alpha=opacity, color='g', label='治愈病例') plt.bar(index+bar_width+bar_width, y, bar_width, alpha=opacity, color='r', label='死亡病例') plt.xlabel('日期') plt.ylabel('数量') plt.title('湖北省-新型冠状病毒数据趋势') plt.xticks(index+bar_width, data_processed[data_processed['provinceName']=='湖北']['updateDate'],rotation=90) plt.legend() plt.tight_layout() plt.show()
在这段代码中,我们使用plt.pie和plt.bar分别画出了湖北省的疫情统计饼图和疫情趋势直方图。plt.subplot可以将多个图放在一个图像中显示,plt.pie和plt.bar分别用于饼图和直方图的绘制,plt.xticks用于将X轴的标签旋转90度,使标签不会重叠。
四、总结
本文介绍了如何使用Python对新型冠状病毒疫情数据进行获取、处理和可视化。具体而言,我们使用requests和beautifulsoup库获取数据,使用pandas库对数据进行处理,将json格式的数据转化为表格形式,最后使用matplotlib库对数据进行可视化展示。