Pandas核心语法[4]
“在 Pandas 中,逻辑运算和比较运算是数据筛选的基础工具。通过与(&)、或(|)等操作符,可以轻松实现复杂条件筛选,比如选出市盈率最大且市净率最小的股票。”
1. 逻辑运算和比较¶
在 Pandas 中,DataFrame 的逻辑运算和比较是数据处理中常用的操作,主要用于筛选和过滤数据。以下是详细说明和实现方法:
1.1. DataFrame 的逻辑运算¶
逻辑运算包括与(&)、或(|)、非(~)和异或(^),通常与比较运算结合使用。示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
输出结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1.2. DataFrame 的比较运算¶
比较运算包括 >、<、==、!=、>=、<=,返回布尔值组成的 DataFrame 或 Series。
示例代码:
1 2 3 4 5 |
|
1 2 3 |
|
输出结果:
1 2 3 4 5 6 7 8 |
|
Dataframe中包含了我们提取的特征。要选取PE最大同时是PB最小的前30列,怎么做?
假设 DataFrame 中包含以下特征: - PE:市盈率 - PB:市净率
1 2 3 4 5 6 7 8 |
|
选取 PE 最大且 PB 最小的前 30 列, 要实现这一需求,可以按照以下步骤操作: 1. 计算 PE 的最大值和 PB 的最小值。 2. 根据条件筛选数据。 3. 选取前 30 列。
1 2 3 4 5 6 |
|
输出结果:
1 2 |
|
2. 分组运算(groupby)¶
在 Pandas 中,groupby 是用于对 DataFrame 进行分组运算的核心方法。它遵循“拆分-应用-合并”的逻辑,即先将数据按指定条件分组,然后对每个分组执行操作,最后将结果合并。以下是详细说明和具体实现方法:
2.1. groupby 的基本语法¶
groupby 的基本语法为:
1 |
|
- by:指定分组的列名或列名列表。
- 选择列:可选,指定需要操作的列。
- 聚合函数:如 sum()、mean()、max() 等。
示例:
1 2 3 4 5 6 7 8 9 |
|
输出结果:
1 2 3 4 |
|
2.2. groupby 的应用¶
假设你的因子分析数据表包含以下列: - 行业标签:表示公司所属的行业。 - PE值:表示公司的市盈率。
示例数据:
1 2 3 4 |
|
选出每个行业 PE 最强的 5 支, “PE 最强”可以理解为 PE 值最高的公司。以下是实现步骤: 1. 按行业分组。 2. 对每个分组按 PE 值降序排序。 3. 选取每个分组的前 5 行。
1 2 3 4 5 6 |
|
输出结果:
1 2 3 4 5 6 7 |
|
3. 多重索引和高级索引¶
在 Pandas 中,DataFrame 的多重索引(MultiIndex)和高级索引是处理复杂数据结构的重要工具。它们允许你在一个轴上创建多个层级的索引,从而更灵活地组织和访问数据。以下是详细说明:
3.1. 多重索引(MultiIndex)¶
多重索引是指在一个轴上(行或列)拥有多个层级的索引。它适用于处理具有层次化结构的数据,例如按地区和时间分类的数据。
3.1.1. 创建多重索引¶
Pandas 提供了多种方法创建多重索引,以下是常见的方式:
[从数组创建]
1 2 3 4 |
|
1 2 |
|
[从元组创建]
1 2 3 4 |
|
[从笛卡尔积创建]
1 2 3 4 5 |
|
3.1.2. 访问多重索引数据¶
使用 loc 访问:
1 |
|
使用 xs 交叉选择:
1 |
|
使用切片器:
1 |
|
3.1.3 操作多重索引¶
交换层级:
1 2 |
|
重排序层级:
1 2 |
|
重置索引:
1 2 |
|
3.2. 高级索引¶
高级索引是指在多重索引的基础上,使用更灵活的方法选择和操作数据。
3.2.1. 使用 reindex 重新索引¶
reindex 可以根据指定的索引重新排列数据,并填充缺失值:
1 2 3 |
|
3.2.2. 使用 align 对齐索引¶
align 可以将两个具有不同索引的 DataFrame 对齐:
1 2 3 4 5 |
|
Notes
- 多重索引:通过 MultiIndex 创建多层级索引,支持灵活的数据组织和访问。
- 高级索引:通过 reindex、align、groupby 等方法实现复杂的数据操作。
通过熟练掌握多重索引和高级索引,可以更高效地处理和分析复杂数据。
4. 窗口函数¶
Pandas 中的窗口函数(Window Functions)是一种强大的工具,用于对数据进行滑动窗口计算。它们通常用于时间序列数据或有序数据,支持滚动计算、扩展计算和指数加权移动等操作。以下是 Pandas 中窗口函数的详细说明。
4.1. 窗口函数的基本概念¶
窗口函数是一种特殊的函数,它在一个固定大小的窗口内对数据进行计算,并返回与原始数据相同数量的结果。常见的窗口函数包括:
- 滚动窗口(Rolling Window):在一个固定大小的窗口内对数据进行计算。
- 扩展窗口(Expanding Window):从第一个数据点开始,逐步增加窗口大小,直到包含所有数据点。
- 指数加权移动窗口(Exponentially Weighted Moving Window):对较近的数据赋予更高的权重,较远的数据赋予较低的权重。
4.2. 滚动窗口(Rolling Window)¶
滚动窗口用于在固定大小的窗口内对数据进行计算。例如,计算过去 5 天的平均值或最大值。
1 2 3 4 5 |
|
1 2 3 |
|
参数说明: - window:窗口大小。 - min_periods:窗口中需要的最小数据点数量,否则结果为 NaN。 - center:是否以当前行为中心划分窗口。
4.3. 扩展窗口(Expanding Window)¶
扩展窗口从第一个数据点开始,逐步增加窗口大小,直到包含所有数据点。它通常用于计算累计和、累计平均等。
1 2 3 |
|
4.4. 指数加权移动窗口(Exponentially Weighted Moving Window)¶
指数加权移动窗口对较近的数据赋予更高的权重,较远的数据赋予较低的权重。它在金融数据分析中非常有用。
1 2 3 |
|
参数说明: - span:指定衰减系数。 - alpha:直接指定衰减因子。
Notes
- 窗口大小的选择:根据具体应用场景和数据特点选择窗口大小,过小可能导致结果波动较大,过大可能掩盖重要细节。
- 边界值处理:使用 min_periods 参数控制最小窗口大小,避免 NaN 值。
- 数据缺失处理:使用 fillna() 填充缺失值或 dropna() 删除缺失值。
5. 数学运算和统计¶
在 Pandas 中,DataFrame 提供了丰富的数学运算和统计功能,能够方便地对数据进行计算和分析。
5.1. 数学运算¶
Pandas 支持对 DataFrame 进行基本的数学运算,包括加法、减法、乘法、除法等。这些运算可以逐元素进行,也可以对整列或整行进行操作。 示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
输出结果:
1 2 3 4 |
|
其他数学运算: - 幂运算:df['A'] ** 2 - 平方根:df['A'].pow(0.5) - 对数运算:df['A'].apply(np.log)(需导入 numpy 库)
5.2. 统计计算¶
Pandas 提供了多种统计方法,用于对 DataFrame 中的数据进行分析。
常用统计方法: - 求和:df.sum() - 平均值:df.mean() - 最大值:df.max() - 最小值:df.min() - 标准差:df.std() - 方差:df.var() - 中位数:df.median() - 众数:df.mode() - 分位数:df.quantile(q=0.25)(计算 25% 分位数)
示例代码:
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 |
|
输出结果:
1 2 3 4 5 6 7 8 9 |
|
5.3. 高级统计功能¶
Pandas 还支持更复杂的统计操作,例如: - 累计统计:df.cumsum()(累计和)、df.cummax()(累计最大值) - 相关性分析:df.corr()(计算相关系数矩阵) - 协方差分析:df.cov()(计算协方差矩阵) - 偏度和峰度:df.skew()(偏度)、df.kurtosis()(峰度)
示例代码:
1 2 3 4 5 6 7 8 9 10 |
|
5.4. 分组统计¶
Pandas 的 groupby 方法可以对数据进行分组,然后对每个分组进行统计计算。示例代码:
1 2 3 4 5 6 7 |
|
1 2 3 4 |
|
《因子投资与机器学习策略》喊你上课啦!
面向策略研究员的专业课程,涵盖因子挖掘、因子检验和基于机器学习的策略开发三大模块,构建你的个人竞争优势!
- 全网独家精讲 Alphalens 分析报告,助你精通因子检验和调优。
- 超 400 个独立因子,分类精讲底层逻辑,学完带走 350+ 因子实现。
- 课程核心价值观:Learning without thought is labor lost. Know-How & Know-Why.
- 三大实用模型,奠定未来研究框架1:聚类算法寻找配对交易标的(中性策略核心)、基于 XGBoost 的资产定价、趋势交易模型。
- 领先的教学手段:SBP(Slidev Based Presentation)、INI(In-place Notebook Interaction)和基于 Nbgrader(UCBerkley 使用中)的作业系统。

1. 示例模型思路新颖。未来一段时间,你都可以围绕这些模型增加因子、优化参数,构建出领先的量化策略系统。