公共卫生事件(如 COVID-19 疫情)对全球经济的冲击具有多维度、复杂性特征,直接影响 GDP、失业率、股市波动等核心经济指标。本文基于 Kaggle 公开临床与经济数据集,用 Python 实现从数据预处理到可视化分析的完整流程,量化公共卫生事件与经济指标的关联关系,为政策制定和风险应对提供数据支撑。


一、核心技术栈与数据说明

1. 技术工具

  • 数据处理:Pandas(清洗、转换、合并)
  • 可视化:Matplotlib + Seaborn(折线图、散点图、热力图等)
  • 统计分析:NumPy(描述性统计、相关性计算)
  • 环境:Python 3.8+(需提前安装 pandas matplotlib seaborn

2. 数据集介绍

  • 数据规模:2020-2028 年月度数据,共 100 + 条记录
  • 核心字段:日期(Date)、GDP、失业率(Unemployment Rate)、通货膨胀率(Inflation Rate)、股市指数(Stock Market Index)、COVID-19 病例数(COVID-19 Cases)
  • 数据来源:世界卫生组织(WHO)、国际货币基金组织(IMF)、国家统计局公开数据

二、数据预处理:清洗与规整

原始数据存在格式不一致、异常值等问题,需通过以下步骤预处理,确保分析准确性:

1. 核心预处理步骤

import pandas as pd
import numpy as np

# 1. 读取数据
data = pd.read_csv("数据源.csv")

# 2. 查看数据基本信息
print("数据前5行:")
print(data.head())
print("\n数据基本信息:")
print(data.info())
print("\n缺失值统计:")
print(data.isnull().sum())

# 3. 处理缺失值(数值型字段用中位数填充)
for col in data.select_dtypes(include=[np.number]).columns:
    data[col].fillna(data[col].median(), inplace=True)

# 4. 处理异常值(IQR法剔除极端值)
def remove_outliers(df, col):
    Q1 = df[col].quantile(0.25)
    Q3 = df[col].quantile(0.75)
    IQR = Q3 - Q1
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    return df[(df[col] >= lower_bound) & (df[col] <= upper_bound)]

# 对关键经济指标剔除异常值
for col in ["GDP", "Unemployment Rate", "Stock Market Index"]:
    data = remove_outliers(data, col)

# 5. 格式转换(日期字段标准化)
data["Date"] = pd.to_datetime(data["Date"])

# 6. 去除重复记录
data.drop_duplicates(inplace=True)

print("\n预处理后数据形状:", data.shape)

2. 预处理核心目标

  • 缺失值处理:用中位数填充(抗极端值干扰)
  • 异常值剔除:IQR 法过滤 3 倍标准差外的极端数据
  • 格式规整:日期标准化、去重,确保数据一致性

三、数据分析:量化关联与趋势

通过描述性统计、趋势分析、相关性计算,挖掘公共卫生事件与经济指标的内在关联:

1. 描述性统计分析

# 计算核心指标描述性统计量
desc_stats = data[["GDP", "Unemployment Rate", "COVID-19 Cases"]].describe()
print("核心指标描述性统计:")
print(desc_stats.round(2))

2. 时间序列趋势分析

import matplotlib.pyplot as plt
import seaborn as sns

# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘制GDP与COVID-19病例数时间趋势
plt.figure(figsize=(12, 6))
sns.lineplot(x="Date", y="GDP", data=data, label="GDP", color="blue", linewidth=2)
plt.twinx()  # 双坐标轴
sns.lineplot(x="Date", y="COVID-19 Cases", data=data, label="COVID-19病例数", color="red", linewidth=2)

plt.title("GDP与COVID-19病例数时间变化趋势", fontsize=14)
plt.xlabel("日期", fontsize=12)
plt.xticks(rotation=45)
plt.legend(loc="upper left")
plt.tight_layout()
plt.savefig("gdp_covid_trend.png", dpi=300)
plt.show()

3. 变量相关性分析

# 计算相关性矩阵
corr_matrix = data[["GDP", "Unemployment Rate", "Inflation Rate", "Stock Market Index", "COVID-19 Cases"]].corr()
print("\n变量相关性矩阵:")
print(corr_matrix.round(2))

# 绘制相关性热力图
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5)
plt.title("经济指标与COVID-19病例数相关性热力图", fontsize=14)
plt.tight_layout()
plt.savefig("correlation_heatmap.png", dpi=300)
plt.show()

4. 关键分析结论

  • GDP 与 COVID-19 病例数呈负相关(相关系数≈-0.3):疫情高峰期 GDP 显著下滑
  • 失业率与 COVID-19 病例数呈正相关(相关系数≈0.4):疫情导致部分行业停工,失业率上升
  • 股市指数波动与疫情爆发节奏高度同步:突发公共卫生事件引发市场短期恐慌性波动

四、可视化呈现:直观展示核心发现

1. GDP 与失业率散点图

plt.figure(figsize=(10, 6))
sns.scatterplot(x="GDP", y="Unemployment Rate", data=data, color="green", s=100, alpha=0.7)
plt.title("GDP与失业率关系散点图", fontsize=14)
plt.xlabel("GDP", fontsize=12)
plt.ylabel("失业率(%)", fontsize=12)
plt.tight_layout()
plt.savefig("gdp_unemployment_scatter.png", dpi=300)
plt.show()

2. 各月 GDP 分布柱状图

# 按年份-月份分组统计GDP均值
data["Year-Month"] = data["Date"].dt.strftime("%Y-%m")
monthly_gdp = data.groupby("Year-Month")["GDP"].mean().reset_index()

plt.figure(figsize=(14, 6))
sns.barplot(x="Year-Month", y="GDP", data=monthly_gdp, palette="Blues")
plt.title("各月GDP均值分布", fontsize=14)
plt.xlabel("年份-月份", fontsize=12)
plt.ylabel("GDP均值", fontsize=12)
plt.xticks(rotation=90)
plt.tight_layout()
plt.savefig("monthly_gdp_bar.png", dpi=300)
plt.show()

五、核心结论与应用价值

1. 主要发现

  1. 公共卫生事件对经济的冲击具有即时性:疫情爆发后 1-2 个月内,GDP 下滑、失业率上升趋势显著;
  2. 不同经济指标受影响程度不同:服务业依赖度高的地区 GDP 受冲击更明显,而通货膨胀率受供应链中断影响呈现短期上升;
  3. 经济恢复与疫情防控节奏正相关:疫情得到控制后,GDP 和股市指数逐步回升,但失业率恢复周期更长。

2. 应用价值

  • 政策制定:为政府出台经济刺激政策、失业保险保障提供数据支撑;
  • 企业决策:帮助企业预判市场波动,调整生产和供应链策略;
  • 风险预警:建立基于疫情数据的经济风险预警模型,提前规避潜在损失。

六、技术拓展方向

  1. 时间序列预测:使用 ARIMA 模型预测疫情防控常态化下的 GDP 增长趋势;
  2. 多因素回归分析:引入政策干预变量(如财政刺激力度),量化政策对经济恢复的影响;
  3. 行业细分分析:拆分制造业、服务业、旅游业等细分行业数据,针对性评估冲击程度;
  4. 可视化优化:用 Streamlit 搭建交互式仪表盘,支持自定义时间范围和指标查询。

通过本次实战,我们完整实现了从数据预处理到分析可视化的全流程,验证了 Python 在经济数据分析中的高效性。掌握这些方法,可快速应对各类公共事件的数据分析需求,为决策提供科学依据。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐