如何将Yahoo Finance周度OHLC数据重采样为双周数据?
双周OHLC数据重采样实现方案
针对从Yahoo Finance获取的周度OHLC数据,我们可以用Python的pandas库手动实现双周重采样,具体操作如下:
1. 数据准备
先将原始数据导入为pandas.DataFrame,并把Date列设置为datetime类型的索引:
import pandas as pd # 模拟加载原始数据(实际场景可通过pd.read_csv等方式读取本地/网络数据) data = { 'Date': ['1999-12-27', '2000-01-03', '2000-01-10', '2000-01-17', '2000-01-24', '2000-01-31', '2000-02-07', '2000-02-14', '2000-02-21', '2000-02-28', '2000-03-06', '2000-03-13', '2000-03-20', '2000-03-27', '2000-04-03', '2000-04-10', '2000-04-17', '2000-04-24', '2000-05-01'], 'Open': [0.901228, 0.936384, 0.910714, 0.901786, 0.968192, 0.901786, 0.964286, 0.976004, 0.983259, 0.983259, 1.125000, 1.090402, 1.102679, 1.228795, 1.209821, 1.175781, 0.977679, 1.026786, 1.114955], 'High': [0.918527, 1.004464, 0.912946, 1.084821, 1.019531, 0.982143, 1.045759, 1.070871, 1.063616, 1.179129, 1.152902, 1.129464, 1.342634, 1.292411, 1.245536, 1.185268, 1.162946, 1.149554, 1.127232], 'Low': [0.888393, 0.848214, 0.772321, 0.896763, 0.898438, 0.843750, 0.945871, 0.969866, 0.952567, 0.967634, 1.055804, 1.017857, 1.085938, 1.119978, 1.042411, 0.936384, 0.973772, 1.024554, 0.987165], 'Close': [0.917969, 0.888393, 0.896763, 0.993862, 0.907366, 0.964286, 0.970982, 0.993304, 0.985491, 1.142857, 1.122768, 1.116071, 1.238281, 1.212612, 1.176339, 0.998884, 1.061384, 1.107701, 1.010045], 'Adj Close': [0.782493, 0.757282, 0.764417, 0.847186, 0.773455, 0.821975, 0.827682, 0.846710, 0.840050, 0.974192, 0.957068, 0.951359, 1.055533, 1.033652, 1.002732, 0.851467, 0.904743, 0.944224, 0.860980], 'Volume': [1.638112e+08, 3.055203e+09, 3.345742e+09, 3.383878e+09, 2.068674e+09, 2.384424e+09, 1.664309e+09, 1.754469e+09, 1.520971e+09, 2.408918e+09, 1.280126e+09, 1.859290e+09, 2.306293e+09, 1.541019e+09, 1.948621e+09, 2.892669e+09, 2.042757e+09, 1.778358e+09, 1.636018e+09] } df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace=True)
2. 执行双周重采样
使用resample方法指定'2W'(每两周)的频率,并为每个字段定义符合金融数据逻辑的聚合规则:
# 定义双周OHLC的聚合规则 biweekly_ohlc = df.resample('2W').agg({ 'Open': 'first', # 取双周内第一个交易日的开盘价 'High': 'max', # 取双周内的最高价 'Low': 'min', # 取双周内的最低价 'Close': 'last', # 取双周内最后一个交易日的收盘价 'Adj Close': 'last', # 取双周内最后一个交易日的调整收盘价 'Volume': 'sum' # 累加双周内的总成交量 }) # 打印重采样结果 print(biweekly_ohlc)
关键说明
'2W'是pandas支持的时间频率规则,默认以周日为周期结束日;若需要调整索引标签的显示方式,可添加label='left'参数(以双周的第一天作为索引),或用loffset调整时间偏移。- 聚合规则完全遵循金融市场对周期OHLC数据的标准定义,确保重采样后的数据可直接用于技术分析或回测。
内容的提问来源于stack exchange,提问作者Ashish
相关产品推荐
相关产品推荐

