scipy 如何分组 Dataframe 和计算几何?

pepwfjgg  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个df,其中有一个列有日期(data)和一个列有平均每日价格变化(DailyChange),我需要按年分组这个df,并为每年计算DailyChange列的几何平均数。
这是代码的一部分:

df = pd.read_csv("data_with_changes.csv")
df["data"] = pd.to_datetime(df["data"])

df_result = df.groupby(pd.Grouper(key="data", freq="Y"))["DailyChange"].apply(lambda x: stats.gmean(x.dropna() + 100) - 100).reset_index()

df_result.columns = ["Year", "GeometricMean"]
df_result["Year"] = df_result["Year"].dt.year
df_result.to_csv("average_daily_change.csv", index=False)

不知道问题出在哪里,是在分组还是在使用stats.gmean函数时出错。

lnxxn5zx

lnxxn5zx1#

您需要从几何平均值结果中减去100,以将其转换回百分比变化

import pandas as pd
import scipy.stats as stats

df = pd.read_csv("data_with_changes.csv")
df["data"] = pd.to_datetime(df["data"])

df_result = df.groupby(pd.Grouper(key="data", freq="Y"))["DailyChange"].apply(lambda x: stats.gmean(x.dropna()) - 100).reset_index()

df_result.columns = ["Year", "GeometricMean"]

df_result["Year"] = df_result["Year"].dt.year

df_result.to_csv("average_daily_change.csv", index=False)

相关问题