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/zh-hk/n/375444.html