如何使用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
相关产品推荐
相关产品推荐

