You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中从DataFrame计算几何均值及年度Change变量几何均值?

在Python中计算DataFrame的几何均值(含年度分组计算)

一、基础几何均值计算

几何均值的核心计算逻辑有两种,适配不同场景:

方式1:乘积开方法(适合小数据集)

如果数据无0或负数,可直接通过乘积开n次方计算(若为涨跌幅数据,需先加1转换为增长因子):

import pandas as pd
import numpy as np

# 示例DataFrame
df = pd.DataFrame({'Change': [0.01, 0.02, -0.005, 0.015]})

# 计算涨跌幅的几何均值
geo_mean = (df['Change'] + 1).prod() ** (1/len(df)) - 1
print(f"几何均值:{geo_mean:.4f}")

方式2:对数转换法(更稳定,适合大数据集)

利用对数将乘积运算转为求和,避免数值溢出问题:

log_vals = np.log(df['Change'] + 1)
geo_mean = np.exp(log_vals.mean()) - 1
print(f"几何均值:{geo_mean:.4f}")

二、按年度分组计算Change的年度几何均值

针对每日数据的年度分组需求,按以下步骤操作:

步骤1:处理日期列

先将日期列转为datetime类型,提取年份作为分组依据:

# 模拟每日数据集(匹配你的数据结构)
data = {
    'Date': pd.date_range(start='2020-01-01', end='2022-12-31', freq='D'),
    'Change': np.random.uniform(-0.02, 0.02, size=1096)
}
df = pd.DataFrame(data)

# 提取年份
df['Year'] = df['Date'].dt.year

步骤2:分组计算年度几何均值

通过groupby结合自定义函数实现分组计算:

# 定义年度几何均值计算函数
def annual_geo_mean(x):
    return np.exp(np.log(x + 1).mean()) - 1

# 按年份分组计算
annual_geo_results = df.groupby('Year')['Change'].apply(annual_geo_mean).reset_index()
annual_geo_results.columns = ['Year', 'Annual_Geometric_Mean']

print(annual_geo_results)

关键注意事项

  • 若Change列存在导致1+Change为0或负数的极端值,需先清洗数据(如剔除或按业务逻辑修正),否则对数计算会报错。
  • 如果原始日期列是字符串格式,需先用pd.to_datetime(df['Date'])转换为datetime类型后再提取年份。

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:55:16