[英]Pandas Groupby Geometric Average?
我正在嘗試計算我的投資組合的股票收益,這需要按年份“幾何平均”百分比。
為簡單起見,我有一個看起來像這樣的 dataframe:
日期返回
2013-06-01 1%
2013-07-01 5%
2013-08-01 -4%
2014-01-01 12%
2014-02-01 -9%
我希望 output 顯示:
日期 地域回報 2013 1.8% 2015 1.9%
由以下公式得出: (1+.01)(1+.05)(1+-.04) = 1.8%
我可以按年使用 groupby function,但它只對我求和,我無法獲得幾何平均值。 有人可以幫忙嗎?
謝謝!
請注意,您已請求累積乘積,這與幾何平均值的通常定義不同。
df["returns"] = 1 + .01*df.Returns.str.split("%").str[0].astype(int)
df["geom_ave"] = df.groupby(df.Date.dt.year).returns.transform("prod")
output:
Date Returns returns geom_ave
0 2013-06-01 1% 1.01 1.01808
1 2013-07-01 5% 1.05 1.01808
2 2013-08-01 -4% 0.96 1.01808
3 2014-01-01 12% 1.12 1.01920
4 2014-02-01 -9% 0.91 1.01920
如果您想要幾何平均值,則可以嘗試:
from scipy import stats
series = df.groupby(df.Date.dt.year).returns.apply(stats.gmean)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.