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

如何使用Pandas从DataFrame生成基于log(this year/previous year)的增长率向量?

用Pandas生成对数增长率向量

1. 读入并整理数据

首先把CSV文件导入Pandas DataFrame,一定要按年份列排序——这步是关键,顺序错了计算出的增长率完全无效:

import pandas as pd
import numpy as np

# 替换成你的CSV文件路径
df = pd.read_csv('your_data.csv')
# 按年份升序排序,重置索引避免乱序问题
df = df.sort_values('year').reset_index(drop=True)

2. 计算对数增长率

按照你定义的log(本年数值/上年数值)规则,用shift()方法获取上一年的数据,再结合np.log()完成计算:

# 给原DataFrame新增增长率列
df['log_growth_rate'] = np.log(df['target_column'] / df['target_column'].shift(1))

# 如果只需要单独的增长率向量,直接生成并删除空值(第一年没有上年数据,结果为NaN)
growth_vector = np.log(df['target_column'] / df['target_column'].shift(1)).dropna()
  • shift(1):将数值列整体向下偏移一行,让每一行都能匹配到上一年的对应数值
  • dropna():剔除第一行的空值,因为第一年没有前置数据,无法计算增长率

实际示例

假设你的CSV数据如下:

yearsales
201980
202096
2021120

运行代码后得到的增长率向量为:

0    0.182322
1    0.223144
Name: log_growth_rate, dtype: float64

对应log(96/80)和log(120/96)的计算结果

注意事项

  • 确保目标数值列没有0或负数,否则np.log()会抛出错误,需先清理异常值
  • 如果你的年份列、数值列不是示例中的命名,记得替换成自己文件里的实际列名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:55:40