Python 实战5:公共卫生事件对经济影响的数据分析全流程

Python 实战5:公共卫生事件对经济影响的数据分析全流程 公共卫生事件如 COVID-19 疫情对全球经济的冲击具有多维度、复杂性特征直接影响 GDP、失业率、股市波动等核心经济指标。本文基于 Kaggle 公开临床与经济数据集用 Python 实现从数据预处理到可视化分析的完整流程量化公共卫生事件与经济指标的关联关系为政策制定和风险应对提供数据支撑。一、核心技术栈与数据说明1. 技术工具数据处理Pandas清洗、转换、合并可视化Matplotlib Seaborn折线图、散点图、热力图等统计分析NumPy描述性统计、相关性计算环境Python 3.8需提前安装pandas matplotlib seaborn2. 数据集介绍数据规模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(), inplaceTrue) # 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(inplaceTrue) 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(xDate, yGDP, datadata, labelGDP, colorblue, linewidth2) plt.twinx() # 双坐标轴 sns.lineplot(xDate, yCOVID-19 Cases, datadata, labelCOVID-19病例数, colorred, linewidth2) plt.title(GDP与COVID-19病例数时间变化趋势, fontsize14) plt.xlabel(日期, fontsize12) plt.xticks(rotation45) plt.legend(locupper left) plt.tight_layout() plt.savefig(gdp_covid_trend.png, dpi300) 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, annotTrue, cmapcoolwarm, fmt.2f, linewidths0.5) plt.title(经济指标与COVID-19病例数相关性热力图, fontsize14) plt.tight_layout() plt.savefig(correlation_heatmap.png, dpi300) plt.show()4. 关键分析结论GDP 与 COVID-19 病例数呈负相关相关系数≈-0.3疫情高峰期 GDP 显著下滑失业率与 COVID-19 病例数呈正相关相关系数≈0.4疫情导致部分行业停工失业率上升股市指数波动与疫情爆发节奏高度同步突发公共卫生事件引发市场短期恐慌性波动四、可视化呈现直观展示核心发现1. GDP 与失业率散点图plt.figure(figsize(10, 6)) sns.scatterplot(xGDP, yUnemployment Rate, datadata, colorgreen, s100, alpha0.7) plt.title(GDP与失业率关系散点图, fontsize14) plt.xlabel(GDP, fontsize12) plt.ylabel(失业率%, fontsize12) plt.tight_layout() plt.savefig(gdp_unemployment_scatter.png, dpi300) 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(xYear-Month, yGDP, datamonthly_gdp, paletteBlues) plt.title(各月GDP均值分布, fontsize14) plt.xlabel(年份-月份, fontsize12) plt.ylabel(GDP均值, fontsize12) plt.xticks(rotation90) plt.tight_layout() plt.savefig(monthly_gdp_bar.png, dpi300) plt.show()五、核心结论与应用价值1. 主要发现公共卫生事件对经济的冲击具有即时性疫情爆发后 1-2 个月内GDP 下滑、失业率上升趋势显著不同经济指标受影响程度不同服务业依赖度高的地区 GDP 受冲击更明显而通货膨胀率受供应链中断影响呈现短期上升经济恢复与疫情防控节奏正相关疫情得到控制后GDP 和股市指数逐步回升但失业率恢复周期更长。2. 应用价值政策制定为政府出台经济刺激政策、失业保险保障提供数据支撑企业决策帮助企业预判市场波动调整生产和供应链策略风险预警建立基于疫情数据的经济风险预警模型提前规避潜在损失。六、技术拓展方向时间序列预测使用 ARIMA 模型预测疫情防控常态化下的 GDP 增长趋势多因素回归分析引入政策干预变量如财政刺激力度量化政策对经济恢复的影响行业细分分析拆分制造业、服务业、旅游业等细分行业数据针对性评估冲击程度可视化优化用 Streamlit 搭建交互式仪表盘支持自定义时间范围和指标查询。通过本次实战我们完整实现了从数据预处理到分析可视化的全流程验证了 Python 在经济数据分析中的高效性。掌握这些方法可快速应对各类公共事件的数据分析需求为决策提供科学依据。