gpt4 book ai didi

python - Pandas Groupby 几何平均数?

转载 作者:行者123 更新时间:2023-12-05 06:08:05 29 4
gpt4 key购买 nike

我正在尝试计算我的投资组合的股票返回,这需要按年对百分比进行“几何平均”。

为简单起见,我有一个如下所示的数据框:

返回日期

2013-06-01 1%
2013-07-01 5%
2013-08-01 -4%
2014-01-01 12%
2014-02-01 -9%

我希望输出显示:

日期地理返回2013 1.8%2015 1.9%

推导出:(1+.01)(1+.05)(1+-.04) = 1.8%

我可以按年使用 groupby 函数,但它只对我求和,我无法使用几何平均值。有人可以帮忙吗?

谢谢!

最佳答案

请注意,您要求的是累积乘积,这与几何平均值的通常定义不同。

df["returns"] = 1 + .01*df.Returns.str.split("%").str[0].astype(int)
df["geom_ave"] = df.groupby(df.Date.dt.year).returns.transform("prod")

输出:

        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)

关于python - Pandas Groupby 几何平均数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65175580/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com