You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于COVID-19数据集绘制三类可视化图表的方法

COVID-19数据集可视化解决方案

假设你的DataFrame命名为df,以下是针对三项需求的具体实现代码,基于pandas和matplotlib完成:

1. 百万人口病例数/死亡数Top10国家饼图

先筛选各国最新的累计数据(排除大洲汇总行),再提取Top10数据绘制双饼图:

import pandas as pd
import matplotlib.pyplot as plt

# 提取各国最新的百万人口累计数据
country_latest = df[df['continent'].notna()].groupby('location').last()

# 获取Top10国家的百万人口病例数与死亡数
top10_cases = country_latest['total_cases_per_million'].sort_values(ascending=False).head(10)
top10_deaths = country_latest['total_deaths_per_million'].sort_values(ascending=False).head(10)

# 绘制双饼图
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))

# 病例数饼图
ax1.pie(top10_cases, labels=top10_cases.index, autopct='%1.1f%%', startangle=90)
ax1.set_title('Top10国家百万人口累计病例数')

# 死亡数饼图
ax2.pie(top10_deaths, labels=top10_deaths.index, autopct='%1.1f%%', startangle=90)
ax2.set_title('Top10国家百万人口累计死亡数')

plt.tight_layout()
plt.show()

2. 各大洲病例率与死亡率堆叠图

按大洲分组汇总最新数据,绘制堆叠柱状图展示病例率与死亡率的对比:

# 提取各大洲最新的百万人口病例率与死亡率
continent_latest = df[df['continent'].notna()].groupby('continent').last()[['total_cases_per_million', 'total_deaths_per_million']]

# 绘制堆叠柱状图
continent_latest.plot(kind='bar', stacked=True, figsize=(12, 6))
plt.title('各大洲百万人口病例率与死亡率堆叠图')
plt.xlabel('大洲')
plt.ylabel('每百万人口数值')
plt.legend(['病例率', '死亡率'])
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

3. 2020年3月全球各国每日新冠病例数折线图

筛选2020年3月的数据,提取新增病例较多的Top10国家绘制多折线图(避免折线过多导致混乱):

# 转换日期格式(若未转换)
df['date'] = pd.to_datetime(df['date'])

# 筛选2020年3月的国家数据(排除大洲汇总)
march_data = df[(df['date'].between('2020-03-01', '2020-03-31')) & (df['continent'].notna())]

# 选取3月累计新增病例Top10的国家
top_march_countries = march_data.groupby('location')['new_cases'].sum().sort_values(ascending=False).head(10).index

# 提取目标国家数据并绘图
plt.figure(figsize=(14, 7))
for country in top_march_countries:
    country_daily = march_data[march_data['location'] == country]
    plt.plot(country_daily['date'], country_daily['new_cases'], label=country)

plt.title('2020年3月各国每日新增新冠病例数')
plt.xlabel('日期')
plt.ylabel('每日新增病例数')
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者Tolga Dönmez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:10:20