通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

如何用python做疫情地图

如何用python做疫情地图

要制作疫情地图,可以使用Python中的数据可视化库,如Matplotlib、Plotly和Geopandas。首先,获取并清洗疫情数据,然后使用这些工具进行数据可视化。使用Geopandas进行地理数据处理、使用Matplotlib进行基本绘图、使用Plotly制作交互式地图。 下面我们将详细描述如何一步一步实现这一目标。

一、获取疫情数据

为了制作疫情地图,首先需要获取疫情数据。可以从以下几种常见的数据源获取疫情数据:

  1. Johns Hopkins University (JHU) CSSE COVID-19 Data Repository:这是一个非常常见的数据源,提供全球范围内的COVID-19数据。
  2. Our World in Data (OWID):提供详细的COVID-19统计数据,包括确诊病例、死亡病例、疫苗接种等。

我们以JHU CSSE COVID-19 Data Repository为例,介绍如何获取和预处理数据。

1.1、下载疫情数据

首先,我们可以通过以下代码下载JHU提供的COVID-19数据:

import pandas as pd

下载全球确诊病例数据

url_confirmed = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"

confirmed_df = pd.read_csv(url_confirmed)

下载全球死亡病例数据

url_deaths = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv"

deaths_df = pd.read_csv(url_deaths)

下载全球康复病例数据

url_recovered = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv"

recovered_df = pd.read_csv(url_recovered)

1.2、数据预处理

下载数据后,需要对数据进行预处理,以便后续的可视化操作。可以通过以下步骤进行数据预处理:

# 转换日期列

confirmed_df = confirmed_df.melt(id_vars=["Province/State", "Country/Region", "Lat", "Long"],

var_name="Date", value_name="Confirmed")

deaths_df = deaths_df.melt(id_vars=["Province/State", "Country/Region", "Lat", "Long"],

var_name="Date", value_name="Deaths")

recovered_df = recovered_df.melt(id_vars=["Province/State", "Country/Region", "Lat", "Long"],

var_name="Date", value_name="Recovered")

合并数据

merged_df = confirmed_df.merge(deaths_df, on=["Province/State", "Country/Region", "Lat", "Long", "Date"])

merged_df = merged_df.merge(recovered_df, on=["Province/State", "Country/Region", "Lat", "Long", "Date"])

转换日期格式

merged_df["Date"] = pd.to_datetime(merged_df["Date"])

二、使用Geopandas进行地理数据处理

2.1、安装Geopandas

在使用Geopandas之前,需要先安装该库。可以通过以下命令安装Geopandas:

pip install geopandas

2.2、加载地理数据

Geopandas提供了很多地理数据集,可以直接加载并使用。例如,可以加载世界国家的地理边界数据:

import geopandas as gpd

加载世界地理边界数据

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

2.3、合并疫情数据与地理数据

将处理好的疫情数据与地理数据合并在一起,以便进行地图绘制:

# 聚合每个国家的疫情数据

latest_data = merged_df[merged_df["Date"] == merged_df["Date"].max()]

country_data = latest_data.groupby("Country/Region").sum().reset_index()

将疫情数据与地理数据合并

geo_data = world.merge(country_data, how="left", left_on="name", right_on="Country/Region")

三、使用Matplotlib绘制疫情地图

3.1、安装Matplotlib

在使用Matplotlib之前,需要先安装该库。可以通过以下命令安装Matplotlib:

pip install matplotlib

3.2、绘制基本疫情地图

使用Matplotlib绘制基本的疫情地图:

import matplotlib.pyplot as plt

设置绘图尺寸

fig, ax = plt.subplots(1, 1, figsize=(15, 10))

绘制世界地图

world.boundary.plot(ax=ax, linewidth=1)

绘制疫情数据

geo_data.plot(column='Confirmed', ax=ax, legend=True,

legend_kwds={'label': "Confirmed Cases by Country",

'orientation': "horizontal"})

设置标题

plt.title("COVID-19 Confirmed Cases Map")

plt.show()

3.3、优化地图展示

可以通过调整颜色、添加注释等方式,优化地图的展示效果:

import matplotlib.colors as colors

设置颜色映射

cmap = plt.get_cmap('Reds')

norm = colors.LogNorm(vmin=1, vmax=geo_data['Confirmed'].max())

绘制优化后的疫情地图

fig, ax = plt.subplots(1, 1, figsize=(15, 10))

world.boundary.plot(ax=ax, linewidth=1)

geo_data.plot(column='Confirmed', ax=ax, legend=True,

cmap=cmap, norm=norm,

legend_kwds={'label': "Confirmed Cases by Country",

'orientation': "horizontal"})

添加标题和注释

plt.title("COVID-19 Confirmed Cases Map (Log Scale)")

plt.show()

四、使用Plotly制作交互式地图

4.1、安装Plotly

在使用Plotly之前,需要先安装该库。可以通过以下命令安装Plotly:

pip install plotly

4.2、绘制交互式疫情地图

使用Plotly绘制交互式的疫情地图:

import plotly.express as px

创建交互式疫情地图

fig = px.choropleth(geo_data, locations="Country/Region",

locationmode="country names",

color="Confirmed",

hover_name="Country/Region",

color_continuous_scale="Reds",

title="COVID-19 Confirmed Cases Map")

显示地图

fig.show()

4.3、添加时间轴

可以通过添加时间轴,使地图展示不同时间点的疫情情况:

# 创建带时间轴的交互式疫情地图

fig = px.choropleth(merged_df, locations="Country/Region",

locationmode="country names",

color="Confirmed",

hover_name="Country/Region",

animation_frame="Date",

color_continuous_scale="Reds",

title="COVID-19 Confirmed Cases Map Over Time")

显示地图

fig.show()

五、总结

通过以上步骤,我们详细描述了如何使用Python制作疫情地图。首先获取并预处理疫情数据,然后使用Geopandas进行地理数据处理,接着使用Matplotlib进行基本绘图,最后使用Plotly制作交互式地图。通过这些步骤,可以直观地展示疫情在不同国家和地区的分布情况,帮助我们更好地了解和分析疫情数据。

制作疫情地图不仅可以帮助我们了解疫情的全球分布情况,还可以为疫情防控和决策提供有力的支持。希望本文的介绍能够帮助您掌握使用Python制作疫情地图的方法和技巧。

相关问答FAQs:

如何使用Python获取疫情数据?
您可以通过访问公共API或者下载CSV格式的数据文件来获取疫情数据。例如,Johns Hopkins University提供了全球疫情数据的API,您可以使用requests库来获取这些数据并将其转换为Pandas DataFrame,以便后续处理和可视化。

使用哪些Python库来绘制疫情地图?
绘制疫情地图时,常用的Python库包括FoliumMatplotlibGeopandasPlotlyFolium非常适合创建交互式地图,而Geopandas则可以处理地理数据并与Matplotlib结合使用来生成静态地图。

如何处理和清洗疫情数据以便绘图?
在绘图之前,您可能需要清洗和处理数据。这通常包括去除缺失值、转换数据类型、以及根据需要进行数据聚合。使用Pandas库的dropna()groupby()pivot_table()等函数可以帮助您有效地整理数据,使其适合可视化。

相关文章