COVID-19疫情在全世界范围内肆虐了数月,为了让人们了解当前疫情的最新情况,很多技术人员都开始使用数据可视化的手段展示疫情数据。其中一个重要的展示形式就是利用Python编程语言来制作疫情地图。这篇文章将会从多个方面对Python画疫情地图进行详细的阐述,每个方面都会有2~3个自然段。
一、安装必要的库
在使用Python绘制疫情地图之前,我们需要安装必要的库。第一步是安装pandas库用于数据操作和处理,第二步我们需要安装Basemap绘图工具包,它是Python中常用于制作地图的工具包。
!pip install pandas
!pip install basemap
二、获取数据
我们需要获取有关疫情数据的信息,然后使用Python解析数据并格式化为图形。这里我们可以通过调用COVID-19疫情实时数据API获取实时数据,也可以下载已经有的数据文件用于分析。
# 从疫情实时数据API获取数据
import pandas as pd
url = "https://api.covid19api.com/summary"
data = pd.read_json(url)
print(data)
# 下载已有疫情数据文件进行分析
data = pd.read_csv("covid19_data.csv")
print(data)
三、数据预处理
在绘制地图之前,我们需要对数据进行预处理。如果数据格式不正确或存在空值,就需要对其进行清洗或者填充。在这里,我们需要对数据进行清理,使其成为可以被地图流行工具读取的格式。
import pandas as pd
from mpl_toolkits.basemap import Basemap
# 从疫情实时数据API获取数据
url = "https://api.covid19api.com/summary"
data = pd.read_json(url)
# 将数据集中的国家和地区名统一格式
data.loc[data.Country == 'Korea, South', 'Country'] = 'South Korea'
data.loc[data.Country == 'Taiwan*', 'Country'] = 'Taiwan'
data.loc[data.Country == 'US', 'Country'] = 'United States'
# 过滤国家
countries = ['China Mainland', 'South Korea', 'Japan', 'Taiwan', 'Italy',
'France', 'Germany', 'Spain', 'United States', 'United Kingdom']
data = data[data['Country'].isin(countries)]
# 获取各个国家的疫情数据
df = pd.DataFrame(data.groupby('Country')['TotalConfirmed', 'TotalDeaths', 'TotalRecovered'].max())
df = pd.DataFrame(df.to_records())
# 将数据划分为N个范围,使用不同的颜色填充区域
bins = list(df['TotalConfirmed'].quantile([0, 0.1, 0.3, 0.5, 0.8, 0.9, 1]))
df['binned'] = pd.cut(df['TotalConfirmed'], bins)
# 设置地图的范围
lat_min = 15
lat_max = 55
lon_min = 70
lon_max = 140
四、绘制地图
接下来是制作地图的有趣部分了!我们需要使用Basemap包,用其提供的地图数据以及其他自定义设置将疫情数据绘制到地图上。
import pandas as pd
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# ……数据预处理代码省略
# 创建一个地图并在其上绘制country polyons, coastlines, and lakes
m = Basemap(projection='merc', llcrnrlat=lat_min, urcrnrlat=lat_max,
llcrnrlon=lon_min, urcrnrlon=lon_max, lat_ts=20, resolution='c')
m.drawcoastlines()
m.drawcountries()
m.drawlakes()
# Use a dictionary to assign each bin a color
colors = {
bins[-1]: 'darkred',
bins[-2]: 'red',
bins[-3]: 'orange',
bins[-4]: 'gold',
bins[-5]: 'yellow',
bins[-6]: 'greenyellow',
bins[0]: 'ivory'
}
# Plot each country's polygon with the fill color based on its binned number
for i in range(len(df)):
c = df.loc[i]['binned']
fc = colors[c.right]
country = df.loc[i]['Country']
polygons = m.readshapefile('shp/countries', country, drawbounds=True)
for polygon in polygons:
plt.fill(*zip(*polygon), color=fc)
# Create a legend
for i in range(len(bins)):
plt.bar(i, 0, color=colors[bins[i]], label=f'{int(bins[i])}-{int(bins[i+1])}')
plt.legend(loc='lower left', fontsize=8)
plt.show()
总结
Python是一个非常强大和灵活的编程语言,可以在多个领域中发挥重要作用。本文重点介绍了Python绘制疫情地图的方法和技巧,以及如何使用pandas和Basemap库对数据进行处理和可视化。这是帮助人们了解疫情数据、预测和分析趋势的有用工具。希望你能在这篇文章中获得有用的见解并能够利用Python为大众服务。
原创文章,作者:QZEYE,如若转载,请注明出处:https://www.506064.com/n/375444.html