Python Pandas Почему существует расхождение в процентном изменении при расчете вручную? - PullRequest
0 голосов
/ 17 октября 2019

Почему python pandas вычисляет другое значение при наборе формул вручную. Например:

# Create DataFrame
df = pd.DataFrame({'value':[256.143, 256.571]})

# Percent Change via method (correct value of 0.001671)
df['percent change'] = df['value'].pct_change()

# Percent Change manually (incorrect value of 0.001668)
df['percent change'] = df['value'].diff() / df['value']

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Это потому, что разница сравнивается с предыдущей строкой, а вы делите ее на второй ряд. Мы можем использовать shift, чтобы проверить это:

df = pd.DataFrame({'value':[256.143, 256.571]})
df['percent change'] = df['value'].pct_change()
df['percent change2'] = df['value'].diff() / df['value'].shift()

Вывод

     value  percent change  percent change2
0  256.143             NaN              NaN
1  256.571        0.001671         0.001671
0 голосов
/ 17 октября 2019

Когда вы запускаете df['value'].diff(), вы получаете фрейм данных с двумя значениями: NaN для первой записи и 0,428 для второй записи. Затем вы делите его (поэлементно) на исходный кадр данных, поэтому вы делите NaN на первое значение (256.143) и 0.428 на второе значение (256.571). Короче говоря, вы получаете разные результаты, потому что вы рассчитываете разные вещи.

С df1['percent change'] = df1['value'].diff() / df1['value'][0] вы получите ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...