pandas数据帧以每月频率进行每日回归

2024-05-08 02:30:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些股票的日收益数据,看起来像:

           Stock A  Stock B  Stock C  Market
date
1987-02-02  0.01    0.02      0.02     0.01
1987-02-03  0.02    0.03      0.02     0.02
1987-02-04  0.03    0.01      0.01     0.03
1987-02-05  0.04    0.03      0.05     0.04

我想计算市场上A、B、C股票的30天回归,但只在每个月底,即1987-02-28、1987-03-31。。。然后将回归结果保存在两个矩阵中(一个用于常数项,另一个用于系数):

^{pr2}$

到目前为止,我所做的是为“月末”创建一个指示器,然后在日期的所有行和列上循环:

^{3}$

考虑到50年来我有很多股票(7000+以上),这种方式非常缓慢。我想知道,是否有人曾经处理过类似的问题,并且有更快的实现方法?任何关于如何提高速度或效率的建议都将不胜感激。在


Tags: 数据方法date市场stock方式常数矩阵
1条回答
网友
1楼 · 发布于 2024-05-08 02:30:26

你可以这样开始

import pandas as pd
import numpy as np
from datetime import datetime
from pandas.tseries.offsets import MonthEnd

#sample Data
df = pd.DataFrame(index=pd.DatetimeIndex(freq='D',start=datetime(1990,1,1),end=datetime(1995,12,25)),data=np.random.randint(0,100,(2185,3)),columns=['Stock A','Stock B','Stock C'])

#Create a column that has the end of the month for each date
df['end'] = df.index + MonthEnd(1)

#Groupby the end of the month and apply your regression function
for group,data in df.groupby('end'):
    for row in data.columns #Sudo code loop over columns used per regression
        regressFunction()

这应该可以避免浪费时间在行和列上循环,而只需计算已知索引的回归。另外,在parallel中计算回归可以加快计算速度。在

相关问题 更多 >