gpt4 book ai didi

python - 如何处理负值的 pct_change

转载 作者:行者123 更新时间:2023-12-01 23:54:33 25 4
gpt4 key购买 nike

我正在计算面板数据集的百分比变化,它既有正值也有负值。如果 n 和 n+1 date 的值都是负数并且 n > n+1 的值,例如,n=-2,n+1=-4。计算的百分比变化是 ((n+1)-n)/n=((-4)-(-2))/-2=1。如您所见,变化应该是下降趋势,预计是负面的,但结果恰恰相反。我一般在其他软件中把分母设置为绝对值((n+1)-n)/abs(n)来保证趋势的方向。只是想知道我是否可以在 Python pandas pct_change 中将分母设置为绝对值。非常感谢。我已经根据Leo的回答解决了这个问题。

如果有人想玩的话,这里有一个数据示例。

import pandas as pd
df= {'id':[1,1,2,2,3,3],'values':[-2,-4,-2,2,1,5]}
df=pd.DataFrame(data=df)
df['pecdiff']=(df.groupby('id')['values'].apply(lambda x:x.diff()/x.abs().shift()
)).fillna(method=bfill)

最佳答案

如果我理解正确,expected change 行应该可以解决您的问题。为了进行比较,我将 pandas 的方法和您需要的并排放置。

以下代码:

import pandas as pd

df = pd.DataFrame([-2,-4,-2,2,1], columns = ['Values'])
df['pct_change'] = df['Values'].pct_change()

# This should help you out:
df['expected_change'] = df['Values'].diff() / df['Values'].abs().shift()
df

给出这个输出。请注意,第 1 行到第 3 行的符号不同

    Values  pct_change  expected_change
0 -2 NaN NaN
1 -4 1.0 -1.0
2 -2 -0.5 0.5
3 2 -2.0 2.0
4 1 -0.5 -0.5

关于python - 如何处理负值的 pct_change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62997723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com