簡體   English   中英

Pandas Groupby 幾何平均值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM