探索性数据分析(Exploratory Data Analysis,简称 EDA) 是指在进行正式的统计建模或机器学习之前,对数据集进行初步探索、可视化和总结 的过程,其核心目标是理解数据的特征、发现规律、识别异常值和缺失值,为后续的数据分析和建模提供方向。
一、探索性数据分析的核心目的
- 了解数据基本结构
明确数据集的行数、列数、字段类型(数值型、分类型、时间型)、数据格式,判断数据是否符合分析需求。 - 识别数据质量问题
检测缺失值、重复值、异常值(离群点),并确定处理方案(如填充、删除、修正)。 - 发现数据分布规律
分析数值型变量的分布(如正态分布、偏态分布)、分类型变量的类别占比,判断数据是否满足建模假设。 - 挖掘变量间的关系
探索不同变量之间的相关性、因果性或潜在关联,为特征工程和建模变量选择提供依据。 - 提出分析假设
基于数据探索结果,提出可验证的分析假设,指导后续的深入分析。
二、探索性数据分析的主要步骤
| 步骤 | 核心内容 | 常用方法/工具 |
|---|---|---|
| 1. 数据加载与概览 | 导入数据集,查看数据基本信息 | Python:pandas 的 shape、info()、head() 描述性统计:describe() |
| 2. 数据清洗 | 处理缺失值、重复值、异常值 | 缺失值:isnull().sum()、填充/删除 异常值:箱线图(Boxplot)、Z-score、IQR 方法 |
| 3. 单变量分析 | 分析单个变量的特征与分布 | 数值型:直方图(Histogram)、核密度图(KDE)、均值/中位数/方差 分类型:条形图(Bar Plot)、饼图(Pie Chart)、频数统计 |
| 4. 双变量/多变量分析 | 分析变量间的关系 | 数值型 vs 数值型:散点图(Scatter Plot)、相关性热力图(Heatmap) 数值型 vs 分类型:箱线图、小提琴图 多变量:成对关系图(Pair Plot)、平行坐标图 |
| 5. 可视化总结 | 用图表直观呈现数据规律 | Python:matplotlib、seaborn、plotly 工具:Tableau、Power BI |
三、探索性数据分析与传统统计分析的区别
| 维度 | 探索性数据分析(EDA) | 传统统计分析 |
|---|---|---|
| 核心思想 | 以数据为中心,发现驱动 | 以假设为中心,验证驱动 |
| 分析方法 | 强调可视化、灵活探索,不拘泥于固定模型 | 强调假设检验、参数估计,依赖统计模型假设 |
| 结果用途 | 为后续建模提供方向和依据 | 验证预设假设,得出统计结论 |
| 适用阶段 | 数据分析初期 | 数据分析后期 |
四、金融量化场景中的 EDA 应用示例
在量化交易中,EDA 是策略开发的关键前置步骤,例如:
- 分析股票的日收益率分布,判断是否符合正态分布,识别极端波动的交易日;
- 探索不同行业股票的相关性热力图,筛选低相关标的用于构建投资组合;
- 查看成交量与价格涨跌幅的散点图,验证量价关系的假设;
- 检测交易数据中的异常值(如错误的成交价、停牌期间的无效数据)。
五、常用工具
- Python :
pandas(数据处理)、seaborn/matplotlib(可视化)、scipy(统计检验) - R :
ggplot2(可视化)、dplyr(数据操作) - 可视化工具:Tableau、Power BI、Excel(数据透视表、图表功能)
探索性数据分析之后,需要做什么?
在完成探索性数据分析(EDA)后,核心工作是将EDA的结论转化为可执行的分析或建模动作,具体流程会根据你的目标(如量化策略开发、金融数据分析、机器学习建模等)有所侧重,整体步骤如下:
一、 特征工程(核心环节)
EDA会明确数据的质量问题、变量分布和变量间关系,特征工程就是基于这些结论对数据进行加工,使其适配后续分析或模型。
| 基于EDA的发现 | 特征工程操作 | 量化场景示例 |
|---|---|---|
| 存在缺失值、异常值 | 缺失值填充(均值/中位数/业务逻辑值)、异常值修正/剔除 | 股票收益率数据中的极端值,用IQR范围截断;停牌日成交量填充为0 |
| 数值变量分布偏态 | 变量变换(对数、标准化、归一化) | 成交量数据呈长尾分布,做对数变换使其更接近正态分布 |
| 分类变量存在类别不平衡 | 类别合并、独热编码、目标编码 | 将行业分类合并为大板块;对股票市场类型(沪/深/北)做独热编码 |
| 变量间存在强相关性 | 特征筛选(剔除冗余变量)、特征组合(构造新变量) | 剔除高度相关的两个技术指标;用收盘价和开盘价构造涨跌幅新特征 |
| 时间序列特征明显 | 构造时间相关特征(移动平均、滚动波动率、滞后特征) | 基于每日收盘价,计算5日/10日/20日均线;构造前1日收益率的滞后特征 |
二、 确定分析/建模目标与方案
EDA会验证或修正你最初的假设,此时需要明确下一步的核心方向:
-
如果是描述性分析目标(如金融市场现状分析、基金持仓结构分析)
- 基于EDA的可视化和统计结论,撰写分析报告,聚焦关键发现(如"消费行业股票波动率显著低于周期行业""某基金重仓股与指数相关性达0.8")。
- 补充业务解读,将数据结论和金融逻辑结合(如波动率差异的原因是消费行业需求刚性)。
-
如果是预测/建模目标(如量化选股模型、股价趋势预测、风险预警模型)
- 选择模型类型 :根据EDA结论确定模型,例如:
- 若变量线性关系明显 → 选择线性回归、逻辑回归;
- 若变量关系复杂、非线性 → 选择决策树、随机森林、XGBoost等树模型;
- 若是时间序列数据(如股票价格) → 选择ARIMA、LSTM等时间序列模型。
- 划分数据集 :将处理好的数据集分为训练集、验证集、测试集(量化场景中常用时间序列划分法,避免未来数据泄露)。
- 选择模型类型 :根据EDA结论确定模型,例如:
三、 模型训练与调优
- 模型训练 :用处理好的特征数据训练选定的模型,记录训练过程中的核心指标。
- 量化场景中,选股模型常用收益率、夏普比率、最大回撤 作为核心指标;分类模型(如涨跌预测)常用准确率、召回率、F1值。
- 模型调优 :基于验证集的表现优化模型,包括:
- 参数调优:用网格搜索(Grid Search)、随机搜索(Random Search)调整模型超参数;
- 特征迭代:回到特征工程环节,根据模型反馈新增或剔除特征(如模型对某技术指标的权重极低,可考虑剔除)。
四、 模型验证与业务落地
- 模型测试 :用测试集 验证模型的泛化能力,重点关注模型在新数据上的表现(量化场景中需做样本外测试 ,避免过拟合)。
- 例如:用2018-2022年数据训练模型,用2023-2024年数据测试,验证选股策略的有效性。
- 业务落地/策略回测
- 量化交易场景 :将模型转化为可执行的交易策略,进行历史回测,评估策略的收益风险比;之后可进行小资金实盘验证。
- 一般数据分析场景:将模型结论嵌入业务流程(如风险评估系统、智能投顾工具),或输出最终分析报告。
五、 监控与迭代
数据和业务场景是动态变化的(如金融市场政策调整、市场风格切换),需要建立长效监控机制:
- 定期监控模型指标,若指标下降(如选股策略夏普比率降低),则重新进行EDA和特征工程,迭代模型。
- 补充新数据,更新训练集,确保模型适配最新的市场环境。