计算年度标准差,给出大熊猫的月回报

时间:2017-08-16 23:29:40

标签: python pandas dataframe standard-deviation

我有计算月度回报的功能:

def monthlyreturns(df):
    first = df.resample('M').first().to_period('M')
    last = df.resample('M').last().to_period('M')
    return ((last-first)/first) * 100

以及由月度回报(股票)产生的df:

           FOX     FOXA     MMM
Date
2012-01    5.4     3.2      -.08
2012-02    .07     1.2      -.62
...
2017-08    -.2     -4.2     2.3

我的问题是 - 如何计算ea年的标准偏差?我的预期输出是将df保持为相同的格式(列中有股票,日期作为索引),但计算年度标准差,给出月回报(因此ea股票应该有大约7个值)

到目前为止,我已经尝试过:

sd = pd.DataFrame()
x = -13
y = -1
for date in reversed(periods):                     #where periods is ea year
    sd[date] = np.std(monthly_returns.iloc[x:y])      
x -= 12
y -= 12
if x < -72:
    break 

这样做 - 但日期和列是交换的,并且想知道是否有更干净的代码来执行此操作

1 个答案:

答案 0 :(得分:1)

monthly_returns.groupby(monthly_returns.index.year).std()

对于你的例子:

#           FOX      FOXA       MMM
#2012  3.768879  1.414214  0.381838
#2017       NaN       NaN       NaN