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

如何使用Pandas按指定公式计算DataFrame中的每日价格变动率?

用Pandas计算价格变动率的几种方法

嘿,这个需求其实Pandas已经给我们准备好非常简洁的工具了,当然也可以手动实现来理解原理,我给你两种方案:

1. 直接用内置的pct_change()方法(最推荐)

Pandas的Series.pct_change()方法就是专门用来计算序列中当前值与前一个值的百分比变化的,完全匹配你给出的公式:(present day price - previous day price)/previous day price。

先把你的示例数据构造出来:

import pandas as pd

data = {
    'Day': ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    'Price': [20, 42, 89, 65, 78, 67]
}
df = pd.DataFrame(data)

然后一行代码就能搞定变动率计算:

df['Change_Rate'] = df['Price'].pct_change()

2. 手动用diff()和shift()实现(理解原理)

如果你想拆解计算过程、搞清楚底层逻辑,也很简单:

  • df['Price'].diff():计算当日价格与前一日价格的差值(对应公式里的present day price - previous day price)
  • df['Price'].shift(1):把价格序列向下偏移一位,这样就能获取到每一行对应的前一日价格

组合起来就是手动实现的公式:

df['Change_Rate'] = df['Price'].diff() / df['Price'].shift(1)

最终结果展示

运行上面的代码后,你的DataFrame会变成这样:

Day  Price  Change_Rate
0  Mon     20          NaN
1  Tue     42     1.100000
2  Wed     89     1.119048
3  Thu     65    -0.269663
4  Fri     78     0.200000
5  Sat     67    -0.141026

注意第一行的Change_Rate是NaN,因为周一没有前一天的价格数据,这是合理的。如果需要,你可以用fillna(0)或者其他方式填充这个值,但通常保留NaN更符合数据逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:58:13