楼主: chenguoyiran
48 0

[其他] 《投资-225》量化交易 - 核心python库 - pandas:用到的主要函数 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-8-30
最后登录
2018-8-30

楼主
chenguoyiran 发表于 2025-11-14 08:19:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

在量化交易中,pandas 是最核心的数据处理库之一,主要用于管理时间序列数据(如股票价格、成交量、财务信息等)。以下是 pandas 在量化交易中最常用的核心函数及其应用场景,结合实际策略需求进行分类说明:

一、基础数据操作

函数用途示例
pd.read_csv()读取行情或因子数据
pd.read_pickle()
/
df = pd.read_csv('stock_data.csv')
df.to_csv()
df.to_pickle()
保存处理后的数据
/
df.to_pickle('factor.pkl')
df.head(n)
df.tail(n)
查看前/后 n 行数据,快速检查数据质量
/
df.info()
df.describe()
pd.to_datetime()
查看数据结构与统计摘要,检查缺失值、异常值

二、时间序列处理(关键!)

量化交易大量依赖于时间序列操作。

函数用途示例
pd.to_datetime()
将字符串转为日期类型
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
设置时间为索引,时间对齐和切片必备
df.resample('D').last()
resample('5T').ohlc()
重采样:日线化
df.shift(n)
df['close'].shift(1)
转5分钟K线
df.tz_localize()
tz_convert()
数据平移 n 期,计算昨日收盘价:
df.pct_change()
/
df['return'] = df['close'].pct_change()
df.diff(n)
df['price_diff'] = df['close'].diff(1)
处理时区问题,防止跨市场时间错乱

三、行情计算与技术指标构建

这些是策略开发的基础。

函数用途示例
df.rolling(window).mean()
计算收益率
df['ma20'] = df['close'].rolling(20).mean()
df.rolling(window).std()
差分 n 期
volatility = df['return'].rolling(20).std()
df.expanding().max()
移动平均线(MA)
df.cumsum()
cumprod()
滚动标准差(波动率)
累计收益 = (1 + 日收益).cumprod()
df[df['close'] > df['ma20']]
累计最大值,用于回撤计算
np.where(condition, val1, val2)
/
df.query("volume > 1e6")
groupby('symbol')
data.groupby('symbol')['return'].mean()
累计和/积
? 常见组合:# 20日布林带window = 20
df['ma20'] = df['close'].rolling(window).mean()
df['std20'] = df['close'].rolling(window).std()
df['upper'] = df['ma20'] + 2 * df['std20']
df['lower'] = df['ma20'] - 2 * df['std20']

四、数据筛选与条件判断

用于生成买卖信号。

函数用途示例
groupby(pd.Grouper(freq='M'))
条件筛选,找出价格上穿均线的行
.agg()
向量化 if-elseimport numpy as np
df['signal'] = np.where(df['close'] > df['ma20'], 1, 0)
|
pd.concat([df1, df2], axis=1)
| 使用表达式查询,更清晰的过滤语法 |

五、分组与聚合操作(多标的分析)

适用于选股、行业轮动等场景。

函数用途示例
df1.merge(df2, on='date', how='left')
按股票代码分组
df.join(other_df, how='left')
/
.loc[]
.iloc[]
df.loc['2023-01-01':'2023-12-31']
按时间频率分组,月度收益统计
/
eval()
query()
df.eval('momentum = close / close.shift(10) - 1')
聚合多种统计量
df.groupby('symbol').agg({
'return': ['mean', 'std'],
'volume': 'sum'
})

六、合并与连接数据

整合多个数据源(如价格+财务+因子)。

函数用途示例
fillna()
上下或左右拼接,合并不同资产的时间序列
dropna()
/
read_csv
to_pickle
set_index
类似 SQL 的 join,添加宏观因子到行情数据
/
to_datetime
resample
shift
索引对齐合并,推荐用于时间序列

七、实用技巧(提升效率)

技巧说明使用
rolling
安全访问数据
pct_change
/
diff
cumsum
cumprod
避免 for 循环,使用向量化运算,性能提升数十倍
/
rolling().mean/std/min/max
expanding()
np.where
提高可读性
/
query
loc
groupby
处理 NaN,防止策略因缺失值出错

实战示例:简单双均线策略信号生成

import pandas as pd
import numpy as np

# 假设 df 是带有 'close' 列的 DataFrame,索引为 datetime
df['ma5'] = df['close'].rolling(5).mean()
df['ma20'] = df['close'].rolling(20).mean()

# 金叉:短均线上穿长均线
df['signal'] = np.where(
    (df['ma5'] > df['ma20']) & (df['ma5'].shift(1) <= df['ma20'].shift(1)),
    1,
)

# 收益率与累计收益
df['return'] = df['close'].pct_change()
df['strategy_return'] = df['signal'].shift(1) * df['return'] # 信号次日执行
df['cumulative'] = (1 + df['strategy_return']).cumprod()

总结:量化中最常用的 Pandas 函数清单

类别核心函数
数据读写pd.read_csv(), pd.to_csv()
时间序列处理.to_datetime(), .set_index(), .resample(), .shift()
行情计算与技术指标构建.pct_change(), .diff(), .rolling().mean(), .rolling().std(), .cummax(), .cumsum()
数据筛选与条件判断.query(), np.where()
分组与聚合操作.groupby(), .agg()
合并与连接数据.concat(), .merge(), .join()
实用技巧.loc[], .iloc[], 避免 for 循环,向量化运算,.fillna(), .dropna()
read_csv

to_pickle

set_index
时间管理
to_datetime

resample

shift

rolling
收益分析
pct_change

diff

cumsum

cumprod
指标设计
rolling().mean/std/min/max

expanding()
条件评估
np.where

query

loc
分类聚合
groupby

agg

transform
数据整合
merge

concat

join
???? 建议掌握水平: 作为量化开发人员,你应能够熟练编写基于 pandas 的完整策略流程,包括数据加载 → 清洗 → 特征构建 → 信号生成 → 收益分析 → 回测评估。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python pandas panda 量化交易 Das
相关内容:Python量化投资

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 17:36