Python 实战5:公共卫生事件对经济影响的数据分析全流程
·
公共卫生事件(如 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-2 个月内,GDP 下滑、失业率上升趋势显著;
- 不同经济指标受影响程度不同:服务业依赖度高的地区 GDP 受冲击更明显,而通货膨胀率受供应链中断影响呈现短期上升;
- 经济恢复与疫情防控节奏正相关:疫情得到控制后,GDP 和股市指数逐步回升,但失业率恢复周期更长。
2. 应用价值
- 政策制定:为政府出台经济刺激政策、失业保险保障提供数据支撑;
- 企业决策:帮助企业预判市场波动,调整生产和供应链策略;
- 风险预警:建立基于疫情数据的经济风险预警模型,提前规避潜在损失。
六、技术拓展方向
- 时间序列预测:使用 ARIMA 模型预测疫情防控常态化下的 GDP 增长趋势;
- 多因素回归分析:引入政策干预变量(如财政刺激力度),量化政策对经济恢复的影响;
- 行业细分分析:拆分制造业、服务业、旅游业等细分行业数据,针对性评估冲击程度;
- 可视化优化:用 Streamlit 搭建交互式仪表盘,支持自定义时间范围和指标查询。
通过本次实战,我们完整实现了从数据预处理到分析可视化的全流程,验证了 Python 在经济数据分析中的高效性。掌握这些方法,可快速应对各类公共事件的数据分析需求,为决策提供科学依据。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)