pandas.pct_change()计算结果与手动计算不一致的问题咨询
pandas.pct_change()计算结果与手动计算不一致的问题咨询
嗨,我来帮你梳理清楚这个差异的核心原因~
问题本质在于你手动计算的百分比变化和pandas的pct_change()采用了两种不同的计算基准(分母),这直接导致了结果的细微偏差。
先明确两个公式的差异:
pandas
pct_change()的标准公式:
该方法默认计算的是相对于前一行值的变化率,核心公式为:(current_value / previous_value) - 1转成百分比形式(乘以100)后就是:
((current_value / previous_value) - 1) * 100你使用的手动计算公式:
你的公式是:100 - (previous_value / current_value * 100)变形后可以清晰看到,它的计算基准是当前行的值:
100 * (1 - previous_value/current_value) = 100 * (current_value - previous_value)/current_value
用你的数据举例验证:
拿第四行到第五行的数据(prev=0.733,current=0.7409)对比:
- pandas计算:
((0.7409 / 0.733) -1)*100 ≈ (1.01077763 -1)*100 = 1.077763,和表格里的pandas结果完全一致。 - 你的手动计算:
100 - (0.733/0.7409 *100) ≈100 - 98.933729 = 1.06627,这也和你手动得到的结果完全匹配。
如何让手动计算和pandas结果一致?
如果你想手动复现pct_change()的结果,需要把计算基准换成前一行的值,使用以下公式:
(current_value - previous_value) / previous_value * 100
或者等价的简化形式:
(current_value / previous_value - 1) * 100
比如用第二行数据(prev=0.7419,current=0.7406)验证:(0.7406 - 0.7419)/0.7419 *100 ≈ (-0.0013)/0.7419 *100 ≈ -0.175226,和pandas的结果完全对齐。
这样调整后,你就能得到和pct_change()完全匹配的手动计算结果啦~
备注:内容来源于stack exchange,提问作者iPinky7
相关产品推荐
相关产品推荐

